마지막 섹션에 "오프닝"을 쓰는 것은 참으로 약간 이상합니다. 그러나 첫 번째 기사(수치 연산)의 시작 부분은 실제로는 작은 서문입니다. 따라서 전체 시리즈에는 Shell 프로그래밍의 기초가 없는 독자도 사용할 수 있도록 해야 한다고 언급되어 있습니다. 이 시리즈를 읽으면서 나는 이 첫 장을 다시 쓰게 되었습니다. 첫 번째 장에서는 주로 Shell이 무엇인지, Shell 운영 환경, 기본 Shell 구문 및 디버깅 기술을 소개합니다.
먼저, 다음 그림을 통해 전체 운영체제에서 Shell의 위치를 살펴보겠습니다. 그림의 바깥쪽 원은 전체 운영체제를 나타냅니다(예:
데비안/우분투/슬랙웨어등), 내부 원은 운영 체제의 핵심을 설명합니다(예:
리눅스 커널),그리고
껍데기그리고
GUI또한 사용자와 운영 체제 간의 인터페이스 역할도 합니다.
GUI사용하기 쉽고 배우기 쉬운 그래픽 사용자 인터페이스를 제공합니다.
껍데기사용자에게 명령줄 인터페이스를 제공하고 사용자의 키보드 입력을 받아 입력 문자열의 명령을 분석 및 실행한 다음 실행 결과를 사용자에게 반환합니다. 사용하기가 더 복잡할 수 있지만 리소스를 덜 차지하기 때문입니다. , 또한, 작업에 능숙해지면 작업 효율성이 향상될 수 있으며 일괄 처리 기능이 있으므로 일부 응용 분야에서는 매우 인기가 있습니다.
껍데기사용자 인터페이스로서 실제로는 인터프리터(Interpreter, 예를 들어
리눅스다음은 더 일반적으로 사용됩니다
세게 때리다), 우리는 현재를 볼 수 있습니다
껍데기:
$ echo $Shell/bin/bash$ ls -l /bin/bash-rwxr-xr-x 1 루트 루트 702160 2008-05-13 02:33 /bin/bash
인터프리터는 간단한 명령을 해석할 수 있을 뿐만 아니라 스크립트라고 하는 특정 구문 구조를 가진 파일을 해석할 수도 있습니다. 여기서는 이러한 명령과 스크립트 파일을 구체적으로 어떻게 해석하는지 자세히 분석하지 않습니다. 2008년에 제가 쓴 다른 기사인 "Linux 명령줄에서 프로그램 실행의 순간"을 참조하세요.
프로그램은 특정 문법 구조로 파일을 해석할 수 있으므로 특정 문법에 따라 작성할 수 있습니다. 어떤 종류의 문법이 있고, 어떻게 실행하며, 디버깅하는 방법은 무엇입니까? 아래에서 우리는
세게 때리다이러한 측면을 예를 들어 논의해 보겠습니다.
다음 연습을 용이하게 하기 위해 먼저 기본 운영 환경을 설정합니다. Linux 운영 체제에서는 실행 중인
세게 때리다명령줄은 우리가 명령을 입력하기를 기다리고 있습니다. 이 명령줄은 그래픽 인터페이스 아래에 있을 수 있습니다.
단말기(예를 들어
우분투매우 강력함
터미네이터) 또는 문자 인터페이스일 수 있습니다.
콘솔(사용 가능
CTRL+ALT+F1~6토글) 현재를 찾으면
껍데기아니요
세게 때리다, 다음으로 바꾸세요:
$ chsh $USER -s /bin/bash$ su $USER
아니면 간단히 Bash를 입력하세요:
$ bash$ echo $Shell # 확인 /bin/bash
Linux 운영 체제가 설치되어 있지 않은 경우 일반적으로 원격 서비스를 제공하는 일부 공개 커뮤니티에서 제공하는 Linux 가상 실험 서비스 사용을 고려할 수도 있습니다.
껍데기, 합격할 수 있어요
텔넷아니면
SSH연습하려면 클라이언트에 로그인하세요.
기본 운영 환경에서 사용자가 입력한 명령이나 사용자가 작성한 스크립트 파일을 어떻게 실행하나요?
?
다음과 같은 쉘 스크립트를 작성했다고 가정해 보겠습니다.
test.sh.
첫 번째 방법은 우리가 실행하는 명령에 실행 권한이 있는지 확인한 다음 명령을 직접 입력하여 실행하는 것입니다.
$ chmod +x /path/to/test.sh$ /path/to/test.sh
두 번째 방법은 스크립트를 다음과 같이 직접 작성하는 것입니다.
세게 때리다인터프리터의 매개변수는 다음과 같이 전달됩니다.
$ bash /path/to/test.sh
또는
$ 소스 /path/to/test.sh
또는
$ ./path/to/test.sh
하나 먼저
안녕하세요, 세계프로그램.
Shell 프로그램의 기본 구조를 소개하겠습니다.
안녕하세요, 세계예를 들어:
#!/bin/bash -v# test.shecho 안녕하세요, 세계
위 코드를 다음과 같이 저장하세요.
test.sh를 실행한 후 위의 두 가지 방법으로 실행하면 다음과 같은 효과를 볼 수 있습니다.
방법 1:
$ chmod +x test.sh$ ./test.sh ./test.sh #!/bin/bash -v echo Hello, World Hello, World
방법 2:
$ bash test.shHello, World$ 소스 test.shHello, World$ test.shHello, World.
두 실행 결과에 차이가 있는 것으로 나타났습니다. 이유는 무엇입니까? 여기서 우리가 주목해야 할 것은
test.sh파일의 내용은 두 줄만 있고 두 번째 줄이 인쇄됩니다.
안녕하세요, 세계, 두 방법 모두 목적을 달성하지만 첫 번째 방법은 스크립트 파일 자체의 더 많은 내용을 인쇄합니다.
그 이유는 파일의 첫 번째 줄에 있습니다. 스크립트 파일을 직접 실행할 때 이 줄은 운영 체제에 다음을 사용하도록 지시합니다.
#!기호 뒤의 인터프리터와 해당 매개변수는 스크립트 파일을 해석하는 데 사용됩니다. 첫 번째 줄을 분석하여 해당 인터프리터와 매개변수가 다음과 같음을 발견했습니다.
/bin/bash -v,그리고
-다섯우연히 프로그램의 소스 코드를 인쇄하는 경우가 있는데, 두 번째 방법을 사용할 때는 이를 제공하지 않았습니다.
세게 때리다추가 인수를 전달하면 단순히 스크립트 파일 자체를 해석합니다.
기타 구문에 대한 자세한 내용은 이 책 뒷부분의 부록 1에 있는 "쉘 프로그래밍 학습 노트"를 직접 참조하세요.
쉘 언어는 해석된 언어이며, 프로그래밍 프로세스는 컴파일된 언어와 다소 다릅니다.
디자인 알고리즘
Shell을 사용하여 알고리즘 구현을 위한 스크립트 작성
스크립트를 직접 실행
컴파일된 언어의 번거로운 컴파일과 링크 과정이 없다고 볼 수 있지만, 바로 이 때문에 런타임에 구문 오류와 논리 오류가 나타나기 때문에 잘못되었을 때 디버깅하기가 그다지 편리하지 않습니다. 아래에서는 디버깅 방법을 간략하게 소개합니다.
쉘 스크립트 디버깅 기술 또는 BASH 디버깅 방법을 직접 참조할 수 있습니다.
Shell 언어는 해석된 언어로서 수치 계산, 기호 처리, 파일 작업, 네트워크 작업 등 기존의 많은 도구를 사용할 수 있습니다. 따라서 작성 프로세스가 더 효율적일 수 있지만 해석되기 때문에 필요합니다. 그 과정에서 디스크에서 외부 프로그램을 계속 호출하고 프로세스 간을 전환하는 것은 운영 효율성 측면에서 단점이 될 수 있으므로 응용 프로그램에 따라 프로그래밍을 위해 Shell 또는 다른 언어를 선택해야 합니다.
프로그램이 Linux 명령줄에서 실행되는 순간
Linux 쉘 프로그래밍 연구 노트
쉘 스크립트 디버깅 기술
BASH 디버깅 방법