리눅스 ; 파일 및 디렉토리 다루기

SongWoo Yu·2025년 2월 8일

오늘은 리눅스의 디렉토리 구조 및 종류와 특징, 파일의 종류, 경로(절대/상대 경로), 명령어, 링크파일을 정리하려고 한다.

먼저 리눅스 디렉토리의 구조는 트리 구조이다. 파일을 효율적으로 관리하려 계층적으로 구성한 것이다. 이 모든 디렉토리의 출발점은 루트(root)라고 하고, / 로 표현한다. 다시 말하면 가장 상위 디렉토리는 root directory인 것이다.

다음은 디렉토리의 종류와 특징이다.
/
파일 시스템이 있는 최상위 디렉토리로 루트 디렉토리
/boot
부트 디렉토리로 부팅에 관련된 파일이 있는 곳
/proc
시스템 정보를 가진 디렉토리, 커널 기능을 제어하는 역할(CPU, Memory, 파티션 정보를 가짐)
/lib
라이브러리 디렉토리
/bin
기본적인 명령어 저장
/dev
장치 파일 모음(mouse, keyboard, SSD 등)
/etc
시스템 설정 파일
/root
관리자용 홈 디렉토리
/sbin
시스템 관리와 관련된 실행 명령어 저장
/usr
사용자 디렉토리로 사용자 데이터나 애플리케이션 저장
/home
사용자 계정 디렉토리로 계정의 홈 디렉토리가 위치함
일반 사용자들이 로그인 시 처음으로 위치하는 디렉토리
/var
가변 자료 저장 디렉토리로 로그 파일이나 메일 데이터 저장
/tmp
프로그램이나 프로세스 작업을 할 때, 임시 생성 파일 저장
모든 사용자에 대하여 읽기와 쓰기가 허용
/mnt
임시 마운트할 때 사용
/lost+found
결함이 있는 파일에 대한 정보가 저장되는 디렉토리

다음으로 파일의 종류를 알아보려고 한다. 이에 앞서 파일이란 효과적인 관리를 위한 연관성 있는 정보들의 집합이라고 한다. 이러한 파일을 조회하거나 종류를 확인하고 싶다면 ls -l 명령어를 이용하면 된다. 그리고 이렇게 조회한 파일의 세부 내용을 알고 싶다면 file ~(파일명과 확장자)를 이용하면 크기랑 파일 형식 등 다양한 정보가 나오는 참고하면 된다.

파일의 종류에는 링크파일(L)과 장치파일(C)이 있는데, 링크 파일이란 리눅스에서 원본 파일을 대신하여 윈도우의 바로가기 아이콘처럼 다른 이름으로 파일명을 지정하는 것을 말한다. 세부적으로는 심볼릭 링크와 하드 링크가 있다.
장치파일이란 리눅스 시스템에 연결된 장치들을 관리하기 위한 특수 목적으로 사용되는 파일을 말한다. 예를들어 SSD, USB, Keyboard와 같은 장치를 관리할 때 사용되는 파일인 것이다.

이제 경로에 대해 알아보겠다. 경로는 절대 경로와 상대 경로로 나뉘는데, 절대 경로는 모든 시작이 /(root)에서 시작되는 경로이고, 상대 경로는 모든 시작이 현재 디렉토리로부터 시작되는 경로를 말한다. cd 명령어 사용으로 정리해보면, 절대 경로는 cd /etc/bin/php와 같이 가장 상위 디렉토리부터 차근차근 하위 디렉토리로 이동하는 경로를 의미하는 것이다. 반면 상대 경로는 cd ../../../bin/php와 같이 자신의 디렉토리 기준으로 위, 위, 위 디렉토리로 이동, 거기서 다른 하위 디렉토리로 이동하여 찾아내는 경로인 것이다. 결국 시작점이 어디냐는 의미이다.

다음으로 파일과 관련된 명령어를 알아보려고 한다. 먼저 디렉토리 내의 파일과 디렉토리들을 조회하는 ls와 비슷한 명령어 dir, vdir. 이는 리눅스의 여러 버전에서만 가능하고 내가 사용하는 유닉스 기반의 mac의 zsh에서는 실행되지 않는다.

디렉토리를 생성하는 명령어인 mkdir 사용법은 다음과 같다. mkdir ~을 실행하면 ~디렉토리가 생성된다. 그리고 mkdir ~ @ #을 입력하게 된다면 ~, @, #이라는 세 개의 디렉토리가 만들어진다. 그리고 mkdir -p ~/!을 하게 되면 /이전의 ~이 부모 디렉토리 !가 자식 디렉토리로 하위에 생성되게 된다.

디렉토리를 삭제하는 명령어는 rmdir이다. rm자체는 파일 삭제도 가능한 명령어이고 rm -rf를 사용하면 권한 상관 없이 모든 파일과 디렉토리를 삭제할 수 있다. 이때 r옵션은 디렉토리 삭제 시(때)라는 의미, f(force)는 강제이다. rm -i는 삭제 시 삭제할 것인지 확인하게 해주는 옵션이다. rmdir -p 옵션을 사용하면 하위 디렉토리까지도 삭제할 수 있다.

cat 명령어는 파일의 내용을 출력하여 보여주는 명령어이다. 보통은 cat ~으로 사용하고, cat -n옵션은 행 번호를 붙여서 출력하게 된다.

more은 화면 단위(크기대로)로 파일을 출력해준다. space bar을 누르면 다음화면이 출력되고 /문자열을 입력하면 해당 문자열을 검색할 수 있다. enter을 치게되면 한줄씩 스크롤된다. 다 보면 q로 탈출한다.

마지막으로 링크파일을 알아보려고 한다. 리눅스에서 파일의 구성은 file명+inode+데이터 블록으로 구성된다. 파일명은 사용자가 파일에 접근할 때 사용하는 파일의 이름으로 다들 알고 있을 것이다. inode는 파일에 대한 정보를 가진 특별한 구조체로 외부적으로는 번호로 표시되고 내부적으로는 파일의 종류, 크기, 소유자, 파일 변경 시간, 파일명 등 상세 정보와 데이터 블록의 주소를 저장해놓는 것이다. 파일의 indoe번호는 ls -i 명령으로 확인 가능하다. 이때 파일명 앞에 출력된 숫자가 같다면 파일명이 다랄도 같은 파일인 것이다.
하드 링크란 기존 파일의 새로운 이름(파일명)을 추가로 부여하는 것으로 indoe번호가 같다면 두 파일은 하드 링크로 이어져 같은 파일인 것이다. 그리고 심볼릭 링크란 윈도우에서의 바로가기 아이콘같이 원본 파일을 가리키는 파일이다. 링크파일 만드는 방법은 다음과 같다 ln 명령어를 사용하면 되는데 ln ~.txt !.txt는 ~파일을 !파일로 만들라는 의미(하드링크)이다. 그리고 ln -s ~.txt ~.txt는 ~파일을 심볼릭 링크파일인 !을 만들라는 옵션이다. 그렇다면 i-node를 확인해야 한다. ls -i로 봤을 때 하드링크는 번호가 다르고, 심볼릭 링크는 번호가 같다. 하드링크는 원본파일 삭제해도 열리고, 심볼릭 링크는 열지 못한다.

0개의 댓글