지난 가이드에서는 리눅스의 정의, 구성요소 및 기능에 대해 알아보았다.
리눅스는 운영체제 중 하나로, User가 내리는 명령(명령어)에 의해서 프로그램이 동작한다.
이번 가이드에서는 리눅스의 기본 명령어들과 그 사용법에 대해 다뤄보도록 하자,
[디렉토리와 파일]
파일이라는 용어는 컴퓨터를 사용하면서 많이 들어봤을건데..
디렉토리?? 아는 사람도 있겠지만, 대부분의 사람들은 디렉토리라는 말이 도무지 뭔 말인지 감이 안 잡힐 것이다.
파일과 디렉토리는 컴퓨터 시스템에서 중요한 개념이며,
이 둘은 데이터를 구조화하고 저장하는 데 사용되며, 운영체제와 파일 시스템에서 관리되고
유저 및 프로그램이 데이터를 저장하고 검색할 수 있도록 도와준다.
리눅스 명령어 중에서는 인자(Argument)로 디렉토리나 파일명을 입력해야 하는 경우가 대부분이다.
인자가 2개이고 옵션도 사용하는 경우,
[명령어] [옵션] [인자1] [인자2]
와 같은 형태로 입력하게 된다.
📌 파일
정의
: 파일은 데이터의 저장 단위로
텍스트, 이미지, 음악, 프로그램코드와 같이 다양한 정보를 저장할 수 있다.
특징
: 파일은 이름을 가지며, 확장자(.txt, .jpg 등)를 통해 그 종류를 식별한다.
또한 파일은 크기를 가지며, 읽기/쓰기/실행과 같은 권한을 가질 수 있다.
📌 디렉토리
정의
: 파일과 다른 디렉토리를 포함하고 있는 폴더 또는 저장 공간을 의미하며,
파일을 구조화하고 조직화하는데 사용된다.
쉽게 말해서 현재 내가 작업하고 있는 폴더라고 생각하면된다.
특징
- 디렉토리는 계층 구조를 형성하며,
상위 디렉토리(..)와 현재 디렉토리(.) 그리고 하위 디렉토리로 구분된다.
여기에 상대 디렉토리와 절대 디렉토리라는 개념이 또 있는데,
말 그대로 현재 디렉토리를 기준으로 다른 디렉토리는 상대적인 위치에 있다 해서 상대 디렉토리,
절대 디렉토리는 현재와 상관없이 시스템 내의 절대적인 위치를 나타낸다.(디렉토리명을 직접 입력)
- 디렉토리도 파일과 같이 이름을 가지며,
부여된 권한을 통해 해당 디렉토리에 읽기(r), 쓰기(w), 실행(x) 권한을 제어할 수 있다.
📌 파일과 디렉토리
시스템은 보통 다음과 같은 구조를 가진다.
시스템 구조는 위 그림처럼 가지를 뻗어나가는 형태로 구성되기 때문에 "경로"가 존재한다.
위 구조에 따른 경로 예시는 다음과 같다.
파일 : 상위 디렉토리(절대 경로) / 파일명
파일 : 상위 디렉토리(절대 경로) / 다른 디렉토리 / 파일명
ex) C:\Program Files\Git\git-bash
파일 : 파일명(현재 디렉토리에 있는 파일이기 때문에)
파일 : 하위 디렉토리 / 파일명
[기본 명령어 및 사용법]
단축키 모음은 페이지 하단에 있으니 참조
📌 도움말(help)
우리가 새로 물건을 사거나 처음 써보는 기계를 동작하기 전에 항상 도움말을 참조한다.
리눅스 환경에도 우리가 쓸 명령어들이 어떤 기능을 하는지, 어떤 옵션이 들어 있는지,
어떻게 사용하는지에 대한 내용을 담은 도움말이라는 기능이 존재한다.
사용법은 명령어 뒤에 한 칸을 띄우고 -h
, --help
등을 붙여서 사용하면 된다.
보통 -h
는 짧은 도움말, --help
는 긴 도움말을 제공하지만,
명령어에 따라서 도움말이 제공되지 않을 수도 있다.
여기서 우리가 쓰는 Bash 셸의 장점을 하나 알 수 있는데,
명령어에 오타가 발생하거나 없는 옵션을 사용했을 경우,
어떻게 하면 올바른 결과를 낼 수 있는지 알려준다.
rm -h
만 쳤을 때는 쓸 수 없는 명령어라하면서 어떻게 하면 결과를 출력할 수 있는지도 알려준다.
좀 더 자세한 내용이 필요할 때는 man
과 info
명령어가 있는데,
추가로 설치해야 하므로 이번에는 생략한다.
📌 ls
ls
는 현재 디렉토리 안에 들어있는 파일들의 목록을 보기 위한 명령어이다.
그 전에 알아야할 것이 있는데, 바로 $에 대해서이다.
리눅스를 쓰다 보면, CLI 입력 라인의 첫 글자는 $로 시작하는 것을 확인할 수 있고,
이는 내가 명령한 작업이 끝나서 새로 입력을 받을 수 있다는 신호로 봐도 된다.
본론으로 돌아와서 Bash 셸에 ls
를 쳐보면, 다음과 같이 현재 디렉토리에 있는 파일들을 보여준다.
GUI에서는 보이지 않았던 파일들도 이 명령어를 사용하면 CLI에서 볼 수 있게 된다.
ls -l
명령어는 ls
명령어에 -l
옵션이 붙은 명령어로
각 파일에 대한 자세한 정보들을 알려준다.
각 라인에 있는 정보들은 다음과 같다.
-rw-r--r--
: 사용 권한
1
: 링크 카운터
Wooseong Jung
: 파일의 소유자
197121
: 파일 그룹 소유자
41
: 파일 사이즈
Mar 13 2021
: 최종 변경 일시
inst.ini
: 파일명
Linux Permission
각 파일은 사용 권한을 가지는데, 이를 파일 퍼미션이라고 한다.
일단 이번 가이드에서는 퍼미션이 어떻게 구성되는지만 가볍게 알아보도록 하자.
Permission | 의미 | 파일 | 디렉토리 |
r | 읽기(Read) 권한 | 파일 읽기 | 디렉토리 내용을 볼 수 있다. |
w | 쓰기(Write) 권한 | 파일 저장 및 삭제 | 디렉토리에 파일 저장, 디렉토리명 변경 및 삭제 가능 |
x | 실행(Execution) 권한 | 파일 실행 | 디렉토리에 접근할 수 있다. |
s | SetUID, SetGID 권한 | 파일 소유자, 그룹 소유자 권한으로 실행 | |
t | Sticky BIt 권한 | 공유 디렉토리로 사용됨 |
SetUID(Set User ID) : 파일은 실행 시, 해당 파일의 소유자 권한으로 실행된다.
SetGID(Set Group ID) : 실행 시, 소유자가 아닌 그룹의 권한으로 실행된다.
Sticky Bit : 소유자만 해당 파일이나 디렉토리를 변경하거나 삭제 가능
8진수 | 표시되는 퍼미션 | 의미 |
0 | --- | 아무 권한 없음 |
1 | --x | 실행 권한만 있음 |
2 | -w- | 쓰기 권한만 있음 |
3 | -wx | 쓰기와 실행 권한만 있음 |
4 | r-- | 읽기 권한만 있음 |
5 | r-x | 읽기와 실행 권한만 있음 |
6 | rw- | 읽기와 쓰기 권한만 있음 |
7 | rwx | 모든 권한(읽기, 쓰기, 실행) |
파일 유형
문자 | 의미 |
- | 일반 파일 |
b | 블록 구조의 특수 파일(/dev/sda) |
c | 입출력에 사용되는 특수 파일(dev/console) |
d | 디렉토리 |
l | 심볼릭 링크 파일(Symbolic Link File) |
사용 예시
d | r | w | x | r | - | x | r | - | - |
파일 유형 | 소유자 권한 | 그룹 소유자 권한 | 일반 사용자 권한 |
위 예시는 754
이런 식으로 작성될 수도 있다.
리눅스는 다중 사용자 시스템(Multi User System)으로
여러 사용자가 파일/디렉토리에 접근할 수 있기 떄문에 보안을 위해 별도로 권한을 부여할 필요가 있다.
침조 : 리눅스 퍼미션(Permission) 사용 방법 by ª_ª
ls -a
명령어는 list 중에서 숨겨진 파일까지 보여주는 -a
옵션이 추가된 명령어이며,
ls -l
과 합쳐서 ls -al
로도 사용할 수 있다. → 숨겨진 파일의 상세정보까지 불러옴
📌 cd (Change Directory)
// 사용법
$ cd [디렉토리 경로]
// 예시
$ cd C:\Program Files\Git
cd 명령어는 디렉토리의 위치를 이동하기 위해 사용하는 명령어이다.
cd 뒤에 이동하고 싶은 디렉토리 경로를 입력하면 해당 디렉토리로 이동하고
cd 뒤에 아무런 인자(Argument)를 입력하지 않으면, 홈 디렉토리로 돌아온다.
📌 pwd (Print Working Directory)
// 사용법
$ pwd
pwd 명령어는 현재 작업 중인 디렉토리의 경로를 출력하는 기능을 한다.
📌 mkdir (Make Directory)
// 사용법
$ mkdir [디렉토리 이름]
// 예시
$ mkdir Program Files
mkdir 명령어는 현재 디렉토리 하위에 새로운 디렉토리를 만드는 명령어이다.
📌 rm (Remove) & rmdir(Remove directory)
// 사용법
$ rm [파일명]
$ rm [옵션] [파일명 또는 디렉토리명]
$ rmdir [디렉토리명]
// 예시
$ rm teamviewer.exe
$ rmdir Emptydir
$ rm -r Program Files
rm은 파일을 삭제하는 명령어이고 rmdir은 비어있는 디렉토리를 삭제하는 명령어이다.
그렇다면, 파일이 존재하는 디렉토리는 어떻게 삭제할까?
rmdir이 아닌, rm에 -r
이라는 옵션을 붙이고 디렉토리명을 입력하면
파일이 존재하는 디렉토리도 삭제할 수 있다.
📌 cp (Copy)
// 사용법
$ cp [옵션] [파일] [디렉토리 경로] -> 현재 디렉토리에 파일이 있을 경우
$ cp [옵션] [파일 경로] [디렉토리 경로] - > 다른 디렉토리에 파일이 있을 경우
// 예시
$ cp Modesty.txt C:\Program Files\Git
cp 명령어는 원하는 디렉토리에 파일읇 복사하는 기능을 가진다
주의할 점은 복사하고 싶은 파일이 현재 디렉토리에 있다면 상관없지만,
다른 디렉토리에 파일이 위치한다면 파일 경로를 사용하여 입력해야 한다.
📌 mv (Move)
// 사용법
$ mv [옵션] [파일] [디렉토리 경로] -> 현재 디렉토리에 파일이 있을 경우
$ mv [옵션] [파일 경로] [디렉토리 경로] - > 다른 디렉토리에 파일이 있을 경우
$ mv [기존 파일 이름] [새로운 파일 이름] -> 파일명 변경
// 예시
$ mv Modesty.txt C:\Program Files\Git -> 이동
$ mv Modesty.txt Graffitio.txt -> 파일명 변경
mv 명령어는 원본 파일을 다른 디렉토리로 이동시키는 명령어이고,
해당 명령어를 사용하여 파일명도 변경이 가능하다.
📌 cat (Concatenate)
// 사용법
$ cat [파일명]
$ cat [파일명1] [파일명2] > [결합된 파일의 이름]
// 예시
$ cat Modesty
$ cat Modesty.txt Graffitio.txt > Rich.txt
cat 명령어는 파일 내용을 출력하거나 여러 파일을 하나로 결합한다.
cat 명령어를 사용하여 파일을 결합한 결과는 아래와 같다.
📌 chmod(Change Mode)
// 사용법
$ chmod [옵션] [모드] [파일 또는 디렉토리명]
// 예시
$ chmod -R 750 directory
$ chmod u+rwx,g+rx,o+r file.txt
chmod 명령어는 파일 또는 디렉토리의 권한을 변경하는 기능을 가진다.
주요 옵션으로는 -R (재귀)가 있으며,
위 예시는 디렉토리와 그 하위 디렉토리에 대한 권한을 재귀적으로 변경한다.
750의 의미는 본 게시물 위쪽의 Linux Permission을 참고할 것.
다음 예시는 file.txt 파일에 대한 권한을 소유자에게 읽기, 쓰기, 실행 권한을 부여하고
그룹에게 읽기, 실행 권한을, 기타 사용자에게 읽기 권한을 부여한다.
📌 ps (Process Status)
// 사용법
$ ps [옵션]
// 예시
$ ps aux // 모든 프로세스 리스트 표시
$ ps -u username // 특정 사용자의 프로세스만 표시
$ ps -p proces_id // 특정 프로세스의 정보 표시
ps 명령어는 현재 실행 중인 프로세스의 목록을 표시한다.
$ ps aux
에서 aux는 다음과 같다.
a
: 모든 사용자의 프로세스 표시
u
: 자세한 사용자 정보 표시
x
: 터미널과 관련 없는 프로세스도 표시
📌 kill (Terminate a Process)
// 사용법
$ kill [옵션] [프로세스 ID]
// 예시
$ kill process_id // 프로세스 종료
$ kill -signal process_id // 종료 신호를 사용하여 프로세스 종료
$ kill -9 process_id // 9번 시그널 사용
$ pkill process_name // 프로세스 이름으로 종료하기
$ pkill -u username // 특정 사용자의 모든 프로세스 종료하기
kill 명령어는 실행 중인 프로세스를 종료하거나 신호를 보내는데 사용되며,
주로 특정 프로세스를 종료하기 위해 사용된다.
signal은 보낼 종료 신호를 나타내며, 기본적으로 TERM(15번) 신호가 많이 사용된다.
[기본 명령어 모음]
명령어 | 기능 | 사용법 |
ls | List | ls [옵션] [디렉토리] |
cd | Change Directory | cd [디렉토리 경로] |
pwd | Print Wroking Directory | pwd |
mkdir | Make Directory | mkdir [디렉토리명] |
rm | Remove | rm [파일명] rm [옵션] [파일 또는 디렉토리] |
rmdir | Remove Directory | rmdir [디렉토리명] |
cp | Copy | cp [옵션] [파일] [디렉토리] |
mv | Move | mv [옵션] [파일] [디렉토리] |
cat | Concatenate | cat [파일명] cat [파일명1] [파일명2] > [파일명3] |
chmod | Change Mode | chmod [옵션] [모드] [파일 or 디렉토리명] |
ps | Process Status | ps [옵션] |
kill | Terminate a Process | kill [옵션] [프로세스 ID] |
참조 : 리눅스 기본 명령어 by 문과생의 컴퓨터연구소