Linux/Ubuntu

[Linux] CLI 기본 명령어 & node.js

디스페어 2021. 12. 26.

콘솔 단축키

  • Shift + PageUp : 상위 페이지 이동
  • Shift + PageDown : 아래 페이지 이동

 

터미널 실행 관련 단축키

  • Ctrl + Alt + T : 터미널 실행
  • Ctrl + Shift + T : 터미널내에서 새로운 탭으로 터미널 실행
  • Ctrl + Shift + N : 터미널내에서 새로운 창으로 터미널 실행
  • Ctrl + Shift + W : 탭으로 실행된 터미널 종료
  • Ctrl + Shift + Q : 현재 터미널 종료
  • Ctrl + Shift + F : 터미널내에서 문자열 검색

 

터미널내에서의 단축키

  • Shift + Ctrl + C : 복사하기
  • Shift + Ctrl + V : 붙여넣기
  • Ctrl + L : 화면 Clear
  • Alt + F1 ~ F12 : 콘솔 이동
  • Alt + (Left / Right) : 이전/다음 콘솔로 이동
  • Ctrl + Scroll Lock : 프로세스 목록보기
  • Shift + Scroll Lock : 메모리상태 정보보기

 

셀 상에서 실행 중인 프로그램을 제어하는 단축키

  • Ctrl + C : 실행 중인 프로그램 중지
  • Ctrl + Z : 실행 중인 프로그램 일시 정지
  • % : 일시 정지된 프로그램 다시 실행

 

bash 상에서 기본 입력 모드인 emacs 스타일일 경우

  • Tab : 자동 완성
  • Ctrl + D : 로그아웃
  • Ctrl + R : 히스토리 찾기
  • Ctrl + S : 키보드 잠그기
  • Ctrl + Q : 잠긴 키보드 풀기
  • Ctrl + M : Enter
  • Ctrl + P : 이전 명령어 (Up)
  • Ctrl + N : 다음 명령어 (Down)
  • Ctrl + L : 화면 지우기 (clear)
  • Ctrl + Y : 버퍼의 내용 붙여넣기
  • Ctrl + A : 입력 라인의 처음으로 이동 (Home)
  • Ctrl + E : 입력 라인의 끝으로 이동 (End)
  • Ctrl + B : 커서를 왼쪽으로 이동 (Left)
  • Ctrl + F : 커서를 오른쪽으로 이동 (Right)
  • Ctrl + XX : 커서를 이전 위치로 이동
  • Ctrl + U : 커서 왼쪽의 문자들을 버퍼에 저장 후 삭제
  • Ctrl + K : 커서 오른쪽의 문자들을 버퍼에 저장 후 삭제
  • Alt + L : 커서 위치에서 문자열 끝까지 소문자로 변환
  • Alt + U : 커서 위치에서 문자열 끝까지 대문자로 변환
  • Alt + T : 두 단어 위치 바꾸기
  • Alt + B : 커서를 다음 단어로 이동
  • Alt + F : 커서를 이전 단어로 이동

 

 

Command-line interface 기본 명령어

pwd
#현재 위치를 확인

mkdir
#새로운 폴더를 생성

ls
#폴더나 파일의 목록을 출력

nautilus
#현재 폴더를 파일 탐색기로 열기

cd
#폴더 진입

touch
#새로운 파일을 생성

cat
#파일의 내용을 터미널에 출력
rm
#폴더나 파일을 삭제

mv
#폴더나 파일의 위치를 이동하거나, 이름을 변경

cp
#폴더나 파일을 복사

sudo
#관리자 권한

/
#루트 디렉토리

~
#홈 디렉토리

 

1. pwd

pwd
#print working directory
#현재 위치 확인할때 사용

 

2. mkdir

mkdir helloWorld 
#make directories
#새로운 폴더 생성하기

#생성할 폴더의 이름을 함께 입력
#폴더 또는 파일의 이름에 띄어쓰기나 특수문자가 있으면, 백슬래시(\)를 이용해 적용
#CLI => 명령어와 폴더의 이름을 스페이스로 구분

 

3. ls

ls #특정 폴더에 포함된 파일이나 폴더 확인하기

list #특정 폴더에 포함된 파일이나 하위 폴더의 리스트를 출력
#ls에서 자두 사용하는 옵션 l, a
#CLI : 특정 옵션을 사용하는 경우 -를 이용
#각 명령어에 포함된 옵션은 명령어 이름만 입력하거나 -h 또는 --help와 같은 옵션을 통해 확인

ls -l #폴더나 파일의 포맷을 전부 표현
#하나의 파일 또는 폴더는 한줄에 출력
#폴더의 경우 cd를 통해 진입 가능

ls -a 
#a => all
#숨어있는 폴더나 파일을 포함한 모든 항목을 터미널에 표시

ls -al
ls -la
#대쉬 뒤에 오는 옵션의 순서는 기능에 영향을 미치지 않음

 

4. nautilus

nautilus .
#폴더를 GUI탐색기로 실행하기

 

5. cd

#change directory

cd helloWorld
#폴더에 진입하기

cd ..
#폴더에서 빠져나오기 (상위 폴더로 이동)

#1. pwd를 사용해 현재 위치 확인
#2. ls를 사용해 폴더 확인
#3. cd를 사용해 폴더에 진입
#4. pwd를 사용해 현재 위치 확인
#5. . => 현재 폴더를 의미
#6. .. => 현재 폴더보다 앞에 있는 폴더를 가리킴

 

6. touch

touch hi.txt
#파일 생성하기

 

7. cat

cat hi.txt
#파일의 내용을 터미널에 출력하기

#여러개의 파일을 뛰어쓰기로 구분해 입력 가능
#이어지는 파일을 순서대로 읽고 터미널에 출력

 

8. rm

rm bye.txt
rm -rf bye
#폴더나 파일 삭제하기

#사용할 수 있는 옵션 r, f
#r => recursive를 의미하며 폴더를 지울 때 사용
#f => force를 의미하며 질문을 받지 않고 지울 때 사용

#파일을 삭제할 때 두 옵션을 같이 사용
#사용자가 생성한 파일을 CLI에서 삭제할 경우 휴지통에 가지 않고, 즉시 삭제

 

9. mv

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

mv bye.txt bye/
#위치 옮기기
#mv 뒤에는 순서대로 <폴더나 파일 이름> <도착 폴더의 이름>을 입력
#마지막 /는 폴더를 대상으로 할 경우 생략 가능

mv bye.txt helloWorld.txt
#이름 변경
#mv 뒤에는 순서대로 <기존 이름> <변경할 이름>을 입력

 

10. cp : 폴더나 파일을 복사

cp helloWorld.txt Fucking.txt
cp -rf bye hi
cp -rf FuckFuckFuck ~/helloWorld/
#copy => 폴더나 파일을 복사할 때 사용
#cp 뒤에는 순서대로 <원본 파일 이름> <복사할 파일 이름>을 입력

#사용할 수 있는 옵션 r, f
#r => recursive를 의미하며 폴더를 복사할 때 사용
#f => force를 의미하며 질문을 받지 않고 복사할 때 사용
#파일을 복사할 때 두 옵션을 같이 사용

#사용자 폴더의 경로는 ~/로 표시
#물결기호(~)는 루트폴더(/)로부터 사용자 폴더(username)까지의 경로를 축약한 형태

 

11. sudo

sudo
#관리자 권한 획득

#절대 경로의 기준점인 루트폴더(/)는 Linux의 관리자 영역
#루트폴더로 이동하여 mkdir릏 이용해 폴더를 생성하면 "Read-only file system" Error 발생
#ㄴ폴더나 파일을 생성, 변경, 또는 삭제할 수 없다는 의미
#사용자가 새로운 프로그램을 설치하거나 변경, 삭제할 땐 관리자 권한 필요
#ls -l을 통해 특정 폴더나 파일이 사용자 또는 관리자의 소유로 생성되었는지 확인 가능

 

12. whoami

whoami
#현재 로그인된 사용자를 확인하는 명령어
#사용자는 폴더의 형태로 존재

 

 

리눅스 권한 (Permission)

리눅스 퍼미션 강의

#drwxr-xr-x => 리눅스 터미널에서 ls -l 명령어를 입력하면 확인 가능
#위와 다른 방식으로 출력되기도 함 => -rw-rw-r-- 등등..

#[d] 1번 부분
# '-' 는 "파일"을 의미

#[rwxr-xr-x] 2번 부분 
#'r', 'w', 'x', '-' 글자는 특정 파일 및 폴더의 접근 권한에 대한 정보를 담음

#'r' => read의 약자로 읽기 권한을 의미. 
#파일 및 폴더 안에 있는 데이터, 속성, 서브 폴더 등에 접근이 가능.

#'w' => write의 약자로 쓰기 권한을 의미. 
#파일 및 폴더의 속성과 데이터를 변경 가능.

#'x' => execute의 약자로 실행 권한을 의미. 
#해당 파일을 실행하여 사용 가능.

#'-' => 권한 없음을 나타낼 때 쓰임.

 

명령어 옵션 -r -f

파일, 디렉터리 조작을 위한 기본 명령어들

rm -f
#보호되거나 존재하지 않는 파일도 강제 삭제

rm -rf
#민감한 정보를 가진 파일도 무차별적으로 삭제하여 심각한 문제를 일으키는 경우 발생

 

 

절대 경로와 상대 경로

1. 절대 경로

/Home/wnrhd@GL727RD/helloWorld/hello

  • pwd 명령어로 확인 가능
  • 기준점으로부터의 절대적인 위치
    *기준점 : 루트폴더(/)
  • 특정 폴더나 파일이 루트폴더로부터 어떤 폴더로 진입하는 경우 만날 수 있는지 나타냄

 

2. 상대 경로

cd ./hi
cd ../
cd helloWorld/hello

  • 현재 위치로부터 상대적인 위치를 나타냄
  • 특정 폴더 또는 파일의 위치의 기준점은 현재 위치
  • 현재 위치한 폴더는 점(.)으로 표현
  • 상위 폴더는 두개의 점(..)으로 표현
  • / : 폴더 내부를 의미
  • ./ : "현재 폴더 아래의"라는 뜻
    *./hi : 현재 폴더 아래의 hi 폴더로 진입하라
  • ../ : 상위 폴더를 의미

 

 

텍스트 에디터 nano

nano
nano hello.js

  • CLI 환경에서 가장 사용하기 쉬운 에디터
  • AWS(Amazon Web Service)와 같은 원격 서버 환경에서 원격으로 텍스트 파일 편집 가능
  • js파일을 열 수도, 빈 화면을 열어 새 파일을 만들 수도 있음

 

1. nano로 파일 열기

  • nano -> ^R(파일명 입력) -> ^T(파일 탐색)
  • nano hello.js

 

2. 파일 편집 후 종료

  • ^O WriteOut
  • ^X -> Y -> enter

 

 

Ubunto apt 패키지 매니저

apt update
#패키지 목록 갱신: 관리자 권한

apt list --upgradable
#업그레이드 가능한 패키지 목록 출력

apt upgrade
#전체 패키지 업그레이드: 관리자 권한

apt --only-upgrade install <패키지명>
#특정 패키지만 업그레이드: 관리자 권한

apt install <패키지명>
#패키지 설치

apt list --installed
#설치된 패키지 보기

apt search <검색어>
#패키지 검색

apt show <패키지명>
#패키지 정보 확인

apt remove <패키지명>
#패키지 삭제: 관리자 권한

sudo
#관리자 권한 부여
#sudo apt update

 

 

자바스크립트 런타임

런타임: 프로그래밍 언어가 구동되는 환경으로, 어떤 프로그램이 동작할 때, 프로그램이 동작하는 곳을 의미

  • JavaScript 런타임 : 웹 브라우저, node.js

 

 

node.js의 등장

  • JavaScript를 이용해서 웹 페이지 뿐만 아니라 서버와 같은 다른 프로그램을 만들 수 있게 됨
  • JavaScript 코드를 브라우저와 node.js 환경 모두에서 실행 가능
    HTML script 태그 내에 JavaScript 코드를 작성하면, 이 코드는 웹 브라우저에서 동작
    CLI 환경에서 node <file_name> 명령어를 입력하면 작성한 코드가 node.js라는 런타임에서 실행

 

 

nvm & node.js 설치 방법

nvm 공식문서 바로가기

wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash
#nvm 패키지 설치가 완료되면 재부팅

nvm --version
#nvm 패키지의 버전을 확인, 버전이 잘 나온다면 nvm 설치 완료

 

※ Command 'wget' not found 메세지와 함께 설치가 진행되지 않는 경우 wget 설치

#Ubuntu
sudo apt update
sudo apt install wget

 

 

Node.js 설치

node.js 공식 사이트

nvm install --lts
#공식 사이트의 LTS 버전을 기준으로 node.js 설치

node -v
#node의 버전 확인

 

node.js 사용하기

node runnode.js

#터미널에서 runnode.js에 작성된 코드의 출력을 확인할 수 있음

 

node.js 설치

nvm install --lts

#패키지 매니저처럼 node.js의 버전을 관리할 수 있는 nvm(Node Version Manager)으로 node.js 설치
#LTS(Long-Term Support)는 node.js에서 지원하는 기간이 길다는 의미(안정적)

 

 

nvm 간단 사용법

1. 특정 버전의 node를 설치

nvm ls
#현재 nvm을 통해 설치한 node version 확인

nvm install 12.18.3
#특정 버전의 node를 설치하고 싶을 때 
#기존에 설치된 버전을 삭제하지 않고 원하는 node version을 설치

 

2. node version을 다른 버전으로 변경

nvm use <버전넘버>

 

 

npm

  • Node Package Manager로 node.js의 패키지 매니저
  • node.js 환경에서 외부 라이브러리를 다운로드 받기 위한 대표적 방법
  • npm install 명령어를 통해 필요한 모듈을 다운받을 수 있음

 

 

package.json

  • package.json : npm 모듈에 대한 정보를 담아둔 곳으로 다른 사람에게 프로젝트에 대해 알려주는 역할
    프로젝트에 관한 정보, scripts(CLI에서 사용가능한 명령), 개발과 관련된 dependency(의존성 모듈)
  • npm install 명령어를 입력하여 package.json에서 필요하다고 하는 모듈을 다운받으면 node_modules 폴더에 저장됨
  • npm install : package.json에 있는 dependency를 바탕으로 설치

 

1. devDependency

  • 이 프로젝트를 개발하는 환경에서 필요한 모듈들이 무엇인지 적혀있는데, 실제 프로젝트 동작에 직접적으로 영향을 주지 않는 모듈들을 명시
    코드 모양을 잡아주는 lint나 테스팅 모듈 등
  • --save-dev 옵션과 함께 설치 시 자동으로 devDependencies에 추가npm install mocha --save-dev

 

2. dependency

  • devDependencies와 달리 이 프로젝트가 돌아가기 위해 반드시 필요한 모듈들이 무엇인지가 적혀있음
    underscore, React 등
  • --save 옵션과 함께 설치 시 자동으로 dependencies에 추가(--save 옵션 생략 가능)npm istall range --save

 

3. scripts 항목

#npm run <스크립트 이름>으로 실행 가능

npm run start
#node.js 앱 실행

npm run test
#태스트 실행

npm run lint
#코드 검사

npm run submit
#과제 제출 (코드스테이츠 only)
#코드스테이츠에서의 과제 제출: 대부분의 스프린트에서 npm run submit을 통해 과제 제출 가능
#제출한 과제 확인: npx codestates-submission ls

npm script
#CLI에서 사용가능한 명령을 기술

node <파일명>
#start => npm 패키지, npm 모듈, npm dependency는 전부 동일한 대상을 지칭
반응형

댓글