CLI Commands

개요

개인적으로 개발을 진행했을 때 CLI라는 용어를 많이 듣게 되고, 클라우드 플랫폼(e.g. AWS) 공식문서에서 CLI에서 어떤 입력을 통해 어떤 작업을 수행할 수 있다는 것을 상세하게 설명한 것을 보았습니다.

AWS_Amplify_개발자_문서

그리고, git push origin main git add . 등을 통해 CLI라는 용어를 몰랐더라도 그동안 자연스럽게 CLI를 사용했던 나를 발견할 수 있습니다.

수학을 공부할 때 본격적으로 수학을 학습하기 이전에 이해하기 위해 필요한 숫자를 학습하는 것처럼, 개발을 공부할 때 shell에 대한 내용에 대해 학습하면 좋을 것 같아 학습한 내용을 정리해보려고 합니다. 개인적으로 학습한 내용을 기반으로 작성된 것이기 때문에 잘못된 내용이 있거나 개선해야 될 점등을 말씀해주시면 참고하고 수정하겠습니다.

용어

CLI

Command Line Interface (명령줄 기반 인터페이스)

CLI_prompt

CLI란 Command Line(명령줄) 기반으로 명령을 내리고, 응답을 받는다는 의미입니다. 대표적으로 위의 이미지와 같이 윈도우에서 명령프롬프트가 있습니다.

GUI

Grapic User Interface

GUI_탐색기

GUI는 Grapic User Interface의 줄임말이고, 마우스와 같은 그래픽 요소를 이용해서 명령을 내리고 응답을 받는다는 의미입니다. 대표적으로 위의 이미지와 같이 윈도우에서의 탐색기가 있습니다.

알아두면 좋은 용어

  • delete: 삭제라고 부르며, 물리적인 삭제를 의미합니다.
  • remove: 제거라고 부르며, 논리적인 삭제를 의미합니다(실제 하드디스크에는 존재하지만, 접근할수 있는 주소를 차단하여 없는 것처럼 동작합니다. 이후 하드디스크에서 큰 용량의 파일을 저장해야 되는 등의 상황이 올 때 해당 공간에 다른 값이 할당될 수 있습니다. 즉 덮여쓰기 될 수 있습니다)

Commands

shell

개발 공부를 학습할 때 주로 unix-like 명령어를 접하고, 최근에는 윈도우에서도 관련된 명령어를 사용할 수 있도록 지원해주기 때문에 여기에서는 unix-like shell 기반을 기준으로 설명하겠습니다.

  • ~

    Tilde

    틸드(물결표시)라고 부르며, shell에서는 최상위 디렉토리(유저 디렉토리)를 의미합니다.

  • /

    Delimiter

    슬래시라고 부르며, shell에서는 디렉토리(경로)를 구분하기 위해 사용합니다.

  • $
    현재 shell에서 입력을 받을 준비가 되었다는 의미입니다.

  • *
    별표(asterisk, 에스터리스크)라고 부르며, shell에서는 '모든'이라는 의미로 사용됩니다.

위를 종합하면 shell에서 command line의 왼쪽에 보이는 devryan@ubuntu-bionic:~$ 은 " 내가 사용하고 있는 서버이름(컴퓨터 이름)ubuntu-bionic이고 유저이름devryan이다. 그리고, 현재 경로해당 서버(컴퓨터)의 최상단(유저)디렉토리이며, 입력을 받을 준비가 되어있다($) "라는 의미입니다.

Shell Commands

  • pwd

    Print Working Directory

    현재 경로를 절대경로로 보여줍니다.

  • ls

    List Segment

    • 지금 위치(경로)에서 하위로 접근할 수 있는 디렉토리나 파일을 리스트로 출력해 줍니다.
    • shell에서 디렉토리 단위에서의 . 은 현재 디렉토리, .. 은 상위디렉토리를 의미합니다.
  • cd

    Change Directory

    directory 단위로 경로를 변경할 수 있습니다. ( cd .. 상위 디렉토리로 이동)

  • mkdir

    Make Directory

    새 폴더를 생성합니다.

  • touch
    파일을 생성합니다.

  • mv

    move

    • command
      $ mv {이동할 파일경로} {이동시킬 파일경로}
      ( $ mv ../style.css . )
    • 기능
      • 파일을 이동시킵니다.
      • 이름을 변경합니다.
        mv app.js main.js mv 내부적인 동작으로 인해 이동 시키는 기능 뿐 아니라 app.js를 main.js라는 이름으로 변경이 가능합니다.
  • cp

    copy

    • command
      cp {원본 파일경로} {복사할 파일경로}
      ( cp app.js ../ )
    • 기능
      • 파일을 복사합니다(사본 생성).
      • 이름을 지정하지 않을 경우 원본파일의 이름을 그대로 사용합니다.
  • rm

    remove

    • command
      rm {파일경로}
    • 기능
      • 파일을 제거합니다
      • 별도의 옵션(플래그)없이 파일이 아닌 디렉토리(폴더)를 삭제하려고 하면 에러가 발생합니다. (파일은 실제로 존재하지만, 디렉토리는 논리적으로 존재하기 때문입니다)
      • *를 활용하면 조건에 맞는 파일을 매치해서 삭제할 수도 있습니다.
        ( rm server.* 현재 경로에서 server라는 이름을 가진 모든 파일을 지움 )
    • 옵션
      • -r

        recursive

        • command
          rm -r {디렉토리 이름}
        • 디렉토리를 삭제하기 위한 옵션입니다.
        • 재귀적으로 순회하면서 타겟이 되는 디렉토리 하위의 모든 디렉토리, 파일들을 지우고, 이후 타겟이 되는 디렉토리도 지웁니다.
      • -rf
        • command
          rm -rf
        • -r 만으로도 충분히 동작하지만, -r에서 지울 때 경우에 따라 지울지 물어보고 진행할수 있으며, 물어보지 않고 강제로 모두 삭제하기를 원할 때 -rf 를 사용합니다.
  • cat

    • command
      cat {파일 경로}

CLI_cat

  • 텍스트 라인을 병합해서 화면에 출력합니다.
  • shell에서 파일의 텍스트(소스코드)가 올바르게 작성되었는지 확인하고자 할 때 사용할 수도 있습니다.

Vim commands

  • vim은 CLI에서 사용할 수 있는 대표적인 텍스트 에디터이며, 소스코드 작성으로도 활용할 수 있습니다.

  • mode를 기반으로 동작합니다.
    그래서, 해당 기능을 사용하기 위해서는 해당하는 mode로 진입 후 사용해야 합니다.

  • commands

    • vi {파일 경로}
      해당 파일을 vim으로 open합니다.

    • vim 에디터

      • esc

        escape

        normal 모드로 진입합니다.

      • normal 모드

        • :
          • command 모드로 진입합니다.
          • 하단에 표시되는 : 를 통해 command모드에 진입한 것을 확인할 수 있습니다.
        • i

          insert

          • 수정 모드로 진입합니다.
          • 하단에 표시되는 -- INSERT -- 를 통해 insert 모드에 진입한 것을 확인할 수 있습니다.
      • command 모드

        • w
          작성한 내용을 저장합니다.
        • wq
          작성한 내용을 저장하고 나갑니다(shell로 복귀).
        • q!
          내용을 저장하지 않고 처음 상태를 유지합니다(override).
profile
$ npm run dev:ryan

0개의 댓글