연습 - Bash 사용해 보기
자신의 Linux 컴퓨터에서 Bash 명령을 로컬로 실행할 수 있습니다. Linux 서버에 액세스할 수 있는 경우 해당 서버에 원격으로 연결한 후 Bash 명령을 실행할 수 있습니다. 하지만 누구도 라이브 프로덕션 시스템에서 실험하는 것을 원치 않을 것이며 Northwind에 처음 출근한 경우라면 더욱 그럴 것입니다.
이 단원에서는 Linux 터미널로 Azure Cloud Shell를 사용합니다. Azure Cloud Shell은 Azure Portal을 통해 또는 https://shell.azure.com에서 액세스할 수 있는 셸입니다. 이 셸을 사용하기 위해 PC 또는 노트북에 아무것도 설치할 필요가 업습니다.
Cloud Shell 숙지
먼저, 학습한 Bash 명령을 사용하여 Cloud Shell의 기능을 살펴보겠습니다.
ls
명령을 사용하여 현재 디렉터리에 있는 모든 파일과 하위 디렉터리를 나열합니다.ls
다음과 같이 유사한 출력이 표시됩니다.
yourname@Azure:~$ ls clouddrive
clouddrive는 현재 디렉터리의 하위 디렉터리입니다. 사용자의 계정에서 Cloud Shell을 사용할 때 유지되는 탑재된 파일 공유입니다. 현재 이 셸은 Microsoft Learn 샌드박스에서 사용하고 있습니다.
그렇다면 현재 디렉터리란 무엇인가요?
pwd
명령을 사용하여 확인해 보겠습니다.pwd
는 “print working directory”를 나타냅니다. 이 명령은 현재 사용자가 있는 디렉터리에 대한 긴 형식의 경로를 출력합니다.pwd
다음과 유사한 출력이 표시됩니다.
yourname@Azure:~$ pwd /home/yourname
이 출력은 Linux 파일 시스템의 루트의 home이라는 디렉터리 내에 yourname이라는 디렉터리에 사용자가 있음을 의미합니다.
현재 디렉터리에는 많은 내용이 없는 것 같습니다. Bash flag를 사용하여 모든 숨겨진 파일 및 디렉터리를 인쇄한 후 올바른지 한 번 더 확인합니다.
ls -a
출력을 보면 이 디렉터리에 처음에 생각했던 것보다 더 많은 항목이 있는 것으로 나타났습니다.
yourname@Azure:~$ ls -a . .. .azure .bash_history .bash_logout .bashrc clouddrive .profile .tmux.conf .viminfo
어떤 파일 및 하위 디렉터리가 있나요? 일부는 Cloud Shell 작동을 지원하기 위한 백그라운드 파일입니다. 몇 가지 다른 항목에 대해 살펴보겠습니다.
.
은 현재 디렉터리를 나타내고..
은 부모 디렉터리를 나타냅니다. 어디에서든 모든 숨겨진 파일 및 디렉터리를 출력하면.
및..
으로 출력됩니다..bash_history
는 셸에 입력하는 모든 명령이 저장되는 특수 Bash 파일입니다. Bash는 명령 기록을 기억하므로 나중에 유용할 수 있습니다..bash_logout
은 로그인 셸이 있을 때마다 읽히고 실행되는 또 다른 특수 Bash 파일입니다. Linux 슈퍼 사용자는 이 파일을 수정하여 환경을 사용자 지정할 수 있습니다..bashrc
는 새 셸을 시작할 때마다 실행되는 중요 Bash 구성 파일입니다. 이 파일을 열어서 확인하기로 한 경우 의도치 않은 결과가 발생할 수 있으므로 변경할 때는 주의하는 것이 좋습니다.
이전 기록 불러오기 및 자동 완성 명령
이와 같은 복잡한 명령을 입력하는 경우에는 실수하기 쉽습니다.
ls -a .azure/commands/202?*.log
다행히 Bash는 도움이 되는 몇 가지 기능을 제공합니다.
명령 불러오기
오타(
202?
대신203?
)가 있는 경우 이 명령을 입력해 보세요.ls -a .azure/commands/203?*.log
이 출력이 표시되면 해당 패턴과 일치하는 파일이 없다는 것을 알 수 있습니다.
ls: cannot access '.azure/commands/203?*.log': No such file or directory
실수를 수정하기 위해 전체 내용을 다시 입력하지 않고, 위쪽 화살표 및 아래쪽 화살표 키를 사용하여 이전에 입력한 명령을 다시 불러올 수 있습니다. 위쪽 화살표 키를 사용하여 잘못된 명령을 다시 불러옵니다. 그런 다음, 왼쪽 화살표 키를 사용하여 최종
3
을2
로 바꿔서 수정합니다. Enter 키를 다시 선택하여 수정된 명령을 제출합니다.하나의 행에서 위쪽 화살표 키를 여러 번 사용하면 여러 개의 명령 이전으로 이동됩니다. 아래쪽 화살표 키를 사용하여 이후 명령으로 이동합니다.
이제 다음 출력과 같은 내용이 표시됩니다. 명령이 올바르게 작동하여 지정된 패턴과 일치하는 파일을 나열하고 있다는 사실을 알 수 있습니다.
.azure/commands/2020-01-29.21-56-35.login.103.log .azure/commands/2020-01-29.21-56-38.account_set.112.log
자동 완성
방금 찾은 파일 중 하나의 내용을 읽으려고 한다고 가정해 보겠습니다. cat
(“catenate”) 명령을 사용하여 파일 내용을 화면에 출력할 수 있습니다.
이 명령을 사용하려면 다음과 같은 전체 파일 이름을 사용할 수 있습니다.
cat .azure/commands/2020-01-29.21-56-35.login.103.log
하지만 매우 많은 입력 오류와 실수가 발생하기 쉽습니다. 대신 Bash의 기초적인 자동 완성 기능을 사용하여 대부분 작업을 수행할 수 있습니다. 다음을 입력해 보세요.
cat .a
그런 다음, Tab 키를 선택합니다. 어떻게 되나요?
명령에 단어 “azure/”의 나머지가 표시됩니다.
cat .azure/
단어의 시작 부분을 계속 입력하고 Tab 키를 사용하여 자동 완성을 수행합니다. 모호한 경우 Bash는 아무 내용도 채우지 않습니다. Tab 키를 두 번 선택하여 지정된 경로에서 사용자가 이미 입력한 단어와 일치하는 모든 파일 및 디렉터리를 출력할 수 있습니다.
명령 디렉터리의 실제 .log 파일에 도달할 때까지 이동합니다. 그런 다음, Enter 키를 선택하고
cat
명령을 사용하여 해당 내용을 화면에 출력합니다. 다음과 비슷하게 표시될 수 있습니다.CMD-LOG-LINE-BEGIN 103 | 2020-01-29 21:56:35,426 | INFO | az_command_data_logger | command args: login --identity CMD-LOG-LINE-BEGIN 103 | 2020-01-29 21:56:37,604 | INFO | az_command_data_logger | exit code: 0
잘못된 문자를 이미 입력한 경우 Bash는 입력하려는 문자를 제대로 추측할 수 없습니다.
man
사용
cat
명령을 사용했지만 여러분은 이 명령에 대해 잘 모를 것입니다. man
을 연습하면서 cat
명령에 대한 자세한 내용을 확인해 보세요.
다음 명령을 입력하여
cat
이 무엇인지와 어떻게 사용하는지에 대해 알아보세요.man cat
예. 셸에 “man cat”을 입력했습니다. Bash 명령은 모두 암호화되며 놀라운 기능을 제공할 수 있습니다.
다음과 유사한 출력이 표시됩니다.
CAT(1) User Commands CAT(1) NAME cat - concatenate files and print on the standard output SYNOPSIS cat [OPTION]... [FILE]... DESCRIPTION Concatenate FILE(s) to standard output. With no FILE, or when FILE is -, read standard input. -A, --show-all equivalent to -vET -b, --number-nonblank number nonempty output lines, overrides -n -e equivalent to -vE ...
위쪽 및 아래쪽 화살표를 사용하여 설명서 페이지를 따라 스크롤하고
q
를 입력하여 종료합니다.
디렉터리 변경
기본 Bash 명령 중 하나인 cd
도 사용해 보겠습니다.
셸을 사용하는 동안에는 PC 또는 Mac의 폴더 등, 항상 디렉터리 내에 있습니다. 폴더를 변경하려면 cd
(디렉터리 변경) 명령을 사용합니다.
간단하지만 몇 가지 방법을 살펴보겠습니다.
먼저, 다음 명령을 입력하여 올바른 위치에 있는지 확인합니다.
cd ~
이 명령은 셸에서 특수 홈 디렉터리로 다시 이동합니다(아직 해당 디렉터리에 있지 않은 경우).
pwd
명령을 한번 더 사용하여 다시 확인합니다.pwd
다음과 유사한 출력이 표시됩니다.
/home/yourname
~
는 이 홈 디렉터리를 참조하는 Bash의 또 다른 특수 문자입니다. 셸에서의 위치에 관계없이~
를 사용하여 /home/yourname 위치를 참조할 수 있습니다.로그 파일을 포함하는 디렉터리로 변경합니다(이전에 있던 위치).
cd .azure/commands/
전체 명령을 직접 입력하거나 Tab 키를 사용하여 자동 완성을 수행할 수 있습니다.
이제 명령을 입력하는 줄이 다르게 표시되어 셸에서의 사용자 위치를 표시합니다.
yourname@Azure:~/.azure/commands$
특수
..
구문을 사용하여 한 디렉터리 위로 이동합니다.cd ..
이제 디렉터리 구조에서 한 수준 위로 이동되며 명령줄은 다음과 같이 표시됩니다.
yourname@Azure:~/.azure$
잘하셨습니다. Bash 전문가가 되는 첫 번째 단계를 마쳤습니다. 계속 배워 보겠습니다.