리눅스 기초(Cli 기본 명령어, 사용자 권한과 경로, 패키지 매니저, node.js 사용하기)

Creating the dots·2021년 6월 23일
0

Linux

목록 보기
1/4

CLI와 GUI?

CLI(Command-Line Interface)는 명령어를 입력해 컴퓨터를 조작하는 방식을 말한다.
GUI(Graphical User-Interface)는 유저가 화면을 통해 컴퓨터와 소통하는 방식을 말한다.

컴퓨터를 조작하기 위한 입력과 출력을 간단히 I/O(Input/Output)라고 표기하고, "아이오"라고 읽는다. 리눅스 터미널은 키보드의 입력과 모니터의 출력으로 모든 작업을 할 수 있는데, 이는 GUI가 개발되기 전부터 사용되었기 때문에 GUI가 할 수 있는 모든 작업은 CLI로 할 수 있다.

왜 CLI를 이용하는 걸까?

CLI를 이용하면 자신의 모니터로 다른 서버 컴퓨터에 접속을 요청하면 서버 컴퓨터와 소통할 수 있기 때문에 효율적이다. 예를 들어, 아마존 웹 서비스(AWS, Amazon Web Service)의 경우 4천 평이 넘는 규모의 데이터센터를 29개 이상 가지고 있고 계속 확장하고 있는데, 하나의 데이터 센터에는 최소 5만개 이상의 서버 컴퓨터가 설치된다. 모든 서버 컴퓨터에 GUI를 적용하기 위해 I/O 소스(키보드, 마우스, 모니터 등)를 부착하는 것을 불가능하다. 따라서 이런 경우 CLI를 이용하면 GUI가 없는 서버 컴퓨터를 다룰 수 있는 것이다.

CLI 기본 명령어

Ubuntu에서 CLI 열기: Ctrl+Alt+t
Prompt: 키보드의 입력을 확인하고 편집할 수 있는 한 줄의 공간
-(dash): 옵션을 뜻하며 뒤에 오는 옵션의 순서는 기능에 영향을 미치지 않는다

pwd(print working directory): 현재 작업중인 폴더
ㄴpwd 입력시 현재 가장 상위폴더에 있다면 우분투는 /home/[사용자명]이 출력된다.

mkdir (make directory): 새로운 폴더 생성

ls(list): 특정 폴더에 포함된 파일이나 폴더 확인하기
ㄴls -l: 폴더나 파일의 포맷을 모두 표현하기
ㄴd,-: ls -l을 사용하면, d, -로 시작하는 표현이 출력되는데 d는 폴더를, -는 파일을 나타낸다.
ㄴd는 cd를 통해 접근할 수 있지만, 파일은 접근할 수 없다
ㄴls -a(list all): 숨어있는 폴더나 파일을 포함한 모든 항목을 터미널에 출력하기
ㄴls -al 또는 ls -la: ls -a와 ls -l를 동시에 표현하기

nautilus .: 현재 위치를 GUI 탐색기로 열기

cd(change directory): 프롬프트로 상호작용하는 폴더를 다른 폴더로 변경하기

touch: 파일 생성하기
ㄴtouch hi.txt: 텍스트 파일 hi 생성하기

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

rm: 파일/폴더 삭제하기
ㄴrm [파일명]: 단일 파일 삭제하기 (rm [폴더명]을 하면 실행되지 않음)
ㄴrm -rf [파일명/폴더명]: 폴더 삭제하기 (옵션 r은 recursive로 폴더를 지울때 사용하고, 옵션 f는 force를 의미하며 질문을 받지 않고 지울때 사용한다. 따라서 폴더나 파일을 삭제할 때 두 옵션을 같이 사용한다.)

mv(move): 폴더나 파일의 위치 옮기거나 폴더나 파일의 이름 변경하기
ㄴmv [폴더나 파일이름][도착 폴더의 이름]
ㄴmv [폴더나 파일이름][변경할 이름]

cp(copy): 폴더나 파일 복사하기
ㄴcp [원본 파일이름][복사본 파일이름]
ㄴcp -rf [원본 폴더이름][복사본 폴더이름]

각 명령어에 포함된 옵션은 명령어 이름만 입력하거나 -h 또는 --help와 같은 옵션을 통해 확인할 수 있다

사용자 권한과 경로

컴퓨터의 운영체제에는 사용자와 관리자가 있는데, 사용자는 우리가 pc를 켜서 로그인하는 계정이고, 관리자는 사용자가 쉽게 접근할 수 없는 영역에서 프로그램을 설치, 변경, 삭제하는 권한을 갖는다. 윈도우의 경우 컴퓨터 한대에 여러개의 사용자 계정을 생성할 수 있고, 각 사용자는 다른 사용자의 영역을 침범할 수 없다. 리눅스 기반의 운영체제도 사용자와 관리자를 구분하는데, ubuntu를 설치하거나 macOS 기반의 pc를 구매한 후 처음 전원을 켤 때, 사용자를 등록해야 한다. 이 사용자 이름으로 된 폴더가 루트폴더 하위에 생성되는데, 사용자 권한은 이 username 폴더 내에서만 자유롭게 사용할 수 있다. 현재 로그인된 사용자를 확인할땐 whoami 명령어를 사용하면 된다.

리눅스 관리자의 가장 큰 특징은 절대 사용자에게 관리자 권한(루트 권한)을 완전히 넘기지 않는다는 것이다. 사용자가 관리자 권한을 필요로 할때는 (프로그램을 설치하거나 변경, 삭제하는 경우) 그러한 권한만 전달한다. 명령어 sudo는 한시적으로 관리자 권한을 사용하므로 항상 비밀번호와 함께 사용한다.

절대경로는 루트폴더(/)를 기준으로 절대적인 위치를 나타낸다. 명령어 pwd를 실행할 경우, /(루트폴더)로 시작해 현재 디렉토리까지 모두 나타난다. 상대경로는 특정 폴더 또는 현재 위치를 기준으로 파일의 위치를 나타낸다. 현재 디렉토리는 ./로 나타내고 상위 디렉토리는 ../로 나타낸다. 현재 경로가 /Users/[username]/helloWorld/hello/일때, ls 명령어를 통해 하위 디렉토리 hi를 확인했다면 cd ./hi로 접근할 수 있다.

패키지와 패키지 매니저

ls, mkdir등도 기본적으로 내장되어있는 패키지인데, 새로운 프로그램을 설치해야하는 경우 복잡하기 때문에 리눅스에서는 패키지 매니저를 기본적으로 제공하는데 이는 앱스토어와 같은 역할을 한다. 필요한 프로그램을 찾아서 다운로드, 설치, 삭제 등의 관리작업을 해주는 것이다.

리눅스의 대표적 패키지 매니저는 apt와 yum이 있다. (이하 apt 기준)

apt과 apt-get?

터미널에서 apt와 apt-get을 검색한 결과, 다음과 같이 정의하고 있다.

apt
apt is a commandline package manager and provides commands for searching and managing as well as querying information about packages. It provides the same functionality as the specialized APT tools,like apt-get and apt-cache, but enables options more suitable for interactive use by default.

apt-get
apt-get is a command line interface for retrieval of packages and information about them from authenticated sources and for installation, upgrade and removal of packages together with their dependencies.

apt는 apt-get과 apt-cache의 기능 중에서 잘 사용되지 않는 기능을 제외하고 만든 새로운 tool로 검색결과를 사용자가 보기 편하기 보여준다. apt [프로그램명]과 apt-cache [프로그램명]를 각각 검색한 결과, 전자가 훨씬 보기 편하게 출력되는 것을 확인했다.

프로그램을 설치하거나 업그레이드하기 위해서는 apt나 apt-get은 모두 update를 통해 목록을 최신상태로 갱신하는 과정을 거쳐야 한다. 그 다음으로 apt search [프로그램명] 또는 apt-cache search [프로그램명]을 통해 프로그램을 검색하고 install하면 된다.

update, search, install, upgrade, remove등의 명령어를 실행하기 위해서는 관리자 권한을 이용해야 하므로 sudo를 꼭 써줘야한다.

sudo apt-get update //먼저, apt를 쓰기 위해서는 먼저 설치할 수 있는 소프트웨어의 목록을 최신 상태로 갱신. 즉, 패키지 리스트 갱신.
sudo apt-cache search [프로그램명] //다운받으려고 하는 프로그램을 검색한다
sudo apt-get install [프로그램명] //프로그램을 다운로드한다

sudo apt-get upgrade [프로그램명] //다운로드한 프로그램을 업그레이드한다
sudo apt-get upgrade //sudo apt-get을 통해 설치한 모든 프로그램을 업그레이드한다

sudo apt-get remove [프로그램명] //설치한 프로그램을 삭제한다

nvm, node.js,npm

nvm 설치

node.js를 사용하기 위해서는 우선 nvm(node version manager)를 설치해줘야한다. nvm은 node.js의 버전을 쉽게 설치하고 관리할 수 있다. nvm는 wget 명령어를 사용해 설치하고, wget 명령어가 작동하지 않는 경우 다음의 과정을 거치도록 한다.

//wget 설치방법
sudo apt update //패키지 리스트 갱신
sudo apt install wget //wget 설치

//nvm 설치방법
wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.38.0/install.sh | bash //버전이 업데이트 되었을 수 있으므로 하단 참고 사이트 확인필요

//nvm 버전확인
nvm --version

참고: https://github.com/nvm-sh/nvm#install--update-script

node.js 설치

앞서 설치한 nvm을 통해 node.js의 다양한 버전을 설치하고 관리할 수 있다.

//lts node.js 설치
nvm install --lts //LTS(Long Term Support)란, node.js에서 지원하는 기간이 길다는 의미

//(기존 버전을 삭제하지 않고) 특정 node.js 설치
nvm install [버전] //ex. nvm install 12.18.3

//현재 사용중인 node.js 버전확인
node -v

//설치된 node.js 버전 모두 확인
nvm ls

//버전 변경
nvm use [버전넘버] //ex. nvm use 14.15.5

node.js 실행

//helloWorld.js 파일을 node 환경에서 실행
node helloWorld.js //터미널 창에 helloWorld.js가 실행된 결과가 출력될 것.

npm & pacakge.json

apt가 리눅스의 필요한 패키지를 다운로드할 수 있는 일종의 앱스토어인 패키지 매니저라면, npm은 node.js의 패키지 매니저이다. apt에서 apt install [프로그램명]의 형태를 사용한 것처럼 npm install [모듈명]의 형태로 사용하는 것이다.

pacakage.json에는 프로젝트에 대한 정보, CLI에서 사용가능한 명령, 개발과 관련된 dependencies 등이 명시되어 있다. 이는 협업을 하거나 앞으로 스프린트를 할때, package.json을 참고해 필요한 모듈을 npm을 통해 다운받으면 된다.

//pacakge.json을 열어 필요한 모듈을 다운받는다
npm install //npm에 있는 모든 모듈이 설치되며 node_modules라는 폴더가 생성된다
npm install [모듈명] --save-dev //자동으로 devDependencies에 추가됨

npm install [모듈명] 
//또는
npm install --save [모듈명] //--save 옵션과 함께 설치하면 자동으로 dependencies에 추가되는데, --save 옵션은 생략가능

//"scripts" 항목
npm run [스크립트 이름] //package.json의 scripts에 정의된 명령들은 CLI에서 사용가능하며 npm script라고 부르며 이와같이 실행한다
profile
어제보다 나은 오늘을 만드는 중

0개의 댓글