연습 - Bash 사용해 보기

완료됨

자신의 Linux 컴퓨터에서 Bash 명령을 로컬로 실행할 수 있습니다. Linux 서버에 액세스할 수 있는 경우 해당 서버에 원격으로 연결한 후 Bash 명령을 실행할 수 있습니다. 하지만 누구도 라이브 프로덕션 시스템에서 실험하는 것을 원치 않을 것이며 Northwind에 처음 출근한 경우라면 더욱 그럴 것입니다.

이 단원에서는 오른쪽의 Azure Cloud Shell을 Linux 터미널로 사용합니다. Azure Cloud Shell은 Azure Portal을 통해 또는 https://shell.azure.com에서 액세스할 수 있는 셸입니다. 이 셸을 사용하기 위해 PC 또는 노트북에 아무것도 설치할 필요가 업습니다.

Cloud Shell 숙지

먼저, 학습한 Bash 명령을 사용하여 Cloud Shell의 기능을 살펴보겠습니다.

  1. ls 명령을 사용하여 현재 디렉터리에 있는 모든 파일과 하위 디렉터리를 나열합니다.

    ls
    
  2. 다음과 같이 유사한 출력이 표시됩니다.

    yourname@Azure:~$ ls
    clouddrive
    

    clouddrive는 현재 디렉터리의 하위 디렉터리입니다. 사용자의 계정에서 Cloud Shell을 사용할 때 유지되는 탑재된 파일 공유입니다. 현재 이 셸은 Microsoft Learn 샌드박스에서 사용하고 있습니다.

  3. 그렇다면 현재 디렉터리란 무엇인가요? pwd 명령을 사용하여 알아보겠습니다. pwd는 "인쇄 작업 디렉터리"를 의미합니다. 현재 디렉터리에 대한 긴 형식 경로를 출력합니다.

    pwd
    
  4. 다음과 유사한 출력이 표시됩니다.

    yourname@Azure:~$ pwd
    /home/yourname
    

    이 출력은 Linux 파일 시스템의 루트의 home이라는 디렉터리 내에 yourname이라는 디렉터리에 사용자가 있음을 의미합니다.

  5. 현재 디렉터리에는 많은 내용이 없는 것 같습니다. Bash flag를 사용하여 모든 숨겨진 파일 및 디렉터리를 인쇄한 후 올바른지 한 번 더 확인합니다.

    ls -a
    
  6. 그런데 상황이 그렇지 않네요. 출력을 보면 이 디렉터리에 처음에 생각했던 것보다 더 많은 항목이 있는 것으로 나타났습니다.

    yourname@Azure:~$ ls -a
    .  ..  .azure  .bash_history  .bash_logout  .bashrc  clouddrive  .profile  .tmux.conf  .viminfo
    
  7. 어떤 파일 및 하위 디렉터리가 있나요? 일부는 Cloud Shell 작동을 지원하기 위한 백그라운드 파일입니다. 몇 가지 다른 항목에 대해 살펴보겠습니다.

    • .은 현재 디렉터리를 나타내고 ..은 부모 디렉터리를 나타냅니다. 어디에서든 모든 숨겨진 파일 및 디렉터리를 출력하면 ...으로 출력됩니다.
    • .bash_history는 셸에 입력하는 모든 명령이 저장되는 특수 Bash 파일입니다. Bash는 명령 기록을 기억하므로 나중에 유용할 수 있습니다.
    • .bash_logout은 로그인 셸이 있을 때마다 읽히고 실행되는 또 다른 특수 Bash 파일입니다. Linux 슈퍼 사용자는 이 파일을 수정하여 환경을 사용자 지정할 수 있습니다.
    • .bashrc는 새 셸을 시작할 때마다 실행되는 중요 Bash 구성 파일입니다. 이 파일을 열어서 확인하기로 한 경우 의도치 않은 결과가 발생할 수 있으므로 변경할 때는 주의하는 것이 좋습니다.

이전 기록 불러오기 및 자동 완성 명령

이와 같은 복잡한 명령을 입력하는 경우에는 실수하기 쉽습니다.

ls -a .azure/commands/202?*.log

다행히 Bash는 도움이 되는 몇 가지 기능을 제공합니다.

명령 불러오기

  1. 오타(202? 대신 203?)가 있는 경우 이 명령을 입력해 보세요.

    ls -a .azure/commands/203?*.log
    
  2. 이 출력이 표시되면 해당 패턴과 일치하는 파일이 없다는 것을 알 수 있습니다.

    ls: cannot access '.azure/commands/203?*.log': No such file or directory
    
  3. 실수를 수정하기 위해 전체 내용을 다시 입력하지 않고, 위쪽 화살표아래쪽 화살표 키를 사용하여 이전에 입력한 명령을 다시 불러올 수 있습니다. 위쪽 화살표 키를 사용하여 잘못된 명령을 다시 불러옵니다. 그런 다음, 왼쪽 화살표 키를 사용하여 최종 32로 바꿔서 수정합니다. Enter 키를 다시 선택하여 수정된 명령을 제출합니다.

    하나의 행에서 위쪽 화살표 키를 여러 번 사용하면 여러 개의 명령 이전으로 이동됩니다. 아래쪽 화살표 키를 사용하여 이후 명령으로 이동합니다.

  4. 이제 다음 출력과 같은 내용이 표시됩니다. 명령이 올바르게 작동하여 지정된 패턴과 일치하는 파일을 나열하고 있다는 사실을 알 수 있습니다.

    .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”) 명령을 사용하여 파일 내용을 화면에 출력할 수 있습니다.

  1. 이 명령을 사용하려면 다음과 같은 전체 파일 이름을 사용할 수 있습니다.

    cat .azure/commands/2020-01-29.21-56-35.login.103.log
    
  2. 하지만 매우 많은 입력 오류와 실수가 발생하기 쉽습니다. 대신 Bash의 기초적인 자동 완성 기능을 사용하여 대부분 작업을 수행할 수 있습니다. 다음을 입력해 보세요.

    cat .a
    

    그런 다음, Tab 키를 선택합니다. 어떻게 되나요?

  3. 명령에 단어 “azure/”의 나머지가 표시됩니다.

    cat .azure/
    

    단어의 시작 부분을 계속 입력하고 Tab 키를 사용하여 자동 완성을 수행합니다. 모호한 경우 Bash는 아무 내용도 채우지 않습니다. Tab 키를 두 번 선택하여 지정된 경로에서 사용자가 이미 입력한 단어와 일치하는 모든 파일 및 디렉터리를 출력할 수 있습니다.

  4. 명령 디렉터리의 실제 .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 명령에 대한 자세한 내용을 확인해 보세요.

  1. 다음 명령을 입력하여 cat이 무엇인지와 어떻게 사용하는지에 대해 알아보세요.

    man cat
    

    예. 셸에 “man cat”을 입력했습니다. Bash 명령은 모두 암호화되며 놀라운 기능을 제공할 수 있습니다.

  2. 다음과 유사한 출력이 표시됩니다.

    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
    
    ...
    
  3. 위쪽 및 아래쪽 화살표를 사용하여 설명서 페이지를 따라 스크롤하고 q를 입력하여 종료합니다.

디렉터리 변경

기본 Bash 명령 중 하나인 cd도 사용해 보겠습니다.

셸을 사용하는 동안에는 PC 또는 Mac의 폴더 등, 항상 디렉터리 내에 있습니다. 폴더를 변경하려면 cd(디렉터리 변경) 명령을 사용합니다.

간단하지만 몇 가지 방법을 살펴보겠습니다.

  1. 먼저, 다음 명령을 입력하여 올바른 위치에 있는지 확인합니다.

    cd ~
    

    이 명령은 셸에서 특수 디렉터리로 다시 이동합니다(아직 해당 디렉터리에 있지 않은 경우).

  2. pwd 명령을 한번 더 사용하여 다시 확인합니다.

    pwd
    
  3. 다음과 유사한 출력이 표시됩니다.

    /home/yourname
    

    ~는 이 홈 디렉터리를 참조하는 Bash의 또 다른 특수 문자입니다. 셸에서의 위치에 관계없이 ~를 사용하여 /home/yourname 위치를 참조할 수 있습니다.

  4. 로그 파일을 포함하는 디렉터리로 변경합니다(이전에 있던 위치).

    cd .azure/commands/
    

    전체 명령을 직접 입력하거나 Tab 키를 사용하여 자동 완성을 수행할 수 있습니다.

    이제 명령을 입력하는 줄이 다르게 표시되어 셸에서의 사용자 위치를 표시합니다.

    yourname@Azure:~/.azure/commands$
    
  5. 특수 .. 구문을 사용하여 한 디렉터리 위로 이동합니다.

    cd ..
    

    이제 디렉터리 구조에서 한 수준 위로 이동되며 명령줄은 다음과 같이 표시됩니다.

    yourname@Azure:~/.azure$
    

잘하셨습니다. Bash 전문가가 되는 첫 번째 단계를 마쳤습니다. 계속 배워 보겠습니다.

지식 점검

1.

Bash 명령 cd .를 입력한 경우 어떤 디렉터리로 전환되나요?