본문 바로가기
# Programming/- Linux 생태계 생존 가이드

[Linux] 기본 명령어 및 사용법 - 리눅스 생태계 생존 가이드 Part.2

by Graffitio 2023. 10. 5.
[Linux] 기본 명령어 및 사용법 - 리눅스 생태계 생존 가이드 Part.2
728x90
반응형

 

지난 가이드에서는 리눅스의 정의, 구성요소 및 기능에 대해 알아보았다.

리눅스는 운영체제 중 하나로, 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 만 쳤을 때는 쓸 수 없는 명령어라하면서 어떻게 하면 결과를 출력할 수 있는지도 알려준다.

좀 더 자세한 내용이 필요할 때는 maninfo 명령어가 있는데, 

추가로 설치해야 하므로 이번에는 생략한다.

 


 

📌 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 문과생의 컴퓨터연구소

728x90
반응형