터미널 사용하기
제미나이 CLI는 말 그대로 명령줄 기반으로 실행되는 프로그램입니다. 그리고 CLI 환경을 제공하는 프로그램을 터미널(셸)이라고 합니다. 그래서 기본적인 터미널 사용법을 익히는 것이 핵심입니다. 터미널은 컴퓨터와 사용자가 소통하는 가장 기본적인 방법입니다. 운영체제나 용도에 맞춰 사용할 수 있는 터미널의 종류도 여러 가지입니다. 여기서는 제미나이 CLI를 사용하기 적합한 터미널과 Git Bash만 알아봅니다. 터미널은 사용자가 명령어 사용법을 알고 있어야 하므로 기본적인 명령어도 함께 알아보겠습니다.
엄밀히 말하면 터미널은 입·출력 프로그램, 셸은 명령어 실행·해석 프로그램을 의미하지만 이 책에서는 편의를 위해 비슷한 의미로 사용합니다.
macOS 터미널 사용하기
맥에서는 터미널Terminal이라는 기본 앱을 사용할 수 있습니다. 터미널은 별도의 설치가 필요 없습니다. 다음 과정을 따라 터미널을 열어보세요.
01단계 [Command + Space]를 누르면 스포트라이트 검색 창이 열립니다. 이곳에 '터미널' 혹은 ‘Terminal’을 입력하세요. [Enter]를 누르면 터미널이 실행됩니다.
02단계 함께 화면을 살펴봅시다. ➊ 명령어를 입력할 수 있는 부분과 ➋ 현재 경로가 보입니다. ~는 홈 디렉터리라는 뜻입니다. ➌ 터미널 창 상단에는 현재 실행한 셸의 종류가 보입니다. 셸 프로그램은 bash, zsh, sh 등 다양한 종류가 있습니다. 현재 실행한 셸이 어떤 종류인지 알아두세요.
윈도우 Git Bash 사용하기
윈도우는 명령 프롬프트나 파워셸이 CLI를 제공합니다. 하지만 macOS나 리눅스 등 다른 운영체제와 사용법이 다르고 환경 설정에서 오류가 발생할 수 있습니다. 이 문제를 해결하기 위해 다른 터미널 프로그램인 Git Bash를 사용하겠습니다. Git Bash는 원래 깃을 사용하기 위한 CLI 프로그램이지만 설치가 간편하고 macOS, 리눅스와 같은 명령어를 사용하기 때문에 헷갈릴 여지가 적습니다.
01단계 [Windows + R]을 눌러 실행 창을 열고 cmd를 입력하고 [Enter]를 누릅니다.
02단계 정상적으로 실행되면 텍스트를 입력할 수 있는 창이 나타납니다. 이것이 윈도우의 터미널인 명령 프롬프트입니다. ➊ 다음 명령어를 입력하여 Git을 설치합니다. ➋ 권한 허용 창이 뜨면 [예]를 눌러 허용합니다.
Git Bash는 Git과 함께 설치됩니다.
```
winget install Git.Git
```
03단계 Git 설치를 정상적으로 마쳤다면 cmd를 새로 실행해서 터미널의 새 창을 열 때 옵션에서 Git Bash를 사용할 수 있습니다.
04단계 Git Bash에서 ‘ls’ 명령어를 입력한 후 [Enter]를 눌러보세요. 홈 디렉터리의 모든파일과 폴더가 보인다면 정상적으로 설치된 겁니다.
기본적인 CLI 사용법
터미널 창이 열리면 검은색 또는 흰색 배경에 텍스트를 입력할 수 있는 창이 나타납니다. 이 명령어를 터미널 명령어, 혹은 셸 명령어라고 부릅니다. 여기에 원하는 명령어를 입력하고 [Enter]를 누르면 컴퓨터가 해당 명령을 실행합니다. 지금부터 터미널 사용법을 하나씩 알아보겠습니다.
절대 경로 알아보기
컴퓨터는 디렉터리나 파일이 저장되어 있는 위치를 표현할 때 두 가지 표현 방법을 사용합니다. 절대 경로와 상대 경로입니다. 절대 경로는, 이를테면 집주소를 다 적는 겁니다. 윈도우는 드라이브(C:, D: 등)부터, macOS나 리눅스는 루트(/)부터 시작해서 목적지까지 전체 경로를 다 적습니다. 예를 들어 윈도우 컴퓨터에 logo.png라는 가상의 이미지 파일이 다음 경로에 있다고 가정해봅시다.
```
C:\Users\김철수\Documents\프로젝트\웹사이트\images\logo.png
```
macOS나 리눅스는 다음과 같은 경로가 만들어집니다.
```
/Users/김철수/Documents/프로젝트/웹사이트/images/logo.png
```
디렉터리와 디렉터리 사이에 /(슬래시)나 \(역슬래시)가 들어갑니다. 윈도우는 역슬래시를 사용하고 macOS, 리눅스는 슬래시를 사용합니다. 주의할 점이 있습니다. 윈도우 컴퓨터라 하더라도 Git Bash는 리눅스 시스템을 흉내냅니다. 그래서 이런 경로가 만들어집니다.
```
/c/Users/김철수/Documents/프로젝트/웹사이트/images/logo.png
```
경로 맨 앞에 드라이브 이름이 표시되는 걸 제외하면 macOS와 완전히 같은 방식입니다. 이 책은 여러분이 macOS, 리눅스, 윈도우 Git Bash를 사용한다고 가정하고 리눅스 방식을 기준으로 안내합니다. 맨 처음 경로부터 김철수 디렉터리 안에 Documents 디렉터리 안에… 이런 방식으로 이미지 파일이 어느 위치에 있는지 표현합니다. 길이가 길어서 읽기 힘들고 입력하기도 번거롭지만 현재 명령어를 실행하는 디렉터리 위치와 상관없이 같은 곳을 가리키기 때문에 확실하게 경로를 지정하고 싶을 때 절대 경로를 사용합니다. 절대 경로는 컴퓨터마다 다르다는 것을 기억하세요. Users/ 디렉터리 안에는 사용자 디렉터리가 있습니다. 예시에서는 ‘김철수’가 사용자 디렉터리 이름입니다. 이 디렉터리 이름은 사용자 이름과 같습니다. 아마 처음 컴퓨터를 설치했을 때 정했을 겁니다. 그래서 다른 사람이 사용하는 절대 경로를 그대로 내 컴퓨터에서 사용하면 안 됩니다.
상대 경로 알아보기
상대 경로는 현재 위치를 기준으로 목적지까지 가는 길을 적습니다. 터미널을 실행하면 사용자가 지금 보고 있는 디렉터리가 있습니다. 보통 명령어 입력줄 왼쪽에 현재 디렉터리 이름이 표시됩니다. 현재 위치가 ‘/Users/김철수/Documents/프로젝트’라고 가정하겠습니다. 조금 전에 보았던 가상 이미지 logo.png의 절대 경로와 상대 경로는 다음과 같습니다.
```
/Users/김철수/Documents/프로젝트/웹사이트/images/logo.png # 절대 경로
웹사이트/images/logo.png # 상대 경로
```
훨씬 짧아졌네요. 현재 위치가 다르면 상대 경로가 달라진다는 사실을 잘 기억하세요. 이번엔 같은 위치에서 상위 디렉터리인 ‘김철수’ 디렉터리의 위치를 상대 경로로 표현하겠습니다.
```
../../
```
상위 경로는 점 2개(..)로 표현합니다. ../는 ‘C:/Users/김철수/Documents’이고 ../../는 ‘C:/Users/김철수’입니다. 현재 디렉터리에 있는 ‘웹사이트’ 디렉터리는 이렇게 표현합니다. 현재 경로는 점 1개(.)입니다.
```
웹사이트
./웹사이트
```
위 두 경로는 같은 의미입니다. ./를 붙이건 떼건 같은 경로를 의미하지만 셸 스크립트 실행 등 일부 상황에서는 ./를 붙여야 작동할 수도 있습니다.
Git Bash가 아닌 윈도우 터미널이라면, ../도 ..\처럼 역슬래시로 바꿔서 사용합니다
터미널에서는 경로가 중요합니다. 내가 실행하는 명령어가 어느 디렉터리에서 실행되는지, 어떤 파일을 조작하는지 모르면 당연히 원하는 동작이 수행되지 않습니다.
pwd : 현재 디렉터리 경로 확인하기
현재 명령어를 실행하는 디렉터리 위치가 어디인지 궁금할 때 pwd를 사용합니다. 폴더 생성, 삭제, 제미나이 CLI 실행 등 현재 위치가 중요한 명령을 실행하기 전에는 한 번씩 pwd를 실행해 경로를 확인하는 것이 좋습니다. 터미널을 사용할 때는 엉뚱한 위치에서 명령어를 실행하면 안 됩니다. 잘 정리된 디렉터리 구조 망치기, 중요한 파일 삭제하기처럼 원하지 않는 동작을 하고 싶지 않다면 말이죠.
ls : 현재 디렉터리 목록 확인하기
현재 터미널에서 작업하는 디렉터리 안에 어떤 파일이나 하위 디렉터리가 있는지 목록을 보여주는 명령어입니다. 윈도우의 탐색기나 맥의 Finder에서 특정 디렉터리를 열었을 때 보이는 내용과 같다고 생각하면 됩니다. 이 명령어를 입력하면 터미널에 파일과 디렉터리 이름이 나열됩니다.
ls -la 명령어를 사용하면 현재 디렉터리의 모든 파일과 상세한 정보를 볼 수 있습니다. 평소에는 보이지 않는 숨김 디렉터리와 파일도 볼 수 있기 때문에 자주 사용합니다.
파일 이름 앞에 .이 있다면 숨김 파일이라는 뜻입니다.
cd : 디렉터리 이동하기
터미널에서 작업할 디렉터리의 위치를 바꾸는 명령어입니다. 컴퓨터의 다른 디렉터리로 이동하고 싶을 때 사용합니다. 이 명령어만 잘 다루어도 터미널을 파일 탐색기만큼 편리하고 익숙하게 다룰 수 있습니다.
cd [경로] : 다른 디렉터리로 이동하고 싶을 때 사용합니다.
cd .. : 현재 디렉터리의 바로 상위 디렉터리로 이동합니다. 한 단계 위로 올라갈 때 사용합니다.
cd ~ : 사용자의 홈 디렉터리로 바로 이동합니다. 터미널에서 ~ 기호는 홈 디렉터리를 의미합니다.
cd / : 사용자의 루트 디렉터리로 바로 이동합니다. 터미널에서 / 기호를 단독으로 사용하면 루트 디렉터리를 의미합니다.
cd - : 이전 위치로 돌아갑니다.
mkdir : 새 디렉터리 만들기
새로운 디렉터리를 만들 때 사용합니다. 터미널에서 현재 작업 중인 위치에 새로운 빈 디렉터리를 생성합니다.`mkdir MyProject`라고 입력하면 현재 위치에 'MyProject'라는 이름의 새 디렉터리가 생깁니다.
mkdir [디렉터리 이름] : 현재 위치에 새로운 디렉터리를 생성합니다.
mv : 파일/디렉터리 옮기거나 이름 바꾸기
파일이나 디렉터리를 다른 위치로 옮기거나 이름을 바꿀 때 사용합니다. mv 명령어 뒤에 공백으로 구분하여 현재 경로와 바꾸고 싶은 경로를 입력하면 됩니다.
mv [현재 경로] [이동할 경로] : 파일이나 디렉터리의 경로를 변경합니다. 이동할 경로 위치에 파일 이름을 입력하면 해당 파일의 경로와 이름이 함께 바뀝니다.
touch : 빈 파일 만들기
touch 명령어는 빈 파일을 새로 만들 때 사용하는 명령어입니다. 예를 들어 touch memo.txt라고 입력하면 'memo.txt'라는 빈 파일이 새로 생깁니다. 만약 이미 같은 이름의 파일이 있다면 내용을 건드리지 않고 최종 수정 시간만 현재 시간으로 바꿔줍니다.
이 정도 명령어만 익히더라도 터미널에서 파일과 디렉터리를 관리하는 기본적인 작업은 충분히 수행할 수 있습니다. 각 명령어를 입력한 후에는 항상 [Enter]를 눌러야 컴퓨터가 명령을 실행합니다. 터미널을 사용하다가 새로운 마음으로 화면을 깨끗이 정리하려면 [Ctrl + L] 혹은 [Cmd + L] 키를 누릅니다. 현재 실행 중인 명령을 종료하려면 [Ctrl + C] 혹은 [Cmd + C]를 누르세요. 처음에는 CLI가 어렵게 느껴질 수 있지만 기본적인 명령어를 익히고 나면 컴퓨터를 훨씬 효율적으로 다룰 수 있습니다. 제미나이 CLI 설치를 위해 터미널을 열고 Node.js와 npm 버전 확인 명령어를 입력하는 것부터 시작해보세요.
