학습 목표
- 리눅스 터미널을 실행할 수 있다.
- CLI를 이용한 작업과 GUI를 이용한 작업이 동일함을 이해할 수 있다.
- 리눅스 터미널에서 기본적인 명령어를 사용할 수 있다.
- 명령어를 사용할 때, 등장하는 키워드에 대해 이해할 수 있다.
- 관리자 권한을 이해할 수 있다.
- 절대 경로와 상대 경로의 차이를 이해할 수 있다.
- 텍스트 에디터 nano를 이용해 파일을 수정하고, 저장할 수 있다.
여러분은 이번 유닛을 진행하는 동안, 프롬프트에 명령어를 계속해서 입력합니다. 입력한 명령어를 실행하려면, Enter(엔터 키)를 누르면 됩니다. 바로 이어지는 명령어부터 직접 입력하며 학습해 보세요.
GUI에서는 "현재 폴더가 위치한 경로"를 확인하기 위해 탐색기의 상단을 클릭해서 확인
CLI인 터미널에서는 간단하게 pwd를 프롬프트에 입력하고, Enter(엔터 키)를 누르면 현재 경로가 나타남
pwd
터미널의 프롬프트에 pwd를 입력하고 Enter(엔터 키)를 누르면 현재 위치를 확인할 수 있음
pwd는 print working directory의 약자
CLI에서 폴더를 열거나 닫으면서 이동하면, 현재 위치가 헷갈릴 수 있음
mkdir helloWorld
ls
ls -l
ls -a
ls -al 또는 ls -la
# '#' 기호는 설명을 위해 사용되었습니다.
drwxr-xr-x # 생략
-rw-r--r-- # 생략
터미널의 현재 위치를 GUI의 탐색기(파인더)로 열 수 있습니다.
open .
# '#' 기호는 설명을 위해 사용되었습니다.
# pwd를 이용해 현재 위치를 확인합니다.
pwd
# [사용자명]은 처음 OS를 설치할 때 입력한 사용자 이름입니다.
# (Ubuntu) /home/[사용자명]
# (macOS) /Users/[사용자명]
# ls를 이용해 현재 위치의 모든 폴더와 파일을 확인합니다.
ls
# cd를 이용해 폴더 helloWorld로 진입합니다.
cd helloWorld
# pwd를 이용해 현재 위치를 확인합니다.
pwd
touch hi.txt
명령어 touch로 만든 파일 "hi.txt"를 GUI의 탐색기로 확인할 수 있음
마우스를 이용해 탐색기 내의 파일 "hi.txt"를 실행하고, 텍스트 편집기에 키보드를 이용해 지메일 주소를 입력
이메일 입력을 마쳤다면, 저장하고 텍스트 편집기를 종료
cat hi.txt
명령어 cat은 파일의 내용을 터미널에 출력하는 명령어
CLI(Command-Line Interface)는 텍스트를 기반으로 소통하기 때문에, GUI를 이용한 편집기가 실행되지 않음
# '#' 기호는 설명을 위해 사용하였습니다.
mkdir hello
cd hello # 폴더 hello로 진입합니다.
pwd # 현재 위치를 확인합니다.
mkdir bye
touch bye.txt
ls # 폴더와 파일을 출력합니다.
* 현재 위치는 하위 폴더 "hello"
ls
# bye bye.txt 가 출력됩니다.
rm bye.txt
ls
# bye 폴더만 출력됩니다.
rm bye
# rm: bye: is a directory
ls
# bye
rm -rf bye
ls # 아무것도 출력되지 않습니다.
* 옵션 r은 "recursive"를 뜻하고, 옵션 f는 "force"를 뜻함
옵션 r은 폴더를 지울 때 사용하고, 옵션 f는 질문을 받지 않고 지울 때 사용
# '#' 기호는 설명을 위해 사용하였습니다.
mkdir bye # bye 폴더를 생성합니다.
touch bye.txt # bye.txt 파일을 생성합니다.
명령어 mv를 통해 파일 "bye.txt"를 폴더 "bye"로 옮김
# '#' 기호는 설명을 위해 사용하였습니다.
mv bye.txt bye/
ls
# bye 폴더만 출력됩니다.
# '#' 기호는 설명을 위해 사용하였습니다.
cd bye
ls
# bye.txt 파일이 출력됩니다.
# '#' 기호는 설명을 위해 사용하였습니다.
ls # 현재 폴더에 있는 폴더나 파일을 출력합니다.
# bye.txt 파일이 출력됩니다.
mv bye.txt helloWorld.txt
ls
# helloWorld.txt 파일이 출력됩니다.
컴퓨터는 옮기려고 하는 폴더나 파일을 잠시 저장해 두고 원래 위치에 있는 폴더나 파일을 삭제함
그다음, 이동하려는 도착 폴더에 저장해 둔 내용으로 새로운 파일을 생성
만약 명령어 mv에 입력하는 폴더나 파일의 원래 위치와 도착 폴더의 위치가 같은 경우에도 폴더나 파일을 삭제하고 다시 만들까?
현재 위치는 ~/helloWorld/hello/bye/
명령어 pwd로 확인하면, 물결 표시(~)를 대신해 운영체제에 따라 /home/[username]
(Ubuntu) 또는 /Users/[username]
(macOS)가 출력
명령어 pwd를 입력하면, /home/[username]/helloWorld/hello/bye/
(Ubuntu) 또는 /Users/[username]/helloWorld/hello/bye/
(macOS)가 출력
# '#' 기호는 설명을 위해 사용하였습니다.
ls
# helloWorld.txt 가 출력됩니다.
cp helloWorld.txt hiComputer.txt
ls
# helloWorld.txt hiComputer.txt 가 출력됩니다.
# '#' 기호는 설명을 위해 사용하였습니다.
cd ..
ls
# bye가 출력됩니다.
pwd
# (Ubuntu) /home/[username]/helloWorld/hello
# (macOS) /home/[username]/helloWorld/hello
.
은 현재 폴더를 나타냄..
은 현재 폴더(.)를 기준으로, 앞에 .
이 하나 더 붙음..
은 현재 폴더보다 앞에 있는 폴더를 가리킴# '#' 기호는 설명을 위해 사용하였습니다.
cp -rf bye hi
ls
# bye hi 가 출력됩니다.
절대경로
상대경로
/Users/[username]/helloWorld/hello/
)에 포함된 폴더나 파일을 확인하기 위해, 명령어 ls를 사용./
을 붙여 표현.
)은 현재 폴더를, 슬래시(/
)는 폴더 내부를 나타냄./
는 "현재 폴더 아래의"라는 뜻# '#' 기호는 설명을 위해 사용하였습니다.
cd ./hi # 현재 폴더 아래의 hi 폴더로 진입하는 명령
pwd
# (Ubuntu) /home/[username]/helloWorld/hello/hi
# (macOS) /Users/[username]/helloWorld/hello/hi
ls
# helloWorld.txt hiComputer.txt
# '#' 기호는 설명을 위해 사용하였습니다.
mv helloWorld.txt ../../
ls
# hiComputer.txt
cd ../../
pwd
# (Ubuntu) /home/[username]/helloWorld/
# (macOS) /Users/[username]/helloWorld/
ls
# hello helloWorld.txt hi.txt
관리자 영역을 실수로 변경하면, 운영체제(Operating System)가 먹통이 될 수 있음!!!!!
운영체제가 망가지면, 운영체제를 재설치해야 할 수 있음니다.
절대 경로의 기준점인 루트 폴더(/)는 Linux의 관리자 영역
일반 사용자의 권한으로는 어떤 폴더나 파일도 생성, 변경, 삭제할 수 없음
Linux 관리자의 가장 큰 특징은, 어떤 일이 있더라도 일반 사용자에게 관리자 권한(루트 권한)을 완전하게 넘기지 않는 것 (그래서 루팅한다... 라는 말이 생겼나?)
사용자가 관리자 권한이 있어야 하는 경우는 새로운 프로그램을 설치하거나, 프로그램을 변경 또는 삭제하는 경우이기 때문에, 해당 프로그램을 설치, 변경 또는 삭제할 수 있는 관리자 권한만 전달
사용자와 관리자를 명확히 분리하여 사용자의 실수로 발생할 수 있는 시스템 에러로부터 운영체제를 보호
루트폴더로 이동하여 명령어 mkdir을 이용해 폴더 test를 생성하면, "Read-only file system"이라는 에러가 뜸
읽기 전용(Read-only)이라는 말은, 폴더나 파일을 생성, 변경 또는 삭제할 수 없다는 의미
루트폴더는 관리자의 영역이기 때문에 사용자 권한으로는 할 수 있는 일이 없음
현재 로그인된 사용자를 확인하는 명령어
# '#' 기호는 설명을 위해 사용하였습니다.
whoami
# [username]
명령어 whoami를 통해 확인할 수 있는 사용자는, 폴더의 형태로 존재
사용자 권한은 username 폴더 내에서만 자유롭게 사용할 수 있으며, 윈도우에서 사용자 계정 컨트롤을 이용해 사용자를 나누는 것과 마찬가지로, username에 맞게 폴더를 생성하여 해당 폴더 내에서 권한을 사용하도록 제한
관리자 권한으로 변경한 내용은, 사용자 권한으로 해결할 수 없음
* 사용자 폴더의 경로(Path)는 ~/로 표시됩니다. 물결 기호(~)는 루트폴더(/)로부터 사용자 폴더(username)까지의 경로를 축약한 형태
사용자가 새로운 프로그램을 설치하거나 변경 또는 삭제할 때에는, 관리자 권한이 필요
# '#' 기호는 설명을 위해 사용하였습니다.
pwd
# (Ubuntu) /home/[username]/helloWorld/
# (macOS) /Users/[username]/helloWorld/
sudo
는 기본적인 CLI 명령어의 앞에 작성하여, 관리자 권한을 일시적으로 획득하는 명령어# '#' 기호는 설명을 위해 사용하였습니다.
mkdir justMkdir
sudo mkdir sudoMkdir
password: # 타이핑을 해도 출력이 없습니다. 비밀번호가 출력되지 않더라도, 입력이 정상적으로 이뤄지고 있습니다.
ls
# justMkdir sudoMkdir helloWorld.txt hi.txt
code hello.js # hello.js 를 VScode에서 엽니다.
nano hello.js # hello.js 를 nano에서 엽니다.
nano # 그냥 실행할 수도 있습니다.
다음은 적당한 파일을 nano 에디터를 이용해 연 화면입니다.
CLI에서 사용하는 텍스트 에디터 nano의 실행화면
텍스트 에디터 nano의 구성요소
(A) 파일 이름 안내
(B) 파일 편집 화면, 실제로 여기서 텍스트 파일을 편집
(C) 사용에 필요한 각종 단축키
화면에 표시된 ^X와 같은 내용은 Ctrl + X 키 조합을 의미
파일을 열기 위해서는 단축키 화면에 표시된 것처럼 ^R, 즉 Ctrl + R 키 조합을 의미
기본적으로 파일 이름을 입력하도록 화면이 안내되어 있지만, 즉시 ^T Ctrl + T를 누른 후 화살표 키를 이용해 파일 및 디렉토리를 탐색한 후 불러올 수 있음
가장 쉬운 방법은 터미널에서 애초에 파일을 지정해서 여는 것
nano 파일이름
파일에 변경사항이 존재하면, 종료 시에 저장할지를 물어봄
파일 내용을 편집하고 난 후, 아래와 같이 ^X Ctrl + X를 누르면 다음과 같은 프롬프트가 등장
Save modified buffer (ANSWERIG "No" WILL DESTROY CHANGES) ?
텍스트 에디터 nano의 화면에 메시지가 나타나는 영역