Chapter1. Command-Line Interface
1-1 CLI 명령어
1-2 관리자 권한과 경로Chapter2. 패키지와 패키지 매니저
Chapter3. Node.js
3-1 nvm & node.js
3-2 npm & package.json
입력 소스 Input source : 키보드나 마우스, 카메라, 마이크 등 컴퓨터에 새로운 명령을 전달하는 모든 소스
출력 Output : 입력 소스나 작성된 프로그램에 의해 모니터에 화면을 나타내거나 음악을 재생하면 소리를 스피커로 전달해 사용자가 인식할 수 있도록 하는 일
출력소스 Output source : 시각적 출력을 담당하는 스피커나 스마트홈을 연결해 전등이나 공기청정기를 조작하는 것 등.
I/O(Input/Output) : 컴퓨터를 조작하기 위한 입출력
리눅스의 터미널은 키보드 입력과 모니터 출력으로 모든 작업을 할 수 있다.
CLI를 이용해 서버 컴퓨터로 접속을 요청 -> 서버 컴퓨터는 요청한 컴퓨터의 출력 소스(모니터)를 이용. = 서버 컴퓨터에 직접 찾아갈 필요없이 자신의 모니터로 서버 컴퓨터와 소통 가능. 대부분 서버 컴퓨터는 Linux 운영체제가 설치되어 있다.
입력하는 글자와 출력되는 글자로 컴퓨터와 소통 가능.
키보드 입력을 확인하고 편집할 수 있는 한 줄의 공간.
프롬프트에 명령어를 입력해 컴퓨터를 조작한다.
pwd
(print working directory) : 현재 위치 확인할 수 있는 명령어
mkdir
(make directories) : 폴더 생성. 생성할 폴더 이름을 함께 입력해야 함. 명령어와 폴더 이름은 스페이스 키로 구분.
mkdir helloWorld
// helloWorld라는 이름의 폴더를 생성
ls
(list) : 특정 폴더에 포함된 파일이나 폴더 확인
ls -l : 폴더나 파일의 포맷을 전부 표현해라
ls -a(list -all) : 숨어있는 폴더나 파일을 포함한 모든 항목을 출력
ls -al 또는 ls -la : 대쉬(dash, -) 뒤에 오는 옵션의 순서는 기능에 영향을 주지 않음.
drwxr-xr-x : 폴더.
-rw-r--r-- : 파일
open .
: 현재 위치를 GUI로 실행cd
(change directory) : 프롬프트로 상호작용하는 폴더를 다른 폴더로 변경. pwd
로 현재 위치를 확인하고, ls
를 이용해 폴더를 확인하고 그 다음 cd
를 이용해 해당 폴더로 진입한다.cd ~/helloWorld/hello
와 같이 cd
뒤에 경로를 입력하면 현재 진행중인 폴더로 한 번에 이동할 수 있음.touch
: 파일 생성cat
: 파일 내용을 터미널에 출력. 파일의 모든 내용이 출력되니 너무 큰 파일을 출력하는 건 비효율적. rm
(remove) : 단일 파일을 삭제.r
, f
옵션을 이용해야 한다. 대시(-)를 사용해 옵션을 입력.r
(recursive) : 폴더를 지울 때 사용f
(force) : 질문을 받지 않고 지울 때 사용. 폴더나 파일을 삭제할 때 두 옵션을 같이 사용할 것. rm -rf
mv
(move) : mv 뒤에 순서대로 폴더나 파일의 이름, 도착 폴더의 이름을 입력1 # '#' 기호는 설명을 위해 사용하였습니다.
2 ls # 현재 폴더에 있는 폴더나 파일을 출력합니다.
3 # bye.txt 파일이 출력됩니다.
4 mv bye.txt helloWorld.txt
5 ls
6 # helloWorld.txt 파일이 출력됩니다.
a. 파일의 내용을 잠시 저장한다
b. 원래 위치의 파일을 삭제한다
c. 도착 폴더에 1에서 저장한 내용으로 새로운 파일을 생성한다.
cp
(copy) : 폴더나 파일을 복사
파일을 복사할땐, cp [원본 파일 이름] [복사할 파일 이름]
순서로 작성
rm
과 동일하게 옵션 r
,f
사용하여 복사함.cp -rf bye hi
ls
# bye hi 가 출력
CLI에서 삭제된 파일은 즉시 삭제됨.
CLI에서 .
은 현재폴더, ..
은 현재 폴더(.
)보다 앞에 있는 폴더
경로는 명령어
pwd
로 확인할 수 있는 절대 경로와,
현재위치로부터 상대적인 위치를 사나태는 상대 경로로 나뉨
ex) 경로 /Users/[username]/helloWorld/hello/
루트 폴더(/
)에는 폴더 Users가 있다. 폴더 Users로 진입하면, 폴더 [username]을 확인할 수 있고 폴더 [username]에 진입하면, 폴더 helloWorld가 있고, 폴더 helloWorld에 진입하면 폴더 hello를 발견할 수 있다.
특정 폴더 또는 파일의 위치를 현재 위치를 기준점으로 나타냄
..
)으로 표현.
)은 현재 폴더를, 슬래시(/
)는 폴더 내부를 뜻함. ./
는 "현재 폴더 아래의"라는 뜻. ./hi
는 현재 폴더 아래의 폴더 hi를 나타냄사용자 권한을 벗어난 위치에서 새로운 파일을 생성하려면 반드시 관리자 권한이 필요하다.
리눅스 운영체제의 패키지와 패키지 매니저는 포장된 상품과 온라인 쇼핑몰 같은 역할을 한다.
패키지 : 여러 파일이 담겨있는 하나의 상자
리눅스 패키지 : 여러 파일을 모아 하나의 파일로 저장하고 있는 압축 파일
페키지 매니저 : 패키지의 설치, 변경, 삭제 등 관리를 편리하게 해주는 도구. 앱스토어와 비슷한 역할. 패키지 매니저를 이용해 필요한 패키지를 설치할 수 있다.
모든 패키지의 저장소 위치를 저장하고 있으며, 패키지가 저장된 위치에서 패키지를 다운로드해 설치 프로그램을 실행한다.
brew update
brew outdated
brew upgrade 프로그램 이름
brew search 검색어
brew info 프로그램 이름
brew install 프로그램 이름
brew uninstall 프로그램 이름
brew list
Homebrew로 설치할 수 있는 프로그램
wget
: RL을 통해 파일을 다운로드하는 프로그램neofetch
JavaScript 런타임(runtime)중 하나.
런타임 : 프로그래밍 언어가 구동되는 환경, 즉 어떤 프로그램이 동작할 때, 프로그램이 동작하는 곳 ex)크롬, 사파리
Node.js가 등장하면서 웹 브라우저가 아닌 곳에서도 JavaScript를 실행할 수 있게 되었음.
아래 명령어를 터미널에 입력
wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash
만일 Command 'wget' not found
메세지와 함께 설치가 진행되지 않는 경우, Package Manager를 이용해 wge
을 설치.
Brew update
brew install wget
설치가 완려되면 터미널을 다시 시작한후 nvm 버전을 확인.
nvm을 이용해 설치한다.
nvm install --lts
Node.js 버전 확인.
CLI 환경에서 node <file_name>
명령어를 프롬프트에 입력하면 작성한 코드가 Node.js라는 런타임에서 실행됨.
runnode.js
라는 파일에 아래와 같은 코드가 작성되어 있다고 가정하겠습니다.
// runnode.js
const testFunction = function(arg){
console.log("Arg is : ", arg);
}
testFunction(20);
[코드] runnode.js 파일에 testFunction이라는 함수를 작성
터미널에서 runnode.js
파일을 생성하고, 위 함수를 붙여 넣으세요. 명령어 node
로 실행해 보겠습니다. 아래와 같이 명령어를 입력하세요.
node runnode.js
터미널에서 "Arg is : 20" 이라는 출력을 확인할 수 있습니다. 이처럼 Node.js는 웹 브라우저가 아닌 또 다른 JavaScript 런타임입니다.
Node.js 환경에서 작성한 JavaScript 파일과 npm과 package.json을 실행하는 방법
CLI 환경에서 명령어 node
로 js 파일을 실행
nano helloWorld.js
[커맨드] 텍스트 에디터 nano로 helloWorld.js라는 파일을 생성하고 엽니다.
1 // 이 코드를 생성한 파일에 입력하세요.
2 function helloWorld () {
3 console.log("Hello world!");
4 }
5
6 helloWorld();
[코드] Hello world를 출력하는 JavaScript 함수
ctrl + x 편집 종료. 변경사항 저장
생성한 파일을 실행.
Node.js 환경에서 JavaScript 파일을 실행할 때에는 명령어 node에 실행할 파일의 이름을 입력
node helloWorld.js
[코드] Hello world!를 출력하는 JavaScript 함수
npm(Node Package Manager)
필요한 모듈을 다운로드할 수 있는, 모듈들이 모여있는 모듈 스토어.
리눅스의 패키지 매니저가 apt, macOS의 패키지 매니저가 brew이듯, node.js생태계의 패키지 매니저는 npm이다. 대부분의 모듈은 npm에서 다운로드해서 사용한다.
package.json
npm 모듈을 활용하기 위해 해당 모듈에 대한 정보를 담은 파일.
프로젝트 전반에 관한 정보가 들어있다.
프로젝트 코드를 전달할 때, 포함하고 있는 모든 모듈을 다 전달하고 package.json에 적혀 있는 정보만 전달하면 되기 때문에 유용함
프로그램을 실행시키기 위해 필요한 실제 모듈은 node_modules라는 폴더에 저장됨