<* 파일 및 디렉터리 관리 *>
[ 1 ] ls
◆ ls 명령어는 list의 줄임말로 현재 위치나 특정 경로의 디렉토리 내용의 리스트를 출력하는 명령어 이다.
◆ 리눅스의 기본 명령어 중 제일 많이 사용하는 명령어 이다.
◆ 자주 사용하는 옵션이나 그 외 옵션들의 사용법을 숙지하시면 업무 및 개발에 유용하게 쓰일 수 있다.
◆ 다양한 옵션을 사용하여 디렉토리 및 파일의 권한과 소유자의 데이터를 확인할 수 있고 원하는 형식으로 출력 형식을 변경할 수 있다.
기본 형식 : ls [옵션] [파일 및 디렉토리]
[ 옵션 ]
• -a : all의 줄임말로 모든 파일(숨김 파일 및 디렉터리 포함) 형식을 출력한다.
• -l : 옵션과 조합하여 사용할 수 있다.
※ 숨김 처리된 파일 및 디렉터리는 이름 앞에 . 이 붙습니다.
ex) a의 숨김 파일. a
• -h : human의 줄임말로 사용자가 보기 좋은 형태의 단위로 출력한다.
K 킬로바이트, M 메가바이트, G 기가바이트 형태로 출력한다.
다른 옵션과 조합하여 사용할 수 있다. (파일 크기를 보기 위하여 -l 옵션 사용)
• -l : long의 줄임말로 파일 출력 형식을 긴 목록 형식으로 출력한다.
• -r : reverse의 줄임말로 파일 출력을 거꾸로 출력한다.
다른 옵션과 조합하여 사용할 수 있다.
• -S : 파일 출력 형식을 파일의 크기별로 정렬하여 출력한다.
다른 옵션과 조합하여 사용할 수 있다.
• -t : 최근 수정된 파일을 맨 위로 정렬시켜 출력한다.
다른 옵션과 조합하여 사용할 수 있다.
• -A : 지정된 디렉토리의 현재 디렉터리(.)와 상위 디렉토리( .. )을 제외한 모든 파일 및 디렉토리를 출력한다.
• -b : c-style 알파벨 순으로 파일 및 디렉토리를 출력한다.
• -i : 각 파일의 인덱스 값을 첫 번째 열에 출력한다.
※ 인덱스: 위에서 설명하는 인덱스는 파일 시스템과 관련한 중요한 자료구조 중 하나로서 inode라고 부른다.
• -I : 지정한 파일 및 디렉토리를 제외하고 출력한다.
• -L : 심볼릭 링크의 정보를 출력할 때 원본 파일의 정보를 출력한다.
• -m : 파일의 출력 형식이 디렉토리 및 파일을 쉼표로 구분한다.
• -n : 소유자와 소유자 그룹을 UDI와 GID로 출력한다.
• -R : 현재 위치 및 지정한 디렉토리 및 경로에 하위 디렉토리 파일까지 모두 출력한다.
[ 2 ] cd
◆ change directory의 약자로, 현재 작업중인 디렉토리를 이동하는 명령어이다.
◆ 현재 위치한 디렉토리의 위치를 이동할 수 있다.
◆ 이동할 디렉토리 경로 인자 값에는 절대 경로 뿐만 아니라 상대 경로를 통해 상위 폴더 이동, 이전 폴더 이동을 할 수 있다.
*** 절대 경로 vs 상대 경로 ***
* 절대 경로란 파일 경로의 FULL name을 시작(root)부터 끝까지 다 입력한 것을 말한다.절대 경로의 기준은 "/" (root) 이다.
* 상대 경로란 현재 위치한 폴더를 기준으로 이동하고자 하는 디렉토리로 바로 이동할 때 사용하는 방법이다.
. : 현재 디렉토리
.. : 상위 디렉토리
예 )
$ cd ..
한 단계 상위 디렉토리로 이동
$ cd /
최상위 디렉토리로 이동
$ cd $변수명
변수에 저장된 경로로 이동
$ cd ~
사용자 홈 디렉토리로 이동
$ cd &HOME
$ cd ~계정명
입력한 사용자의 홈 디렉토리로 이동
$ cd -
이전 경로로 이동
[ 3 ] pwd
◆ 현재 작업 디렉터리 확인 (Print Working Directory)
예 )
$ pwd -L
심볼릭 링크 안에 있다면 심볼릭 링크의 경로를 표시한다.
$ pwd -P
심볼릭 링크 안에 있다면 심볼릭 링크가 가리키는 디렉토리 경로를 표시한다.
*** 심볼릭 링크 란? ***
* 단순히 원본 파일을 가리키도록 링크만 연결시켜둔 것으로 윈도우에서의 바로가기 파일과 비슷한 개념이다.
* 원본 파일을 가리키기만 하므로 원본 파일의 크기와 무관하고 원본 파일이 삭제되어 없을 경우 빨간색으로 깜빡이면서
링크 파일의 원본 파일이 없다는 것을 알려준다.
[ 4 ] mkdir
◆ mkdir은 make directory의 약자로 디렉토리(폴더)를 생성할 때 사용하는 명령어 이다.
< 기본 형식 > mkdir [옵션] [생성 할 디렉토리]
▶ 경로를 지정하지 않으면 현 위치를 Defualt로 한다.
▶ 생성할 디렉토리를 여러개 나열하여 한번의 명령어로 복수의 디렉토리를 생성할 수 있다.
[ 자두 사용되는 옵션 ]
• -m : 디렉토리를 생성할 때 권한을 설정한다. (defualt : 755)
• -p : 상위 경로도 함께 생성한다.
• -v : 디렉토리를 생성하고 생성된 디렉토리에 대한 메시지를 출력한다.
예 )
$ mkdir new_folder
new_folder 디렉토리를 생성 한다.
$ mkdir /WORK/project/new_folder
" /WORK/project/"위치에 new_folder 디렉토리를 생성 한다.
$ mkdir new_folder new_folder2 new_folder3
new_folder, new_folder2, new_folder3 디렉토리를 생성 한다.
예 ) 디렉토리 안에 디렉토리를 만들고 싶을때
$ mkdir folder/sub_folder
명령어를 실행시킨다면 리눅스에서는 현재 경로 내에 있는 folder 디렉토리안 에 sub_folder 디렉토리가 생성된다.
**< 에러 발생 > **
sub_folder 상위에 folder의 경로를 찾지 못하여 No such file or directory라는 에러가 난다
$ mkdir -p folder/sub_folder
-p 옵션을 사용해주면 존재하지 않는 folder 디렉토리를 자동으로 생성해주어 계층형 디렉토리를 한번에 만들 수 있다.
[ 5 ] touch
◆ touch 명령어는 파일의 생성과 파일의 날짜, 시간을 변경하는 명령어 이다
- 빈 파일 생성 또는 파일 시간 업데이트
◆ 옵션 없이 사용할 경우 서버의 현재시간으로 변경 된다.
< 기본 형식 > touch [옵션] [파일이름]
[ 옵션 ]
• -m : 파일의 생성, 수정 시간을 서버 시간으로 변경할 경우 사용한다.
• -t : 파일의 생성, 수정 시간을 사용자가 원하는 시간으로 변경할 경우 사용되한다.
예 ) touch 명령어 - 파일 생성
$ touch textfile
$ ls -l textfile
-rw-r--r-- 1 root root 0 Jun 14 10:25 textfile
예 ) touch 명령어 - 날짜, 시간 변경
$ touch -t 202506061230 textfile <---- 파일의 날짜를 수정할 경우 년, 월, 일, 시간으로 입력해야 한다.
$ ls -alh textfile
-rw-r--r-- 1 root root 0 Jun 6 2025 textfile
예 ) touch 명령어 - 서버시간으로 변경
$ touch -m textfile
$ ls -l
-rw-r--r-- 1 root root 0 Jun 6 08:43 textfile
[ 6 ] rm
◆ rm은 remove의 약자로 파일이나 디렉토리( -r 옵션시 삭제가능)를 삭제 시킬 때 사용하는 명령어 이다.
- 파일 또는 디렉터리 삭제 (Remove)
◆ 한번 지운 파일은 복구가 어렵기 때문에 삭제 시 확인 해야 한다.
< 기본 형식> rm [옵션] [삭제 할 디렉토리/파일]
[ 자주 사용하는 옵션 ]
• -f : 강제로 파일이나 디렉토리를 삭제하고 대상이 없는 경우에는 메시지를 출력하지 않는다.
• -r : 디렉토리 내부의 모든 내용을 삭제한다.
• -d : 비어있는 디렉토리들만 제거
• -i : 매번 삭제할 때마다 사용자에게 삭제할 것인지 묻는다.
• -l : 3개의 이상의 파일을 삭제하거나 디렉토리 내부가 비어있지 않을 때만 삭제할 것인지 묻는다.
• -v : 삭제되는 대상의 정보를 출력한다.
예 )
$ rm test.txt new_folder
test.txt 삭제 한다.
$ rm /home/user/test.txt
/home/user/test.txt 삭제 한다.
$ rm -r new_folder
new_folder 디렉토리 삭제 한다.
$ rm -rf new_folder
new_folder 디렉토리 삭제 시 삭제 확인 메시지를 출력하지 않는다.
예 ) 여러 개를 한번에 삭제하고 싶을 때
$ rm test1.txt test2.txt test3.txt
지정한 test1.txt test2.txt test3.txt 를 삭제한다.
$ rm -rf *
현재 위치의 모든 파일 제거 한다.
$ rm *.txt
현재 위치의 .txt로 끝나는 모든 파일 제거 한다.
[ 7 ] cp : 파일 복사 (Copy)
◆ cp은 copy의 약자로 파일이나 디렉토리를 복사할 때 사용하는 명령어 이다.
< 기본 형식 > cp [옵션] [복사 할 디렉토리/파일] [복사 될 디렉토리/파일]
[ 자주 사용하는 옵션 ]
• -i : 복사될 파일이 이름이 이미 존재할 경우, 사용자에게 덮어 쓰기 여부를 묻다.
• -b : 복사될 파일이 이름이 이미 존재할 경우, 백업파일을 생성한다.
• -f : 복사 될 파일이 이름이 이미 존재 할 경우, 강제로 덮어쓰기 한다.
• -r : 하위 디렉토리 까지 모두 복사한다.
• -a : 원본 파일의 속성, 링크 정보까지 모두 복사 한다.
• -p : 원본 파일의 소유자, 그룹, 권한 등의 정보까지 모두 복사 한다.
• -v : 복사 진행 상태를 출력한다.
▶ cp 명령어의 옵션을 제외한 인자 값은 생략이 불가능 하다.
▶ 경로를 지정하지 않으면 현 위치를 Defualt로 한다.
▶ 복사할 때 새로운 이름을 지정하여 복사할 수 있다.
▶ 다양한 옵션을 사용하여 기존의 파일이나 디렉토리를 보호하는 등의 행동을 취할 수 있다.
예 ) 디렉토리 복사
$ cp -r org_folder /WORK/
현재 위치에 있는 org_folder 디렉토리를 /WORK/ 디렉토리로 복사
$ cp -r org_folder new_folder
현재 위치에 있는 org_folder 디렉토리를 new_folder 디렉토리라는 이름으로 복사
예 ) 여러 개를 한번에 복사
$ cp test1.txt test2.txt test3.txt /WORK/
test1.txt test2.txt test3.txt 들을 /WORK/로 복사
$ cp * /WORK/
현재 위치에 있는 모든 파일을 /WORK/ 복사
[ 8 ] mv: 파일 이동 또는 이름 변경 (Move)
◆ mv는 move의 약자로 파일이나 디렉토리를 이동시킬 때 사용하는 명령어이다.
< 기본 형식 > mv [옵션] [이동할 파일 또는 디렉터리(폴더)] [이동 될 위치]
[ 옵션 ]
• -b : 이동할 파일이 이미 존재할 경우 백업 파일을 만든다.
• -i : 이동할 파일이 이미 존재할 경우 사용자에게 덮어쓰기 여부를 묻는다.
• -f : 이동할 파일이 이미 존재할 경우 강제로 덮어쓰기 한다.
• -n : 이동할 파일이 이미 존재할 경우 덮어쓰기를 하지 않는다.
• -u : 파일이 변경된 경우에만 이동한다.
• -v : 이동 진행 상태를 화면에 출력해 준다.
▷ mv 명령어는 경로를 지정하지 않고 사용하면 현재 위치를 기준으로 사용된다.
▷ mv 명령어는 이동할 때 다른 이름으로 변경해서 옮길 수 있다.
▷ mv 명령어는 현재 위치에서 다른 이름으로 변경하는 용도로도 사용할 수 있다.
▷ mv 명령어는 이동만 하기 때문에 권한이나 소유자/그룹 등이 변경되지 않는다.
▷ cp 명령어와 달리 복사가 아니기 때문에 굉장히 빠르다.
* 그냥 사용할 경우 같은 이름의 파일이 이미 존재하면 덮어쓰기가 되기 때문에 사용에 유의해야 다.
예 )
$ mv log.txt folder
현재 디렉토리의 log.txt 파일을 folder 디렉토리로 이동
$ mv /app/bin/logs/log.txt /app/dw
/app/bin/logs 디렉토리의 log.txt 파일을 /app/dw 디렉토리로 이동
$ mv backup.dump /opt/backup
현재 디렉터리(폴더)의 파일 backup.dump을 /app/backup 디렉터리(폴더)로 이동
$ mv backup.dump old_backup.dump
파일 이름을 변경 : 현재 디렉터리(폴더)의 파일 backup.dump 를 old_backup.dump로 변경
$ mv -r ./testDir /app/backup/
현재 디렉터리(폴더) ./testDir 를 /opt/backup/ 디렉터리(폴더) 하위로 이동
예 ) 여러 개를 한번에 이동
$ mv test1.txt test2.txt test3.txt /opt/
test1.txt test2.txt test3.txt 를 /opt/ 디렉토리로 이동
$ mv -r * /opt/
현재 위치의 모든 파일괴 디렉토리를 /opt/ 디렉토리로 이동