일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
- rbenv
- Develop
- linux
- Advanced
- 소스트리
- fixed
- git branch
- Express
- git
- WEB
- route
- React
- Rebase
- Nodejs
- commit
- relative
- css
- Reset
- Basic
- Remote
- workflow
- root
- Process
- Box Model
- sourcetree
- html
- Teamwork
- git checkout
- Merge
- crud
- Today
- Total
Codesigner
[Linux] 리눅스(Linux) 파일 시스템 구조 및 명령어 본문
WindowsOS를 사용하다 보면, 어느 파일이 어디에 있는지 예측할 수 있다. 가령, 인터넷에서 다운로드한 파일들은 다운로드 폴더에, 설치 프로그램을 실행하여 어떤 프로그램을 설치하게 된다면 이는 C드라이브 안의 Program Files폴더 안에 설치될 것이란 걸 알 수 있다. 리눅스(Linux)에서도 이와 유사한 파일 시스템이 존재한다. 리눅스에서는 제일 최상위 디렉터리를 루트(root)라고 하고, 그 밑에 usr, etc, home 등의 여러 가지 목적을 가진 디렉터리들이 존재한다. 이번 포스팅에서는 이러한 디렉터리들이 어떠한 목적으로 사용되고, 이런 파일 시스템 안에서 우리가 활용할 수 있는 리눅스 커맨드들은 어떤 것들이 있는지 알아보도록 하자
파일과 디렉토리
리눅스의 파일 시스템을 간단하게 나타낸 그림은 아래와 같다
앞에서 말했다시피 제일 위에 최상위 디렉터리로 루트 디렉토리가 존재하며, 이는 '/' 로 표시한다. 루트 디렉토리를 시작으로 하여 다른 디렉토리들을 절대 경로로 나타낼 수 있다(e.g. /home/cam/book/aaiw). 또한 사용자가 현재 위치하고 있는 디렉토리를 알고있다면, 상대경로로 이를 나타낼 수도 있다
위 그림에서 home 디렉터리 밑으로 많은 파일과 폴더들이 존재하는 것을 볼 수 있다. 홈 디렉토리는 리눅스 사용자 각각에게 할당된 디렉토리로, Debian 또는 Ubuntu 등에서는 /home/username 으로 구분되어 제공된다. 사용자 자신의 홈 디렉토리로 이동하는 명령어는 cd 이다. 매개변수가 없는 cd 명령은 자신의 홈 디렉토리로 이동한다. 또한 HOME 환경 변수는 자신의 홈 디렉토리 이름을 값으로 가진다. 그리고 디렉토리 명이 들어갈 자리에 있는 ~ 은 자신의 홈 디렉토리 명으로 대체된다
홈 디렉터리 외에도 여러 목적을 가진 디렉토리들이 존재한다. 이러한 디렉토리 들에는 어떠한 것이 있고, 해당 디렉토리의 목적에 대한 간단한 설명을 나타내면 다음과 같다
-
/(루트)
-
최상위 디렉터리
-
리눅스의 모든 디렉터리들의 시작점이며, 절대경로로 표기할 때 이 디렉토리를 먼저 표시해야 한다
-
-
/bin
-
기본 명령어들이 저장된 디렉토리
-
루트 사용자와 일반 사용자가 함께 사용할 수 있는 명령어가 존재하며, mv, cp, rm 등이 여기에 속한다
-
부팅 시스템이 필요로 하는 프로그램들 또한 여기에 속한다
-
-
/boot
-
부트로더(Boot Loader)가 존재하는 디렉터리
-
-
/dev
-
시스템 디바이스(device) 파일을 저장하고 있는 디렉터리
-
디스크파일 /dev/sda 등이 존재하는 디렉터리이다
-
-
/etc
-
시스템 설정 파일이 존재하는 디렉토리
-
-
/home
-
사용자의 홈 디렉토리
-
새로운 사용자를 추가하면 사용자 이름과 동일한 이름의 디렉터리가 생성된다
-
-
/lib
-
커널이 필요로 하는 라이브러리 프로그램이 존재하는 디렉토리
-
-
/media
-
USB와 같은 탈부착 형태의 장치들이 마운팅 하는 마운트 포인트 디렉터리
-
-
/sbin
-
시스템 관리자용 명령어들과 부트 시스템이 필요로 하는 저수준(low-level) 프로그램이 존재하는 디렉터리
-
-
/tmp
-
임시 디렉터리
-
시스템을 사용하는 모든 사용자들이 공동으로 사용하는 디렉터리이다
-
-
/usr
-
일반 사용자들이 사용하는 프로그램과 데이터가 존재하는 디렉터리
-
-
/usr/bin
-
일반 사용자들이 사용하는 프로그램과 명령어들이 존재하는 디렉터리
-
-
/usr/lib
-
일반 사용자들이 사용하는 라이브러리가 존재하는 디렉터리
-
-
/usr/local
-
MySQL, Apache, PHP(일명 APM) 등의 애플리케이션을 설치할 때 사용되는 디렉터리
-
리눅스 파일 시스템에서는 이외에도 다양한(아주 많은..) 디렉터리들이 존재한다. 처음부터 그러한 디렉터리를 다 외울 필요는 없다. 리눅스를 사용하면서 차근차근 알아갈 수 있으니 위 정도의 기본적인 디렉터리만 알아도 리눅스를 처음 진입하는 데에 수월할 것이다
파일 시스템 명령어
이번 섹션에서는 리눅스 파일 시스템을 다루는 기본적인 명령어들에 대해서 알아보자. 기본적인 명령어들을 표로 나타낸 것은 아래와 같다
-
ls
-
현재 디렉터리의 파일 목록을 나열한다
-
-
cd dir
-
현재 디렉터리를 "dir" 로 변경한다
-
-
pwd
-
현재 디렉터리 경로를 출력한다
-
-
cp source_file target_file
-
source_file을 target_file로 복사한다
-
-
cp file1 file2 ... fileN dir
-
여러 개의 파일을 동시에 dir로 복사한다
-
-
cp [-r] source_dir target_dir
-
디렉터리와 그 내용을 한 번에 복사한다
-
-
mv old_name new_name
-
파일이나 디렉터리의 이름을 변경한다
-
-
rm file1 file2 ...
-
파일들을 삭제한다
-
-
rm [-i] file
-
파일을 삭제할 때 사용자에게 확인을 요청한다
-
-
rm [-r] dir1 dir2 ...
-
주어진 디렉터리와 그 하부 디렉토리 및 파일을 연속적으로(recursive) 삭제한다
-
-
mkdir dir
-
디렉터리를 생성한다
-
-
rmdir dir
-
비어있는 디렉터리를 삭제한다
-
비어있지 않은 경우 rm -r dir을 이용
-
-
cat file
-
주어진 파일을 표준 출력으로 출력한다
-
-
more file
-
주어진 파일을 페이지 단위로 출력한다
-
키보드 입력 시 다음 페이지로 이동한다
-
검색 기능을 제공한다(/ command)
-
-
less file
-
more과 비슷한 기능을 하는데, 역 방향 이동이 가능하다(? command)
-
-
head [n] file
-
파일의 처음 n 라인을 출력한다
-
-
tail [n] file
-
파일의 마지막 n 라인을 출력한다
-
tail f file
명령은 처음 10 라인을 보여주고, 새로운 라인이 추가되면 계속 출력한다. 로그를 볼 때 편리하다
-
-
grep pattern file
-
주어진 파일에서 주어진 패턴을 포함하는 라인들을 찾아서 출력한다
-
e.g.
grep error *.log
-
-
grep [i] pattern file
-
대소문자를 구분하지 않는 옵션
-
-
grep [ri] pattern dir
-
현재 디렉터리와 그 하위 디렉터리의 모든 파일에 대해서 recursive 하게 검색한다
-
-
touch file
-
주어진 이름의 (빈) 파일을 생성한다
-
단축키
리눅스는 커맨드 창에서 단축키를 활용할 수 있다. 기본적인 커맨드 단축키들은 다음과 같다
커맨드 창에서 위를 향하는 화살표 방향키 버튼을 누르면 이전에 입력했던 명령을 다시 가져올 수 있다. 탭 키를 누르면 파일 및 디렉터리 이름을 자동완성시켜준다. 같은 이름의 파일들이 2개 이상인 경우 해당 파일들을 나열한다. Ctrl+C 버튼을 누르면 현재 실행 중인 프로세스를 강제로 종료한다. 다른 여러 단축키들에 대한 설명은 표에 잘 나와있으므로 생략하도록 하겠다
Review
지금까지 리눅스에서의 파일 시스템이 어떤 구조를 갖추고 있고, 각 디렉터리에는 어떠한 것들이 있는지 살펴보았다. 또한 리눅스 파일 시스템을 다루는 기본적인 명령어들을 살펴보았고, 터미널에서 사용할 수 있는 몇 가지 단축키들을 살펴보았다. 이번 포스팅에서 많은 것들을 다루었는데 이 명령어들을 직접 실습함으로써 익혀볼 수 있는 시간을 가졌으면 좋겠다. 다음 포스팅에서는 파일 접근 권한을 관리하고 기타 쉘 기능들에 대해서 알아보도록 하자
'Linux' 카테고리의 다른 글
[Linux] 리눅스(Linux) 패키지 관리하기 (0) | 2019.06.17 |
---|---|
[Linux] 리눅스(Linux) 사용자 및 그룹 관리 (0) | 2019.06.17 |
[Linux] 리눅스(Linux) 프로세스 & 환경변수 관리 (0) | 2019.06.17 |
[Linux] 리눅스(Linux) 파일 접근 권한 & 쉘 기능 (0) | 2019.06.16 |
[Linux] 리눅스(Linux) 개요 (0) | 2019.04.18 |