CLI(Command-Line Interface)는 명령어를 입력해 컴퓨터를 조작하는 방식입니다. 대부분의 PC에서는 GUI(Graphical User Interface)를 적용하는데, GUI는 윈도우즈나 macOS, 또는 Linux에서 사용자가 화면을 통해 컴퓨터와 소통하는 방식을 말합니다.
컴퓨터를 조작하기 위해서는 다양한 입력(Input)이 필요합니다. 화면을 보기 위해 마우스를 사용하고, 메시지를 입력하기 위해 키보드를 사용합니다. 입력을 담당하는 키보드나 마우스를 입력소스(Input source)라고 합니다.
반대로, 입력소스에 의해 또는 작성된 프로그램에 의해 모니터에 화면을 나타내거나, 음악을 재생하면 소리를 스피커로 전달하여 사용자가 인식할 수 있도록 하는 일을 출력(Output)이라고 합니다. 시각적 출력를 담당하는 모니터나 청각적 출력를 담당하는 스피커를 출력소스(Output source)라고 합니다.
* 컴퓨터를 조작하기 위한 입력과 출력을 간단하게 I/O(Input/Output)라고 표기하며, "아이오"라고 읽습니다.
아마존 웹 서비스(AWS, Amazon Web Service)의 클라우드 컴퓨팅처럼, 대량의 서버 컴퓨터를 설치해야 하는 서비스에서 수많은 컴퓨터에 GUI를 적용하기 위해 서버 컴퓨터마다 I/O 소스(키보드, 마우스, 모니터 등)를 부착하는 일은 불가능에 가깝습니다.
AWS 이전 세대의 선배 개발자들은 GUI가 없는 서버 컴퓨터를 어떻게 다룰 수 있었을까요? CLI를 이용해 서버 컴퓨터로 접속을 요청하면, 서버 컴퓨터는 요청한 컴퓨터의 출력소스(모니터)를 이용합니다. 선배 개발자들은 서버 컴퓨터에 직접 찾아갈 필요없이, 자신의 모니터로 서버 컴퓨터와 소통했습니다. 이 방법은 매우 효율적이어서, 지금도 수많은 현직 개발자가 이 방법을 통해 서버 컴퓨터와 소통합니다.
터미널 프로그램의 하단에 커서가 있고, 키보드에서 문자나 숫자를 나타내는 키를 눌러보면 커서가 있던 자리에 문자나 숫자가 나타나고, 커서가 오른쪽으로 한 칸 이동합니다. 키보드의 입력을 확인하고 편집할 수 있는 한 줄의 공간을 프롬프트(Prompt)라고 합니다.
pwd는 print working directory의 약자입니다. 여기서 말하는 디렉토리(directory)는 폴더라고도 합니다. CLI에서 폴더를 열거나 닫으면서 이동하면, 현재 위치가 헷갈릴 수 있습니다. 이 때 명령어 pwd를 입력하고 Enter(엔터 키)를 누르면, 컴퓨터는 현재 작업중인 폴더의 위치를 출력합니다.
CLI에서 폴더를 생성하기 위해 사용하는 명령어인 mkdir은 make directories의 약자로, 폴더를 만들라는 명령을 컴퓨터에 전달합니다. 명령어 mkdir은 생성할 폴더의 이름을 함께 입력해야 합니다. CLI에서는 명령어와 폴더의 이름을 Space(스페이스 키)로 구분합니다.
mkdir HelloWorld
명령어 ls는 list의 약자로, 특정 폴더에 포함된 파일이나 하위 폴더의 리스트를 출력합니다.
명령어 cd는 change directory의 약자로, 프롬프트로 상호작용하는 폴더를 다른 폴더로 변경한다는 의미합니다.
touch : 파일 생성하기
파일(File)은 서류철이라는 뜻입니다. 컴퓨터나 스마트폰 등 전자기기에서 문서의 형태로 작성된 모든 것을 파일이라고 합니다. 그 중에서 가장 쉽게 접할 수 있는 파일은 텍스트(text) 파일입니다.
touch hi.txt
CLI에서는 간단한 명령어로 파일의 내용을 확인할 수 있습니다. 명령어 cat으로 GUI를 이용해 작성한 내용을 확인합니다.
cat hi.txt
명령어 rm은 폴더나 파일을 삭제할 때 사용합니다.
rm by.txt
ls
# by.txt가 삭제 된 채 다른 파일,폴더들이 보인다.
명령어 rm은 단일 파일을 삭제할 수 있다. 만약 폴더를 삭제하려면 옵션을 이용해야 한다. 사용할 수 있는 옵션은 r과 f이다.
rm -rf bye
ls # bye폴더가 삭제된다.
* 옵션 r은 "recursive"를 뜻하고, 옵션 f는 "force"를 뜻한다. 옵션 r은 폴더를 지울 때 사용하고, 옵션 f는 질문을 받지 않고 지울 때 사용한다.
명령어 mv를 이용하면, 폴더나 파일의 이름을 변경할 수도 있다.