개인적으로 개발을 진행했을 때 CLI라는 용어를 많이 듣게 되고, 클라우드 플랫폼(e.g. AWS) 공식문서에서 CLI에서 어떤 입력을 통해 어떤 작업을 수행할 수 있다는 것을 상세하게 설명한 것을 보았습니다.
그리고, git push origin main
git add .
등을 통해 CLI라는 용어를 몰랐더라도 그동안 자연스럽게 CLI를 사용했던 나를 발견할 수 있습니다.
수학을 공부할 때 본격적으로 수학을 학습하기 이전에 이해하기 위해 필요한 숫자를 학습하는 것처럼, 개발을 공부할 때 shell에 대한 내용에 대해 학습하면 좋을 것 같아 학습한 내용을 정리해보려고 합니다. 개인적으로 학습한 내용을 기반으로 작성된 것이기 때문에 잘못된 내용이 있거나 개선해야 될 점등을 말씀해주시면 참고하고 수정하겠습니다.
Command Line Interface (명령줄 기반 인터페이스)
CLI란 Command Line(명령줄) 기반으로 명령을 내리고, 응답을 받는다는 의미입니다. 대표적으로 위의 이미지와 같이 윈도우에서 명령프롬프트가 있습니다.
Grapic User Interface
GUI는 Grapic User Interface의 줄임말이고, 마우스와 같은 그래픽 요소를 이용해서 명령을 내리고 응답을 받는다는 의미입니다. 대표적으로 위의 이미지와 같이 윈도우에서의 탐색기가 있습니다.
개발 공부를 학습할 때 주로 unix-like 명령어를 접하고, 최근에는 윈도우에서도 관련된 명령어를 사용할 수 있도록 지원해주기 때문에 여기에서는 unix-like shell 기반을 기준으로 설명하겠습니다.
~
Tilde
틸드(물결표시)라고 부르며, shell에서는 최상위 디렉토리(유저 디렉토리)를 의미합니다.
/
Delimiter
슬래시라고 부르며, shell에서는 디렉토리(경로)를 구분하기 위해 사용합니다.
$
현재 shell에서 입력을 받을 준비가 되었다는 의미입니다.
*
별표(asterisk, 에스터리스크)라고 부르며, shell에서는 '모든'이라는 의미로 사용됩니다.
위를 종합하면 shell에서 command line의 왼쪽에 보이는 devryan@ubuntu-bionic:~$
은 " 내가 사용하고 있는 서버이름(컴퓨터 이름)
은 ubuntu-bionic이고 유저이름
은 devryan이다. 그리고, 현재 경로
는 해당 서버(컴퓨터)의 최상단(유저)디렉토리이며, 입력을 받을 준비가 되어있다($
) "라는 의미입니다.
pwd
Print Working Directory
현재 경로를 절대경로로 보여줍니다.
ls
List Segment
.
은 현재 디렉토리, ..
은 상위디렉토리를 의미합니다.cd
Change Directory
directory 단위로 경로를 변경할 수 있습니다. ( cd ..
상위 디렉토리로 이동)
mkdir
Make Directory
새 폴더를 생성합니다.
touch
파일을 생성합니다.
mv
move
$ mv {이동할 파일경로} {이동시킬 파일경로}
$ mv ../style.css .
)mv app.js main.js
mv 내부적인 동작으로 인해 이동 시키는 기능 뿐 아니라 app.js를 main.js라는 이름으로 변경이 가능합니다.cp
copy
cp {원본 파일경로} {복사할 파일경로}
cp app.js ../
)rm
remove
rm {파일경로}
*
를 활용하면 조건에 맞는 파일을 매치해서 삭제할 수도 있습니다.rm server.*
현재 경로에서 server라는 이름을 가진 모든 파일을 지움 )-r
recursive
rm -r {디렉토리 이름}
-rf
rm -rf
-r
만으로도 충분히 동작하지만, -r
에서 지울 때 경우에 따라 지울지 물어보고 진행할수 있으며, 물어보지 않고 강제로 모두 삭제하기를 원할 때 -rf
를 사용합니다.cat
cat {파일 경로}
vim은 CLI에서 사용할 수 있는 대표적인 텍스트 에디터이며, 소스코드 작성으로도 활용할 수 있습니다.
mode를 기반으로 동작합니다.
그래서, 해당 기능을 사용하기 위해서는 해당하는 mode로 진입 후 사용해야 합니다.
commands
vi {파일 경로}
해당 파일을 vim으로 open합니다.
vim 에디터
esc
escape
normal 모드로 진입합니다.
normal 모드
:
:
를 통해 command모드에 진입한 것을 확인할 수 있습니다.i
insert
-- INSERT --
를 통해 insert 모드에 진입한 것을 확인할 수 있습니다.command 모드
w
wq
q!