본문 바로가기
OS/LINUX

리눅스, 파일과 디렉토리에 대한 모든 것

by joa-yo 2023. 10. 10.
반응형

리눅스의 중요한 개념

리눅스는 모든 것을 파일로 취급하는데요, 리눅스에서 실행되는 모든 프로그램들이 파일로 관리된다는 의미입니다. 그렇기 때문에 파일과 디렉토리에 대해 아는 것은 매우 중요합니다.

 

파일 및 디렉토리 명령어

명령어 ls

ls는 list를 의미하며, 디렉터리 내용을 출력하는 명령어다. 주로 ls -al로 사용한다.

짧은옵션 긴옵션 설명
-a --all 모든 파일을 보여준다.
.으로 시작하는 숨김파일도 보여준다.
-d --directory 디렉토리 자체에 대한 정보를 보여준다.
-F --classify 파일명에 파일종류를 알려주는 문자렬 보여준다.
실행파일 *. 디렉터리 /, 심볼릭 링크 @
-h --human-readable 바이크 크기가 아닌, 읽기 쉬운 형태로 가공하여 보여준다.
1024 => 1K
-i --inode inode번호를 보여준다.
-l --formant=long 긴 포맷의 결과를 보여준다.
-r --reverse 알파벳 오름차순이 아닌, 내림차순으로 리스트에 표시한다.
-R --recursive 재귀적으로 수행하여, 서브디렉터리 내용도 나열한다.
-S --sort=size 파일 크기 오름차순 정렬
-t --sort=time 최종 수정시간 순서대로 정렬

$ ls -al 출력결과

파일 리스트는 많은 정보를 담고 있는데, 이를 읽는 방법을 알아두는 것은 리눅스 사용에 많은 도움이 된다.

 

디렉토리 명령어

명령어 설명
cd [파일경로] 디렉토리로 이동한다.
mkdir [디렉토리명 ...] 디렉토리를 만들 수 있으며, 한번에 여러개 생성가능.

옵션 p : 필요한 경우 상위디렉토리를 만들고 디텍토리를 생성함

mkdir -p 하위디렉토리1/하위디렉토리2
rmdir [디렉토리명] 디렉토리를 삭제한다. 단, 비어있는 디렉토리만 삭제 가능
rm [디렉토리명] 파일이나 디렉토리를 삭제한다.
디렉토리 내의 파일과 하위 디렉토리를 삭제하려면 rm -r dir, rm -rf dir을 사용한다. (하지만 복구가 안되므로 주의가 필요하다)
rm을 안전하게 사용하기
alias rm='rm -i' 명령어를 실행하여 rm명령어를 실행 할 때, 물어보도록 한다.

 

파일 복사 & 이동 명령어

명령어 설명
cp copy 파일 또는 디렉토리 복사
cp [option...] file1 file2
=> file1을 file2로 복사한다. file2가 이미 존재하는 경우 덮어씌우므로 -i옵션을 사용한다.
cp -r [option...] file... dir => file1을 dir1 디렉토리 하위로 복사한다.
cp -r [option...] dir1 dir2 => 명령어를 사용해, 디렉토리 하위의 모든 내용을 복사할 수 있다.
mv move 파일 또는 디렉토리 이동 및 이름 변경
mv [option...] file1 file2 => file1을 file2로 이름을 변경한다. file2가이 이미 존재하는 경우 덮어씌운다.
mv [option...] dir1 dir2 => dir1을 dir2로 이름을 변경한다. dir2가 이미 존재하는 경우, dir1이 dir2의 서브디렉터리로 이동된다.
mv [option...] file... dir => 마지막 인자가 존재하는 디렉토리라면, 여러 파일들을 지정 디렉터리로 이동시킨다.

 

파일 읽기 명령어

명령어 설명
more [파일명] 파일 내용이 큰 경우 한화면을 보여주고 일단 멈춤
- 다음화면 보기 : space bar
- 다음라인 보기 : enter
- 종료 : q
more -20 +10 /etc/services => 20라인 단위로 보여주며, 10번째 라인부터 보여줌
less more의 개선된 버전
방향키나, page up, page down으로 스크롤 할 수 있다.
head 파일의 맨 앞부분 출력
head -n -5 /etc/services => 맨 앞 5줄 출력
tail 파일의 맨 뒷부분 출력
tail -f -n 20 /server/logs/catalina.out
=> 맨 뒤 20출을 출력하며, 변화하는 파일 내용을 계속 감시할 수 있음. 실시간으로 로그 볼 때 자주 사용
cat 파일내용 확인하기
cat file => 파일 내용이 전체 출력된다.
파일종류

정규파일(-)
- 데이터를 저장하는 데 사용하는 보통의 파일이다. 
디렉터리(d)
- 리눅스에서는 디렉터리도 파일이다.
- 디렉터리에는 저장된 파일이나 하위 디렉터리에 대한 정보가 저장된다.
심볼릭링크(l)
-'소프트링크'라고도 하며, 원본 파일을 가리키는 링크다. 윈도우의 '바로가기'와 비슷하다.
장치파일
- 프린터, 키보드 같은 각종 장치를 파일로 취급한다.
- 블록 디바이스 파일(b) 과 문자 디바이스 파일(c)로 구분된다.

 


파일의 접근권한

 

분류 구성
사용자 부류 소유자(u), 그룹(g). 기타(o)
권한 읽기(r, 4), 쓰기(w, 2), 실행(x, 1)

디렉토리를 자유롭게 사용하려면, 읽기와 실행권한이 필요하다. 디렉터리로 이동하거나 ls명령어를 사용 할 수 있다.

 

파일 접근권한 명령어

명령어 설명
chmod [option...] mode files 파일 소유자가 파일의 접근 권한을 변경한다.
chmod -R 755 dir1 => -R 옵션을 디렉터리에 적용하면, 포함된 모든 파일과 서브 디렉토리까지 권한을 변경한다.
- dir1과 모든 파일 및 하위디렉토리에 대하여 권한을 변경한다.
- 소유자: 읽기,쓰기,실행 / 소유 그룹&기타 : 읽기,실행

chmod [u+x] file1 => file1에 대한 소유자의 실행권한을 추가한다.
umask [-S] [mask] 파일이나 디렉터리 접근 권한의 기본값 출력, 설정
umask
=> 002 출력, 디렉터리에 775, 파일에 664권한 부여 (기본적으로 파일은 실행권한을 부여하지 않기 때문에 1을 뺌)
umask -S => u=rwx,g=rx,o=rx 출력

touch file1 => 파일 접근/수정 시간을 현재시간으로 변경하며 파일이 존재하지 않으면 파일을 생선한다. 이를 이용해서 파일을 생성하고, 이 때 파일생성시 접근 권한을 확인할 수도 있다.
chown [option...] newowner files change owner, 소유자를 변경하는 명령어
파일이나 디렉토리가 생성되면, 생성한 사람이 소유자이며, 해당 그룹이 소유그룹으로 설정된다.


chown username: =>  소유자와 소유자 그룹 모두 변경
chown :group => 소유자 변경없이 그룹 변경

파일 링크 명령어

명령어 설명
ln [option...] file1 file2 hard link,파일을 다른 이름으로 연결하는 명령어

    - 파일 링크 카운트 증가
    - 파일에 생성 가능 / 디렉터리에 생성 불가능
    - 다른 파일시스템에 있는 파일에 링크 생성 불가능

ln file1 file2
ln [option...] dir1 dir2 symbolic link,디렉토리의 바로가기 생성
    - 윈도우의 '바로가기'와 같은 독립적인 파일
    - 다른 파일시스템에 심볼릭 링크를 만들 수 있다.
    - 원본을 삭제하면, 의미가 없어진다.
    - 디렉토리에 생성 가능 / 파일에 생성 불가능

ln -s dir1 dir2

하드링크 예시

$ ln file file2 ; ls -ali
51894433 -rw-r--r--. 2 username username  12 10월 10 13:23 file
51894433 -rw-r--r--. 2 username username  12 10월 10 13:23 file2

file과 file2를 하드링크를 걸어주었더니, 파일의 링크 카운트가 1에서 2로 증가하였다. 원본 파일의 새로운 이름이 생성되는 것이며, 새로운 파일이 만들어지는 것은 아니다. 파일을 하나를 열어서 수정한 뒤 두 파일의 내용을 확인해보면 동일한 내용을 확인할 수 있다.둘 중 하나가 삭제되는 경우 해당 파일을 삭제 되고, 다른 파일은 링크 카운트가 1감소하며, 다른 영향은 없다. 즉, 파일의 다른 이름이 삭제되는 것으로 생각하자.

 

소프트링크 예시

$ ln -s dir1 dir2 ; ls -al
18721165 drwxr-xr-x. 2 username username  16 10월 10 11:43 dir1
51894440 lrwxrwxrwx. 1 username username   2 10월 10 13:20 dir2 -> dir1

심볼릭 링크는 파일정보가 i로 표시되며, t2가 t1을 가리키고 있음이 표시된다.

 

 

알아두면 좋은 명령어

명령어 출력결과 설명
file [파일경로/파일명] file.out: UTF-8 Unicode text 파일의 종류를 알려준다.
pwd /home/username 현재 디렉토리 경로를 알려준다.

 

반응형

'OS > LINUX' 카테고리의 다른 글

CentOS7 image 다운로드 / VMware 가상화  (0) 2020.08.28
리눅스 명령어 정리  (1) 2020.08.27
VIM - 빔 에디터 사용법 (윈도우)  (0) 2020.06.18

댓글