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
'Dev Environment > 개발 기타 자료' 카테고리의 다른 글
Reflow or Repaint(or ReDraw)과정 설명 및 최적화 방법 (1) | 2016.03.21 |
---|---|
브라우저 호환성 대응 방안 (0) | 2016.01.28 |
Front-end Developer (0) | 2015.12.30 |
jQuery CLI 에서 다운로드하기 (0) | 2015.09.09 |
네트워크 기초 (0) | 2015.09.01 |