티스토리 뷰

CLI(Command Line Interface)

CLI(Command Line Interface)는 입력하는 글자와 출력하는 글자로 컴퓨터와 소통하는 것이다. 보통 우리는 일상생활에서 CLI보다는 GUI를 사용한다.

컴퓨터에게 원하는 작업을 시키려면 명령을 해야 한다.
우리가 컴퓨터를 킬 때부터 버튼을 클릭하는 과정의 연속이다. 본체의 스위치를 누르고(Hardware Interface) 바탕화면에서 인터넷 아이콘, 폴더 아이콘을 찾아서 더블클릭하고, 마우스 오른쪽을 클릭하여 새 폴더를 만들 수 있고, 텍스트문서를 만들 수 있고, 파일을 드래그하여 옮길 수 있다(GUI, Graphic User Interface). 컴퓨터를 처음 보는 사람도 보면 따라할 수 있을 정도로 직관적이고 편하다.

그러나 대부분의 프로그램은 서버를 사용하게 될텐데, 아마존 웹 서비스(AWS)의 경우 4000평이 넘는 대규모 데이터센터를 29개가 넘게 가지고 있고, 데이터센터에는 최소 5만개 이상의 컴퓨터들이 설치된다. 이렇게 수많은 컴퓨터들에게 GUI를 적용하기 위해 I/O소스(키보드, 마우스, 모니터)를 설치하는 것은 불가능하고 비효율적이다.
또한 많은 사람들이 이용하는 서비스의 서버는 24시간 365일 접근 가능해야 한다. 서버컴퓨터 전원이 나갔다거나 오류가 있을 때, 데이터센터에 가서 내가 사용하는 서버컴퓨터를 찾아 직접 확인을 하고 조치하는 것은 시간이 걸린다.

CLI를 이용하면 내가 어디에 있든 서버컴퓨터로 접속할 수 있다. 나의 모니터로 서버컴퓨터와 소통할 수 있는 것이다. 그래서 수많은 현직 개발자들이 이 방법으로 서버컴퓨터와 소통을 한다. 대부분의 서버컴퓨터는 무료로 이용할 수 있는 Linux가 설치되어 있다. 또한 리눅스 터미널은 GUI가 개발되기 전부터 사용되었기 때문에 GUI로 할 수 있는 작업은 모두 CLI로 할 수 있다. Linux에서 CLI를 다루는 방법은, 개발자가 되길 원하는 사람이라면 반드시 학습해야 한다.

prompt


컴퓨터에 터미널이 있다. 맥북의 터미널 아이콘에 prompt가 그려져있다. prompt는 CLI의 명령줄 대기모드를 가리킨다. 터미널을 켜면 입력을 기다리고 있는데, 우리가 명령어를 입력할 수 있는, 키보드의 입력을 확인하고 편집할 수 있는 이 한 줄의 공간을 prompt라고 한다.

pwd를 입력했더니 다음줄에 /Users/jeongwon이 출력됐다. 컴퓨터에게 명령을 내리고 현재 위치를 출력하라는 임무를 수행했다.

명령어(macOS기준)

pwd

print working directory. 현재 위치를 출력한다.

open

현재 위치의 GUI를 연다.

ls

list. 현재 위치의 폴더와 파일 리스트를 출력한다.
-a 옵션을 입력하면 숨김파일까지 모두 출력하고, -l을 입력하면 폴더와 파일들의 세부정보를 같이 출력한다.

> ls -l 
drwxr-xr-x 생략 18:03 folder1
-rw-r--r--@ 생략 15:58 hi.txt

위와 같이 알 수 없는 문자들과 생성한 사람, 생성시간, 이름 등이 출력된다. 제일 앞글자가 d로 시작하면 폴더이고 -로 시작하면 파일이다.

mkdir

make directory. 현재 위치에 폴더를 만든다.

cd

change directory. 위치를 바꾼다. 다른 폴더로 이동한다.

jeongwon@Jeongwonui-MacBookAir ~/Documents
> cd codestates
jeongwon@Jeongwonui-MacBookAir ~/Documents/codestates
> cd ..
jeongwon@Jeongwonui-MacBookAir ~/Documents

cd 폴더명을 하면 현재 위치의 하위에 있는 해당폴더로 이동할 수 있다. cd ..은 상위 폴더로 이동하는 커맨드이다.

touch

파일을 생성한다.

> ls
folder1 hi.txt
> touch hello.txt
> ls
folder1 hi.txt hello.txt

cat

concatenate. 파일의 내용을 보여준다.

mv

move. 폴더나 파일의 위치를 이동시키거나, 이름을 바꿀 수 있다.

> mv hello.txt bye.txt #텍스트문서 이름을 hello에서 bye로 변경
> mv hello.txt folder1/ #hello.txt를 folder1폴더로 이동

rm

remove. 폴더나 파일을 삭제한다.

> rm hi.txt #파일 삭제
> rm -rf folder1 #폴더 삭제

폴더를 삭제하기 위해서는 -rf옵션을 추가해야 한다.
CLI에서 삭제하면 휴지통으로 가지 않고 즉시 삭제된다.

 

>  touch myText.txt
>  ls
myText.txt
>  mkdir hello world
>  ls
hello      myText.txt world # hello폴더와 world폴더 각각 생성
>  rm -rf hello world
>  ls
myText.txt
>  mkdir hello\ world # hello world폴더 생성
>  ls
hello world myText.txt
>  rm -rf hello\ world
>  ls
myText.txt

폴더명과 파일명에 공백 또는 특수문자를 입력할 때에는 백슬래시()를 먼저 입력해야 한다.

텍스트에디터 nano

CLI환경에서 텍스트파일을 편집할 수 있는 에디터이다. vim, vi와 같은 에디터가 유명한데 nano라는 에디터가 사용하기가 쉬워서 초보자에게 좋다. 그리고 대부분의 리눅스환경에 nano가 설치되어 있다. AWS와 같은 원격 서버 환경에서 텍스트 편집을 할 줄 알아야 한다.

> nano 파일이름

위 코드로 파일을 생성하거나 들어가서 편집할 수 있다.

 

반응형
댓글