본문 바로가기

BEB

[Week2-1] CLI 기초

##CLI 기초

###목표

  • 리눅스 터미널을 실행할 수 있다
  • 터미널에서 기본적인 명령어를 사용할 수 있다
  • 명령어를 사용할 때 등장하는 키워드에 대해 이해할 수 있다
  • 절대 경로와 상대 경로 차이를 이해할 수 있다
  • 텍스트 에디터 nano를 이용해 파일을 수정하고, 저장할 수 있다

CLI(커맨드 라인 인터페이스)는 명령어를 입력해 컴퓨터를 조작하는 방식을 말한다.

GUI(그래픽 유저 인터페이스)는 사용자가 화면을 통해 컴퓨터와 소통하는 방식을 말한다.(대부분의 PC가 GUI 채택)

컴퓨터를 조작하기 위한 입/출력을 I/O라고 표기한다.

 

Mac OS에서 Terminal를 실행하는 법

  1. 런치패드에서 최상단 돋보기로 Terminal 검색
  2. command + space 키 동시입력 spotlight로 Terminal 검색

Prompt

키보드의 입력을 확인하고 편집할 수 있는 한 줄의 공간을 "프롬프트"라고 한다

pwd: 현재 위치 확인하기

 

mkdir: 새로운 폴더 생성하기 make directories의 약자이다. 명령어와 폴더의 이름을 space로 구분한다. 폴더에 공백을 추가하고 싶다면 "\"를 추가한다

 

ls: 특정 폴더에 포함된 폴더나 파일 확인하기. list의 약자이다.

ls로 이전에 생성한 helloworld를 찾을 수 있다.

명령어 ls에는 자주 사용하는 옵션인 l과 a가 있다.

  • ls -l: 출력되는 폴더나 파일의 포맷을 전부 표현한다. d 혹은 -로 시작되어 나오는데, d는 폴더를 의미하고 -는 파일을 의미한다. d로 나온 폴더는 cd로 진입할 수 있지만, 파일은 진입할 수 없다.

ls -l

  • ls -a: 숨어있는 파일이나 폴더를 포함한 모든 항목을 터미널에 나타냄 all의 약자

ls -a

  • ls -al 또는 ls -la

{"originWidth":1102,"originHeight":622,"style":"alignCenter","caption":"ls -al

open . : 현재 위치를 GUI로 실행하는 명령어

cd: 폴더 진입하기 (작성 중 tab을 하면 자동 완성)

# '#' 기호는 설명을 위해 사용되었습니다.
# pwd를 이용해 현재 위치를 확인합니다.
pwd
# [사용자명]은 처음 OS를 설치할 때 입력한 사용자 이름입니다.
# (Ubuntu) /home/[사용자명]
# (macOS) /Users/[사용자명]

# ls를 이용해 현재 위치의 모든 폴더와 파일을 확인합니다.
ls
# cd를 이용해 폴더 helloWorld로 진입합니다. 
cd helloWorld
# pwd를 이용해 현재 위치를 확인합니다.
pwd

적용 화면

touch: 파일 생성하기

hi.txt가 생성된 화면

현재 텍스트 파일에 본인의 이메일을 작성하고 다음 명령어로 진행하였다.

 

cat: 파일의 내용을 터미널에 출력하기

지금은 GUI를 이용해서 hi.txt를 텍스트 편집기로 내용을 추가했지만, 추후에 터미널 에디터인 nano를 이용해보도록 한다.

 

다음 명령어를 연습해 보기 위해서 다음과 같이 진행하였다.

hello폴더 내 bye폴더와 bye.txt파일을 만든 모습

rm: 폴더나 파일 삭제하기 rm으로 삭제한 폴더나 파일은 휴지통으로 이동하지 않고 바로 삭제된다.

bye.txt가 삭제된 것을 확인할 수 있다.

폴더를 삭제하기 위해서는 ls에서 사용한 것처럼 - 옵션을 이용해야 한다.

  • rm -rf: 폴더 삭제

삭제된 것을 확인할 수 있다.

mv: 폴더나 파일의 이름 변경, 또는 폴더나 파일의 위치 옮기기

삭제했던 bye폴더와 bye.txt를 재 생성 후 진행하였다.

mv [폴더나 파일의 이름] [도착 폴더의 이름] 형태로 입력한다.

잘 옮겨진 것을 확인할 수 있다

이름을 변경하고 싶다면

mv [폴더나 파일의 이름] [변경할 이름] 형태로 입력한다

bye -> helloworld로 변경되었다

cp: 폴더나 파일 복사하기 copy의 약자이다.

먼저 파일을 복사할 때 cp [원본 파일 이름] [복사할 파일의 이름]으로 진행한다.

hiComputer.txt로 복사 되었다.

폴더를 복사하기 위해서는 rm과 마찬가지로 -rf 사용이 필요하다.

"." 은 현재 폴더 ".."은 이전 폴더를 말한다. 먼저 이전 폴더인 hello로 돌아간 후 cp를 이용해서 bye폴더를 hi라는 이름의 폴더로 복제해보자.

hi 폴더가 생성됨

절대 경로: "/" 루트 폴더 속 폴더를 순차적으로 진입하면서 나오는 구문을 절대 경로라고 한다.

ex) (/Users/[username]/helloWorld/hello/)

상대 경로: 특정 폴더, 파일의 현재 위치를 기준점으로 나타낸다. "."은 현재 폴더 ".."는 상위 폴더,  "/"는 폴더 내부를 말한다. 따라서 "./"는 현재 폴더 내부를 말하고 있는 것이다.

./를 이용해서 hi폴더로 진입
mv와 ../(상위폴더)를 이용해서 helloworld.txt를 hi폴더에서 George폴더로 이동시켰다.

Root 폴더 "/"는 관리자 영역이기 때문에 "읽기-영역"으로 파일을 생성, 삭제, 수정할 수 없다.

사용자 권한으로는 폴더를 생성할 수 없다

whoami: 현재 로그인된 사용자를 확인

사용자 권한은 해당 명을 가진 폴더 내에서 자유롭게 이용이 가능하다.

사용자 폴더 경로는 "~"를 이용해서 "~/"로 표현한다.(루트 폴더에서 사용자 폴더까지의 경로를 압축)

sudo: 관리자 권한을 일시적으로 획득하는 명령어

sudo mkdir로 폴더를 생성했다면 해당 폴더의 권한은 사용자가 아닌 관리자 권한에 속한다

권한이 George가 아닌 root인 것을 알 수 있다.

VSC 같은 GUI 에디터를 사용하는 것이 아닌 터미널에서 에디터를 따로 사용하는 이유

AWS와 같은 원격 서버 환경에서는 gui를 이용보다 cli형태로 주고받는 것이 유용하기 때문

 

터미널 nano를 실행하는 방법

  1. nano [실행할 파일]
  2. 그냥 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라는 파일을 만들어 보았다.

 

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

lts버전이 설치되었음을 보여준다

특정 버전의 node를 설치하고 싶다면

$ nvm install 12.18.3

설치 완료 후 node 버전을 변경하고 싶다면

$ nvm use [원하는 버전]

으로 입력한다

12.18.3 버전에서
16.14.0 버전으로 바뀌었음을 확인할 수 있다

 

### 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

 

Linux File Permissions, chmod, & umask

Tutonics - Ubuntu and Linux Tutorials, Guides and How-Tos for everyone interested in Ubuntu and the Command Line.

tutonics.com

위에서 rm, cp등을 사용할 때 -r, -f, -rf을 사용한 것을 기억할 것이다.

상세하게 설명하자면, "r"은 recursive의 약자로 특정 행동을 순환반복한다. "f"는 force의 약자로 특정 행동을 강제한다.

rm을 예로 들자면 파일을 담고있는 폴더는 -r 를 붙여주면 삭제할 수 있다. 여기에 -f 까지 덧붙여 "-rf"를 사용한다면 보호되거나 존재하지 않는 파일도 강제로 삭제할 수 있다. 따라서 사용에 주의가 필요하다.

 

참고 사이트

https://www.44bits.io/ko/post/linux-and-mac-command-line-survival-guide-for-beginner#%ED%8C%8C%EC%9D%BC-%EB%94%94%EB%A0%89%ED%84%B0%EB%A6%AC-%EC%A1%B0%EC%9E%91%EC%9D%84-%EC%9C%84%ED%95%9C-%EA%B8%B0%EB%B3%B8-%EB%AA%85%EB%A0%B9%EC%96%B4%EB%93%A4

 

커맨드라인 사용법: 따라하며 배우는 리눅스 명령어와 관습들

프로그래밍이나 서버에 대해서 공부하다 보면 필연적으로 커맨드라인 인터페이스도 함께 입문하게 됩니다. 커맨드라인 인터페이스는 아주 강력하지만, 다양한 관습들과 전제들이 존재하고 있

www.44bits.io

여러가지 명령어들을 직접 터미널에서 따라해보자.

 

cat 대신 사용 가능한 명령어

cat는 파일의 내용을 보여주지만 내용 전부를 보여주기 때문에 긴 내용의 파일 등을 이용할 때 유용하지 않다. 

 다음과 같은 명령어가 있다.

head 명령어

tail 명령어

more 명령어

less 명령어

 

head 를 입력하면 해당 파일 내 머릿말을 간단하게 확인할 수 있다. + head [파일명] > [원하는 파일명] 으로 입력시 해당 파일이 원하는 파일명으로 복제된다.

 

+ 커맨드 사용법을 알기 위해

 

헬프 옵션(-h, –help)으로 사용법 출력하기

'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