본문으로 바로가기


CLI (Command Line Interface)

node.js 를 활용하기 위해서는 명령어 기반 인터페이스에 익숙해져야 한다.


front-ui 를 다루는 입장에서 이 인터페이스는 정말 낯설다. 하여 이렇게 포스팅하며 개인적으로 공부해 본다.


일반적으로 CMD는 Window 운영체제에서 기본으로 제공하는 명령어 기반 인터페이스 도구이다.

window키 + R 을 누르고 cmd를 입력하면 CMD창이 실행된다. CMD 창에 ipconfig를 입력한 후 엔터를 누르면 IP Configuration을 확인할 수가 있다. 즉, 컴퓨터에 연결된 IP Address와 인터넷 연결정보를 확인할 수가 있다.


그리고 CMD 도구를 대체할 수 있는 CLI로는 마이크로소프트사에서 개발한 확장 가능한 명령어 기반 인터페이스로

PowerShell 이 있다. 이 또한 Window키 + R 을 누른 후 powershell을 입력하면 PowerShell 창이 나타난다.

또한 Git 전용 CLI 도구인 Git Bash가 있는데, 이는 Git을 설치해야만 사용가능하며, CMD와 PowerShell 에서 지원하지 않는 리눅스 명령어도 사용할 수 있다는 장점이 있다.


지금부터 사용하는 CLI 명령어는 Git Bash 를 통해 입력한 명령어이므로 CMD,PowerShell 사용시 주의를 요합니다.




기초 명령어


$ whoami
  • 명령어 의미 그대로 사용 중인 운영체제에 로그인한 사용자 정보를 출력한다.



$ clear
  • 이 명령어 역시 의미대로 그동안 실행했던 명령어와 명령어에 따른 결과 출력들이 깨끗하게 삭제된다.



$ exit
  • exit 를 입력하면 CLI 도구가 종료된다. (여기선 Git Bash 가 종료되겠죠...ㅋ)




디렉터리 이동하기 및 디렉토리 생성하기


$ cd Desktop
  • 현재 위치에서 다른 디렉터리로 이동하기 위해서 cd(Change Directory) 명령어를 입력한 후 디렉터리 이름을 입력한다.



$ cd ~
  • 물결표(~)는 현재 위치와 상관없이 CLI 도구를 처음 실행했을 때의 위치로 돌아가려할 때 디렉터리 이름 대신에 ~ 을 사용한다.



$ mkdir study
  • mkdir 은 make directory의 약어로 새로운 디렉터리를 생성하고자 할때 사용되는 명령어이며, 그 옆에는 새로운 폴더이름을 작성한다.



$ mkdir css js images include
  • mkdir 명령어 뒤에 생성할 디렉터리 이름을 공백으로 구분하여 나열하면 여러 개의 폴더를 한 번에 생성 가능하다.



$ cd ..
  • 현재 디렉터리에서 바로 상위 디렉터리로 이동하기 위해서 cd 명령어 뒤에 이중 점(..)을 입력한다.



$ cd ../..
  • 상위에서 상위의 디렉터리로 이동하려 할때는 슬래시(/)로 구분하여 이중 점을 두번 입력한다.





파일 생성하기, 목록 출력 및 이동하기


$ touch index.html

새로운 파일을 생성하고자 하는 디렉터리로 이동한 후 파일을 생성하는 명령어인 touch 를 사용하여 파일명을 입력하면 해당 파일이 생성된다. 파일을 생성하는 데 명령어 기반 인터페이스가 불편할지도 모르지만 여러개의 파일을 한꺼번에 생성할 때는 편리하게 사용할 수 있다.  

( $ touch style.css app.js index.html ) mkdir 과 동일하게 공백으로 구분하여 입력한다.




$ echo 'var jaehee = {};' > app.js

내용이 없는 파일을 생성하는 touch 명령어와는 달리 내용을 포함한 파일을 생성할 수 있는 echo 명령어를 사용하고 명령어 뒤에 코드를 입력한 후 > 기호뒤에 생성할 파일 이름을 입력하여 실행하면 내용이 포함된 파일을 생성할 수 있다.

그리고 > 기호 대신 >> 기호를 사용하면 파일의 기존 내용 뒤에 새로운 내용을 추가할 수가 있다.

ex) $ echo 'console.log(typeof jaehee);' >> app.js



$ ls
  • ls (List의 약어) 명령어를 사용하여 현재 위치에서의 디렉터리에 들어있는 파일 목록들을 확인할 수가 있다. 
  • 파일 이름이나 폴더이름들은 가로 방향으로 나열되면서 출력된다.



$ ls -l
  • ls 명령어 뒤에 옵션 플래그인 대쉬(-)와 소문자 L을 입력하여 실행하게 되면 파일 사용권한, 소유자, 그룹, 크기, 날짜, 시간등의 상세한 정보가 출력된다.



$ mv style.css css/style.css
$ mv app.js js/app.js
  • 파일을 다른 디렉터리로 옮기고자 할때는 mv(move) 명령어 뒤에 옮기기 전의 파일 경로 및 파일이름과 공백으로 구분한 후 옮기고자 하는 파일 경로 및 파일 이름 순으로 입력한 후 실행한다



$ ls css/
$ ls js/
  • 현재 디렉터리의 하위 디렉터리 파일 목록을 확인하고자 할 때 ls 명령어 뒤에 하위 디렉터리 이름을 입력하면 된다.



$ pwd
  • pwd (print working directory) 명령어는 현재 작업 중인 디렉터리의 절대 경로를 출력한다.






파일명과 디렉터리(폴더명) 이름 바꾸기 및 파일 내용 확인하기기


$ mv images img
$ mv index.html home.html
  • 위의 파일 및 디렉터리를 옮길 때 사용하는 방법과 유사하며 mv 명령어 뒤에 "바꾸기 전 파일명 및 폴더명 + 바꾼 후 파일명 및 폴더 이름" 순으로 입력한다.



$ cat index.html
  • cat (Concatenate Display) 명령어 뒤에 파일명을 입력하면 파일 내용이 출력된다.






파일 및 디렉터리 복제하고 삭제하기


$ cp css/style.css base.css
  • cp(copy) 명령어 뒤에 복사할 파일이름과 복사한 파일 이름을 공백으로 구분하여 입력한다.
  • 경로를 지정하여 다른 위치에 복사하는 것도 가능하다.



$ cp -R css/ sass/
  • 파일과 함께 디렉터리를 통째로 복사하는 것도 가능하다. cp 명령어 뒤에 옵션 값으로 -R 을 입력한 후 복제할 디렉터리 이름을 입력한다. 
  • 디렉터리 역시 위치를 지정하여 복제가 가능하다.



$ rm base.css
  • 파일을 삭제할 때는 rm(remove) 명령어 뒤에 삭제할 파일이름을 입력한다. 
  • 여러 파일을 한 번에 삭제할 때는 공백으로 구분하여 삭제할 파일 이름을 나열하면 된다.
  • 주의 : 명령어 기반 인터페이스에서 삭제한 파일은 휴지통으로 이동하지 않으므로 삭제할 때는 주의가 필요.



$ rmdir img
  • 폴더(디렉터리)를 삭제할 때는 rmdir 명령어 뒤에 삭제할 디렉터리 이름을 입력하며 여러 개의 디렉터리를 삭제할 때는 공백으로 구분하여 나열하면 된다. 
  • 삭제하려는 폴더안이 비어 있다면 바로 삭제가 되지만 폴더 안에 파일이 존재한다면 Directory not  empty 메시지가 출력된다. 



$ rm -rf app
  • 비어있지 않은 폴더를 통째로 삭제할 때는 rm 명령어를 사용하여 옵션 값으로 -rf 입력하고 그 뒤에 폴더명을 입력한다.




$ rm --help
  • 옵션 값은 명령어 마다 다르기 때문에 위와 같은 코드를 사용하여 rm 명령어의 도움말을 확인할 수 있다.
  • 옵션값인 -r 은 콘텐츠를 포함한 디렉터리를 삭제하며 -f 는 경고 메시지를 무시하고 강제 실행하는 옵션 값이다.
  • 하여 -rf 는 콘텐츠를 포함한 디렉터리를 삭제하면서 경고없이 강제 실행하겠다는 의미이다.



$ ls -a
  • ls 명령어 뒤의 옵션 값인 -a 는 숨겨진 파일까지 표시해 준다.



$ ls -1
  • -1 옵션 값은 기본적으로 가로로 나열되는 목록을 세로 방향으로 바꾸어 주는 옵션 값이다.



$ ls -p
  • -p 옵션 값은 파일 유형(File type)을 구분할 수 있도록 표시해주는데 폴더는 이름 뒤에 슬래시(/)가 붙어 있기 때문에 쉽게 폴더(디렉터리)라는 것을 쉽게 알 수 있게 해준다.



$ man ls
  • ls 메뉴얼을 모두 보여준다. 메뉴얼에서 빠져 나오려면 shift + q 를 누른다.





기타 명령어


$ mkdir sass css js && touch index.html
$ mkdir common page page/part



$ tree /f /a > out.txt   // 파일명과 모든 디렉터리 구조를 텍스트파일로 
$ tree /f > out.txt
$ tree /a > out.txt