##CLI 기초
###목표
- 리눅스 터미널을 실행할 수 있다
- 터미널에서 기본적인 명령어를 사용할 수 있다
- 명령어를 사용할 때 등장하는 키워드에 대해 이해할 수 있다
- 절대 경로와 상대 경로 차이를 이해할 수 있다
- 텍스트 에디터 nano를 이용해 파일을 수정하고, 저장할 수 있다
CLI(커맨드 라인 인터페이스)는 명령어를 입력해 컴퓨터를 조작하는 방식을 말한다.
GUI(그래픽 유저 인터페이스)는 사용자가 화면을 통해 컴퓨터와 소통하는 방식을 말한다.(대부분의 PC가 GUI 채택)
컴퓨터를 조작하기 위한 입/출력을 I/O라고 표기한다.
Mac OS에서 Terminal를 실행하는 법
- 런치패드에서 최상단 돋보기로 Terminal 검색
- command + space 키 동시입력 spotlight로 Terminal 검색
Prompt
pwd: 현재 위치 확인하기
mkdir: 새로운 폴더 생성하기 make directories의 약자이다. 명령어와 폴더의 이름을 space로 구분한다. 폴더에 공백을 추가하고 싶다면 "\"를 추가한다
ls: 특정 폴더에 포함된 폴더나 파일 확인하기. list의 약자이다.
명령어 ls에는 자주 사용하는 옵션인 l과 a가 있다.
- ls -l: 출력되는 폴더나 파일의 포맷을 전부 표현한다. d 혹은 -로 시작되어 나오는데, d는 폴더를 의미하고 -는 파일을 의미한다. d로 나온 폴더는 cd로 진입할 수 있지만, 파일은 진입할 수 없다.
- ls -a: 숨어있는 파일이나 폴더를 포함한 모든 항목을 터미널에 나타냄 all의 약자
- ls -al 또는 ls -la
open . : 현재 위치를 GUI로 실행하는 명령어
cd: 폴더 진입하기 (작성 중 tab을 하면 자동 완성)
# '#' 기호는 설명을 위해 사용되었습니다.
# pwd를 이용해 현재 위치를 확인합니다.
pwd
# [사용자명]은 처음 OS를 설치할 때 입력한 사용자 이름입니다.
# (Ubuntu) /home/[사용자명]
# (macOS) /Users/[사용자명]
# ls를 이용해 현재 위치의 모든 폴더와 파일을 확인합니다.
ls
# cd를 이용해 폴더 helloWorld로 진입합니다.
cd helloWorld
# pwd를 이용해 현재 위치를 확인합니다.
pwd
touch: 파일 생성하기
현재 텍스트 파일에 본인의 이메일을 작성하고 다음 명령어로 진행하였다.
cat: 파일의 내용을 터미널에 출력하기
지금은 GUI를 이용해서 hi.txt를 텍스트 편집기로 내용을 추가했지만, 추후에 터미널 에디터인 nano를 이용해보도록 한다.
다음 명령어를 연습해 보기 위해서 다음과 같이 진행하였다.
rm: 폴더나 파일 삭제하기 rm으로 삭제한 폴더나 파일은 휴지통으로 이동하지 않고 바로 삭제된다.
폴더를 삭제하기 위해서는 ls에서 사용한 것처럼 - 옵션을 이용해야 한다.
- rm -rf: 폴더 삭제
mv: 폴더나 파일의 이름 변경, 또는 폴더나 파일의 위치 옮기기
삭제했던 bye폴더와 bye.txt를 재 생성 후 진행하였다.
mv [폴더나 파일의 이름] [도착 폴더의 이름] 형태로 입력한다.
이름을 변경하고 싶다면
mv [폴더나 파일의 이름] [변경할 이름] 형태로 입력한다
cp: 폴더나 파일 복사하기 copy의 약자이다.
먼저 파일을 복사할 때 cp [원본 파일 이름] [복사할 파일의 이름]으로 진행한다.
폴더를 복사하기 위해서는 rm과 마찬가지로 -rf 사용이 필요하다.
"." 은 현재 폴더 ".."은 이전 폴더를 말한다. 먼저 이전 폴더인 hello로 돌아간 후 cp를 이용해서 bye폴더를 hi라는 이름의 폴더로 복제해보자.
절대 경로: "/" 루트 폴더 속 폴더를 순차적으로 진입하면서 나오는 구문을 절대 경로라고 한다.
ex) (/Users/[username]/helloWorld/hello/)
상대 경로: 특정 폴더, 파일의 현재 위치를 기준점으로 나타낸다. "."은 현재 폴더 ".."는 상위 폴더, "/"는 폴더 내부를 말한다. 따라서 "./"는 현재 폴더 내부를 말하고 있는 것이다.
Root 폴더 "/"는 관리자 영역이기 때문에 "읽기-영역"으로 파일을 생성, 삭제, 수정할 수 없다.
whoami: 현재 로그인된 사용자를 확인
사용자 권한은 해당 명을 가진 폴더 내에서 자유롭게 이용이 가능하다.
사용자 폴더 경로는 "~"를 이용해서 "~/"로 표현한다.(루트 폴더에서 사용자 폴더까지의 경로를 압축)
sudo: 관리자 권한을 일시적으로 획득하는 명령어
sudo mkdir로 폴더를 생성했다면 해당 폴더의 권한은 사용자가 아닌 관리자 권한에 속한다
VSC 같은 GUI 에디터를 사용하는 것이 아닌 터미널에서 에디터를 따로 사용하는 이유
AWS와 같은 원격 서버 환경에서는 gui를 이용보다 cli형태로 주고받는 것이 유용하기 때문
터미널 nano를 실행하는 방법
- nano [실행할 파일]
- 그냥 nano만 입력
(A): 파일 이름 안내
(B): 파일 편집 화면, 텍스트 파일 편집 가능
(C): 사용에 필요한 단축키 ^는 control를 말한다
^X 파일 편집 후 해당 키를 입력하면 저장할 것인지 묻는다. 해당 기능으로 종료 시 저장을 할 수 있다. 혹은 ^0 WriteOut을 이용해 저장할 수 있다.
## 패키지 매니저
### brew 명령어
- brew 자체 업데이트: brew update
- 업데이트 필요한 파일 조회: brew outdated
- 프로그램 업그레이드(업데이트): brew upgrade 프로그램 이름
- 프로그램 검색: brew search 검색어
- 프로그램 정보 확인: brew info 프로그램 이름
- 프로그램 설치: brew install 프로그램 이름
- 프로그램 삭제: brew uninstall 프로그램 이름
- 설치된 프로그램 보기: brew list
## JS runtime 학습하기
크롬, 사파리 같은 웹 브라우저가 runtime이라고 할 수 있다. 즉 어떤 프로그램이 동작하는데 프로그램이 동작하는 곳을 말한다.
node.js의 등장으로 js가 브라우저가 아닌 곳에서도 실행할 수 있게 되었다. -> js를 이용해서 server와 같은 다른 프로그램을 만들 수 있다.
### 목표
- nvm, Nodejs, npm 설치
- 명령어 node를 이용해 Js파일 실행할 수 있어야 한다.
- 스프린트 시작 전 package.json 파일을 확인하고 npm install를 사용할 수 있다.
CLI와 nano를 이용해 test폴더를 생성하고 그 안에 runnode.js라는 파일을 만들어 보았다.
해당 파일을 터미널에서 node runnode.js라고 입력한다면
이와 같이 출력되는 것을 확인할 수 있다.
### nvm 설치 (다양한 node 버전 관리 프로그램)
$ wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash
터미널에 해당 코드 붙여 넣기
설치 후 nvm -v 명령어가 실행되지 않는다면, 설정 변경을 해준다.
$ nano ~/.bashrc
$ export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
nano에서 해당 내용 복사 후 저장
$ source ~/.bashrc
설정 로딩을 위해 다음 명령어를 실행한다. ↑
그다음 node를 설치한다.
터미널에서
$ nvm install --lts
로 lts버전 node를 설치
만약 작업 중 다른 node 버전을 사용해야 하는 경우, 삭제 후 해당 버전 설치 -> 이 과정을 지속한다면 코드에 집중하지 못할 것이다.
하지만 NVM(node version manager)를 이용해서 삭제할 필요 없이 경우에 따라 node버전을 바꾸는 것을 해보도록 한다.
nvm에 다음과 같이 명령어 입력↓
$ nvm ls
특정 버전의 node를 설치하고 싶다면
$ nvm install 12.18.3
설치 완료 후 node 버전을 변경하고 싶다면
$ nvm use [원하는 버전]
으로 입력한다
### npm & package.json
npm node.js의 앱스토어라고 생각하면 된다. 필요한 모듈들이 모여있다.
npm 모듈에 대한 정보를 담은 곳을 package.json이라고 부른다.(또한 다른 사람에게 이 프로젝트를 알려주어야 하기 위해 사용)
Mac OS에는 brew가 있듯 Node Js에는 npm이 있다.
package.json 항목
- devDependencies -> 프로그램 실행과는 관련 없는 의존성 모듈로 개발에 필요한 모듈이다.
$ npm install mocha --save-dev
위와 같이 설치한다면 --save-dev로 인해 자동으로 devDependencies도 함께 추가된다.
- dependencies -> 이 프로젝트가 돌아가기 위해 반드시 필요한 모듈이 들어있다.
- scripts -> CLI에서 사용 가능한 명령이 기술되어 있다. "npm run <스크립트 이름>" 으로 실행
### CLI 명령어 더 알아보기
터미널에서 ls -l을 입력하면 이런 정보들이 나오게 된다.
drwx------
"d" 는 폴더를 의미한다. 그외 정보로는
- 'r'은 read의 약자로 읽기 권한을 의미합니다. 파일 및 폴더안에 있는 데이터, 속성, 서브 폴더 등에 접근이 가능합니다.
- 'w'는 write의 약자로 쓰기 권한을 의미합니다. 파일 및 폴더의 속성과 데이터를 변경할 수 있습니다.
- 'x'는 execute의 약자로 실행 권한을 의미합니다. 해당 파일을 실행하여 사용할 수 있습니다.
- '-'는 권한 없음을 나타낼 때 쓰입니다.
예를 들면 rwx는 읽기, 쓰기, 실행권한이 전부 있는 것을 말하고, r-x는 읽기와 실행은 가능하지만 쓰기 권한이 없다는 것을 말한다. r--는 오직 읽기 권한만 있는 것을 말한다.
이와 관련한 리눅스 퍼미션 강의 !참고!
https://tutonics.com/2012/12/linux-file-permissions-chmod-umask.html
위에서 rm, cp등을 사용할 때 -r, -f, -rf을 사용한 것을 기억할 것이다.
상세하게 설명하자면, "r"은 recursive의 약자로 특정 행동을 순환반복한다. "f"는 force의 약자로 특정 행동을 강제한다.
rm을 예로 들자면 파일을 담고있는 폴더는 -r 를 붙여주면 삭제할 수 있다. 여기에 -f 까지 덧붙여 "-rf"를 사용한다면 보호되거나 존재하지 않는 파일도 강제로 삭제할 수 있다. 따라서 사용에 주의가 필요하다.
참고 사이트
여러가지 명령어들을 직접 터미널에서 따라해보자.
cat 대신 사용 가능한 명령어
cat는 파일의 내용을 보여주지만 내용 전부를 보여주기 때문에 긴 내용의 파일 등을 이용할 때 유용하지 않다.
다음과 같은 명령어가 있다.
head 를 입력하면 해당 파일 내 머릿말을 간단하게 확인할 수 있다. + head [파일명] > [원하는 파일명] 으로 입력시 해당 파일이 원하는 파일명으로 복제된다.
+ 커맨드 사용법을 알기 위해
'BEB' 카테고리의 다른 글
[Week3] 자료구조 기초 (0) | 2022.03.14 |
---|---|
[Week2-4] DOM (0) | 2022.03.11 |
[Week2-3] CSS lay out, selector (0) | 2022.03.10 |
[Week2-2]Git (0) | 2022.03.08 |
[Week1] HTML, CSS기초 (0) | 2022.03.02 |