hyperskill - First program in bash 영어 원문
Linux를 성공적으로 설치 한 후, 명령어 라인을 탐색할 수 있습니다.
첫 번째로 터미널에서 작업하는 것은 혼란스럽게 보일 건데,
이는 운영 체제에서 텍스트 기반의 명령어를 사용하여 다룰 필요가 있기 때문입니다.
하지만, 당신이 이 명령어를 마스터한다면 모든 시스템에 있어 각각의 하나의 비트마저 자동화 시킬 수 있습니다.
GUI 보다 CLI가 다루기 훨씬 어렵지만, 더 세밀한 조정을 위해서는 CLI를 해야만 한다.
또한, 리눅스 셸에 대한 좋은 지식은 반복하는 행동에 대해 자동화하는 스크립트를 작성 할 때 도움이 될 겁니다.
당신이 필요 할 때 마다 같은 명령어를 사용하는 것 보다 더 쉽습니다.
그래서, 이제 당신의 첫 번째 bash 프로그램을 작성하러 가 봅시다!
Echo utility - Echo 유틸리티 (출력)
Bash는 Bourne shell 보다 더 향상된 버전입니다.
이 이름은 "Boune Again Shell" 의 약자이며, 또한 "Born again" 셸로 해석되기도 합니다.
Bash는 유저의 명령어를 들어야 하며, 이 명령어를 추가적인 프로세싱을 위해 운영 체제에 전달합니다.
Bash이외에 다른 버전의 명령 shell(셸)들이 있습니다.
하지만, 이번 주제에서는 Bash를 사용 할 건데,
Linux 환경에서 가장 유명하며 현대적인 셸 중에 하나이기 때문입니다.
주로, 평범하게 첫 번 째로 하는 임무는 텍스트 라인을 산출하는 것 입니다.
Bash 에서는, 이를 위한 특별한 유틸리티가 있습니다. 이는 echo 입니다.
echo 명령어는 유용하지만 간단하며, echo를 통해서만 터미널에 텍스트 라인 산출 결과를 낼 수 있습니다.
구문 또한 쉽습니다 : echo <options> <text_line>
.
한 번 해 봅시다!
초기에 우리는 옵션을 건너 뛰고 그냥 터미널에 텍스트 라인을 산출 할 겁니다.
$ echo Hello, Linux!
Hello, Linux!
만약 당신이 텍스트를 여러 개의 라인으로 산출하고 싶다면, 따옴표 '
표식을 사용하세요 :
$ echo 'Hello, Linux!' 'Here I am!'
아직까진 여러 줄이 아니라, 한 칸이 띄어져서 산출됨 :
Hello, Linux! Here I am
좋아요, 하지만 당신이 여러 줄에 있어 각각의 페이즈에 산출물을 내야 한다면?
그렇다면 당신은 -e
플래그를 echo 명령어에 옵션으로 추가해야만 합니다.
이 표식은 산출 텍스트에 있어 escape sequences 를 지원합니다. : Example : \n
:
$ echo -e 'Hello, Linux! \nHere I am!'
Hello, Linux!
Here I am!
echo
명령어에 옵션-e
를 주지 않아도\n
가 정상적으로 작동한다.
따옴표'
를 둘러 싸 주면\n
와 같은 표식이 먹힌다.
당신이 메세지 이후 개행문자를 산출하고 싶지 않은 경우, echo 명령어에 -n
표식을 추가하세요.
좋습니다. 첫 번째 단계는 완수했으며, 이제 당신은 어떻게 텍스트를 출력하는지 알아냈습니다.
다음을 뭘까요?
Hello World!
다음 단계는 Bash에 'Hello, World!' 스크립트를 작성하는 것 입니다.
hello_world.sh
이름으로 파일을 만드세요. (텍스트 에디터를 사용해도 됩니다.)
#!/usr/bin/env bash
echo 'Hello, world!';
위의 스크립트는 두 개의 라인으로 구성되어 있습니다.
첫 번째 라인은 셸 인터프리터(shell interpreter)의 경로가 담겨있는데,
이 인터프리터는 명령을 실행하는 데 있어 당신에게 필요 한 것 입니다.
이 예시에서는, /usr/bin/env bash
는 당신의 환경에서 Bash를 실행 수 있게 탐색하는 것 입니다.
이 줄의 시작에서 두 심볼의 sequence (시퀀스-순서를 의미) #!
가 있는데, 이는 shebang이라 부릅니다.
bang은 총성과 함께 시작함을 알리며, she는 셸의 앞글자를 딴 단어라고 추측합니다.
즉, 셸이 시작하는 곳을 의미한다고 생각 할 수 있습니다.
shebang은 프로그램이 스크립트로 구동 할 수 있게 지정 해 놓은 Linux 프로그램 loader를 관리합니다.
두 번째 라인은 이미 당신에게 익숙 할 텐데, echo
명령어입니다.
hyperskill의 페이지의 추가적인 정보
Shebang
은 원하는 프로그래밍 언어에 대한 인터프리터를 정의합니다.- 예를 들어, Python script를 실행하고자 한다면,
#!/usr/bin/env python3
를 추가하면 됩니다. ./file.py
와 같은 명령어 라인으로부터 script 를 실행 할 수 있습니다.
좋아요. script에 대해서 알았습니다. 이걸 어떻게 실행하죠?
Run a shell script - shell script 실행하기
shell script (쉘-셸 스크립트) 를 실행할 수 있는 세 가지 방법이 있습니다.
- 당신의 파일이 있는 디렉토리를 연 후,
bash hello_world.sh
를 치는 것 입니다.
이 방식은 단 하나의 명령만을 필요로 하지만, Bash로 실행 할 스크립트를 지정하는 것을 잊지 마세요.
왜냐면 이 방식으로 스크립트를 구동하는 것은 shebang 디렉토리를 무시하는 것 이기 때문입니다.
chmod +x hello_world.sh
를 쳐서 파일을 실행 가능하게 만들 수 있습니다.
그러곤 해당 디렉토리에서./hello_world.sh
를 사용해서 이를 실행 할 수 있습니다.
여기서, 당신은 Bash를 지정하는 것을 건너 뛸 수 있지만, 파일을 실행 가능하도록 만드는 것을 기억하세요.
sudo cp hello_world.sh /usr/local/bin
을 입력하여bin
에 파일을 위치할 수 있습니다.
그리고 나서 파일 이름인hello_world.sh
만을 사용해서 스크립트를 실행 합니다.
당신이 보다시피, 올바른 위치에 당신의 파일을 놓기 위해서sudo
(superuser access) 명령어가 필요 할 겁니다.
이 방식은 Bash에서 디렉토리를 어떻게 바꾸는지,sudo
모드가 무엇인지 당신이 안다는 것을 암시합니다.
그리고 이 방식의 이점은 마지막 명령이 오로지 파일이름으로만 구성되어 있다는 것 입니다.
개인적인 부가 설명
일반적 : cp hello_world.sh /usr/local/bin
일반 유저의 권한을 넘어선 일 : sudo hello_world.sh /usr/local/bin
이유 :bin
폴더는 일반 유저가 건드릴 수 없는 중요한 파일이기 때문에,
보안적으로 슈퍼 권한을 가진 유저만 조정할 수 있다.
sudo | hello_world.sh | /usr/local/bin |
---|---|---|
슈퍼권한을 사용한다 | 현재 디렉토리의 hello_world.sh 를 지정한다 |
지정된 파일을 /usr/local/bin 으로 복사한다 |
또다른 접근은 당신의 PATH
변수에 디렉토리를 추가하는 것 입니다.
하지만 우리는 오늘 많은 것을 배웠습니다, 따라서 Linux 시스템 변수와 작업하는 법은 다음 주제에서 말하겠습니다.
만약 당신이 chmod
, cp
그리고 sudo
가 익숙하지 않다면 걱정하지 마세요.
이에 대한 자세한 것은 나중에 설명하겠습니다.
지금으로선, 이 명령어들을 어떻게 사용하는지 이해하는 것이 필요할 뿐 입니다.
Conclusion - 결론
축하합니다! 이제 당신은 쉘 스크립트를 만드는 법과 Bash에서 이를 실행하는 법을 알게 되었습니다!
우리는 당신이 이 정보에서 유용한 것을 찾았길 바라며,
이제 당신은 Linux 가 어떻게 작동하는 지에 대해서 한 단계 더 가깝게 이해하게 되었습니다.
words to rememer
phrase : 구절
desired : 원하는, 생각하다, 소망하다
specify : 지정하다
implies : 암시한다, 함축하다, 묵시하다
colleague : 동료
interactive : 대화형
'Hyperskill - 컴퓨터 CS 및 영어 독해 > Introduction to Git' 카테고리의 다른 글
File descriptors and pipes - 파일 descriptor 와 pipe (1) | 2024.05.23 |
---|---|
Functions and arguments - 기능과 매개변수 (0) | 2024.05.22 |
Starting with GitHub - 깃허브 시작하기 (0) | 2024.05.20 |
Start with git - git 시작하기 (0) | 2024.05.19 |
Introduction to Linux - 리눅스 소개 (1) | 2024.05.16 |