오디오 유닉스 / 리눅스 쉘 101

유닉스 / 리눅스 쉘 101

차례:

Anonim

유닉스와 리눅스 시스템의 커맨드 라인은 이미 매우 강력하지만, 쉘은 눈에 띄는 것보다 훨씬 강력한 도구입니다. 당신이 알고있는 한, 그것들을 커스터마이즈하고 마음의 내용으로 바꿀 수 있습니다.

껍질이란?

거의 모든 유닉스 및 리눅스 매뉴얼에는 운영 체제를 감싸는 표준 쉘 다이어그램이 있으며 일종의 캔디 바와 유사합니다. 쉘은 실제로 커널, 파일 시스템 및 다양한 시스템 호출과 사용자를 포함한 운영 체제 간의 인터페이스 일뿐입니다. 수년간 그래픽 사용자 인터페이스가 1980 년대에 일반화되기 전의 유일한 대화식 사용자 인터페이스였습니다. 그래픽 사용자 인터페이스는 프로그램 시작, 시스템 구성 및 파일 관리와 같은 여러 가지 동일한 기능을 수행하므로 쉘 유형으로 간주 될 수 있습니다.


이러한 겸손한 텍스트 기반 인터페이스는 놀라운 힘을 가지고 있습니다. 우선, 그들은 본격적인 프로그래밍 언어입니다. Python과 같은 더욱 강력한 스크립팅 언어가 등장하기 전에 쉘 스크립트는 C의 힘이 필요하지 않은 프로그램을 작성하는 데 이상적입니다. 시스템 작업 자동화 및 신속한 프로토 타입 제작에 여전히 유용합니다.


또한 파일 작업을보다 쉽게하고 찾을 수있는 여러 기능이 있습니다. 가장 널리 사용되는 것 중 하나는 "와일드 카드"또는 "글 로빙"입니다. 거의 모든 Unix 및 Linux 사용자는 모든 문자와 일치하는 "*"와일드 카드에 익숙합니다. 이것은 실제로 쉘의 일입니다. 다른 쉘에는 훨씬 강력한 옵션이 있습니다.


유닉스의 특징 중 하나는 프로그램 입력 및 출력을 재지 정하는 기능입니다. 쉘은이 기능을 구현합니다.


쉘은 또 다른 프로그램이므로 적절한 기술을 가진 프로그래머라면 누구나 프로그램을 만들 수 있습니다. 몇 년 동안 등장한 몇 가지 주요 껍질이있었습니다.

포탄의 역사와 정리

운영 체제 초기에는 유닉스 셸이 여러 개 있었지만 Bell Labs 이외의 주요 인식을 처음으로 얻은 것은 Stephen R. Bourne의 이름을 딴 Bourne Shell입니다. 셸의 주요 혁신은 구조화 된 프로그래밍 기능을 지원하여 셸을 실제 프로그래밍 언어로 처음 사용할 수 있다는 점입니다. 현대의 모든 유닉스와 리눅스 버전이 여전히 그것을 사용하는 것은 필수 불가결하지만, 보통 Bourne 쉘을 에뮬레이트하는 최신 쉘 중 하나입니다.


다음 주요 쉘은 일반적으로 "csh"로 약칭되는 C 쉘입니다. 이 쉘은 UC Berkeley에서 개발되어 Unix의 BSD 버전의 주요 구성 요소가되었습니다. 이름에서 알 수 있듯이 구문은 C 프로그래밍 언어와 유사하게 설계되었지만 실제로는 대화식으로 사용하도록 설계되었습니다.


여기에는 사용자가 전체 행을 다시 입력하지 않고 작업 제어를 개선하지 않고도 이전에 발행 한 모든 명령을 반복하고 다시 수행 할 수있는 기록 메커니즘이 포함되어있어 여러 작업을보다 쉽게 ​​실행할 수 있습니다. (이것은 대부분의 사람들이 여전히 텍스트 기반 터미널을 사용하던 시절이었습니다.)


다음 주요 포탄은 Korn Shell이며 Bell Labs에서도 나왔습니다. 그런데 껍질은 밴드가 아닌 데이비드 콘의 이름을 따서 명명되었습니다. Korn 쉘의 주요 혁신은 명령 행 편집을 도입하여 히스토리 기능을 더욱 확장하는 것입니다. 사용자는 vi 또는 Emacs 편집기와 유사한 명령을 사용하여 입력 한 명령을 되돌아 가서 편집 할 수 있습니다.


주요 포탄 중에서 Bourne Again Shell 또는 bash는 80 년대 후반에 소개 된 이래 가장 인기있는 쉘입니다. GNU 프로젝트의 일부로 개발 된이 쉘은 Bourne 쉘과의 호환성을 유지하면서 C 및 Korn 쉘의 혁신을 통합합니다. 대부분의 Linux 배포판에서 "표준"쉘입니다.


1990 년에 처음 출시 된 Z Shell (zsh)은 명령 줄 사용자의 꿈입니다. 다른 쉘이 가지고있는 다른 주요 기능들 대부분을 가지고있을뿐만 아니라, 많은 강력한 기능들로 미친 듯이 사용자 정의 할 수 있습니다. 가장 강력한 기능 중 하나는 재귀 globbing이며, 사용자는 현재 작업 디렉토리의 파일이 아닌 명령을 실행할 때 하위 디렉토리의 파일 이름을 일치시킬 수 있습니다. 실제로 고급 사용자는 파일을 완전히 입력하지 않고도 일치하는 완료 옵션을 사용자 정의 할 수도 있습니다. 그리고 뚱뚱한 손가락 타이 포스트의 경우 철자를 교정 할 수도 있습니다. 이 쉘은 매우 발전하여 매뉴얼 페이지가 여러 개의 긴 섹션으로 나뉘어 있습니다.

스크립팅

앞에서 언급했듯이 셸은 명령 줄 인터페이스뿐만 아니라 강력한 프로그래밍 언어입니다. 쉘 스크립팅의 장점은 규칙적인 대화식 사용뿐만 아니라 스크립트에서도 동일한 언어를 사용할 수있어 학습 곡선이 훨씬 평평해진다는 것입니다. 최신 쉘에는 흐름 제어, 함수 및 변수를 포함한 모든 일반적인 프로그래밍 언어 기능이 포함되어 있습니다. 그들 중 일부는 연관 배열과 같은 고급 데이터 구조를 가지고 있습니다.


그들의 힘에도 불구하고, 쉘에서의 프로그래밍에는 몇 가지 함정이 있습니다. 가장 큰 문제는 다른 시스템에 있지 않을 수도있는 특정 프로그램에 의존하거나 특정 유닉스 나 리눅스의 특징에 의존하는 스크립트를 작성하는 것이 너무 쉽다는 것입니다. 셸 스크립트가 한 시스템에서만 실행되는 프로그램에 가장 적합한 이유입니다. 이식성이 좋은 무언가를 만들려고하고 C 프로그램을 작성하고 싶지 않다면 가장 좋은 방법은 Perl 또는 Python과 같은 다른 스크립팅 언어로 작성하는 것입니다.

유닉스 / 리눅스 명령 줄의 핵심

유닉스 / 리눅스 커맨드 라인의 표면 아래에 더 많은 전력이 숨겨져 있습니다. 이 기사에서는 좋아하는 껍질의 후드를 들여다보고 실제로 할 수있는 것을 볼 수 있습니다. 쉘 스크립팅에 들어가고 싶다면 Unix Power Tools 및 Bash Shell 학습 서적을 확인하십시오. 쉘에 관한 Stephen R. Bourne의 원본 논문은 오래된 스크립트라도 쉘 스크립팅의 세계를 잘 소개합니다.

유닉스 / 리눅스 쉘 101