목표
1. 디렉토리 이동 관련 명령어
2. 디렉토리 관리 명령어
3. 파일 관리 명령어
4. 파일 내용 확인 명령어
5. 기타 관리용 명령어
1. 디렉토리 이동 관련 명령어
▷ pwd CMD
- 현재 / 작업 디렉토리명을 출력한다.
# pwd

▷ cd CMD
- 작업 디렉토리를 변경 한다.
- cd 명령어를 사용하여 디렉토리 경로를 변경하는 경우 상대경로(Relative Path)나 절대경로(Absolute Path)를 사용 할 수 있다.
- 상대경로 : 이동하는 기준이 현재 디렉토리이며, 현재 디렉토리를 기준으로 위, 아래로 이동할 때 사용한다.
# cd dir
- 절대경로 : 이동하는 기준이 최상위 디렉토리(/)이며, root(/) 디렉토리를 기준으로 이동할 때 사용한다.
# cd /dir1
- 디렉토리 파일 구조

2. 디렉토리 관리 명령어
▷ ls CMD
- 디렉토리의 내용을 나열한다.
# ls
- 명령어 형식
# ls -l
# ls -l dir1
# ls -ld
# ls -ld dir1
# ls -altr
- 명령어 옵션
-a : 모든 파일 표시한다.
-l : 디렉토리가 지정되는 경우 디렉토리의 내용을 자세히 보여준다. 파일의 내용이 지정되는 경우 파일의 속정 정보를 자세히 보여준다.
-R : 해당 디렉토리와 서브 디렉토리의 모든 내용을 표시한다.
-F : 디렉토리인 경우에는 디렉토리 "/"표시를 하고 실행 파일인 경우는 뒤에 "*" 표시를 한다.
-i : 해당 파일의 inode 번호를 표시한다.
-n : 파일의 소유자와 그룹을 숫자로 표시한다.
-d : 찾고자 하는 디렉토리에 관한 정보만을 표시한다.
-u : 파일 사용 시간 순으로 정렬한다.
-t : 파일 시간 순으로 정렬한다.
-r : 정렬 순서를 내림차순으로 한다.

※ tree CMD를 사용하면 하위 디렉토리 까지 출력된다.
▷ mkdir CMD
- 새로운 디렉토리를 생성한다.
- 명령어 형식
# mkdir dir1 /* 현재 디렉토리에 dir1 디렉토리 생성 */
# mkdir dir1 dir2 /* 현재 디렉토리에 dir1, dir2 디렉토리 생성 */
# mkdir -p dir3/dir2/dir1 /* dir3 디렉토리 안에 dir2를 생성하고 dir2 안에 dir1을 생성 */
- 명령어 옵션
-m : 디렉토리의 퍼미션 권한을 지정 (기본값 : 755)
-p : 디렉토리 경로로 생성 (디렉토리를 만들 때 상위 디렉토리가 없을 시 상위 디렉토리까지 생성)

디렉토리를 생성후 tree CMD를 사용하여 확인한 모습.
▷ rmdir CMD
- 빈 디렉토리를 지운다.
- 명령어 형식
# rmdir dir1 /* dir1 디렉토리 삭제 */
# rmdir dir1 dir2 /* dir1, dir2 디렉토리 삭제 */
# rmdir -p dir3/dir2/dir1 /* 경로에 포함되어 있는 디렉토리 삭제 (비워있어야 함) */
- 명령어 옵션
-p : 하위항목을 같이 지움 ( 하위항목도 비워 있어야 함)
※ 비어있지 않는 디렉토리 삭제 ( 아래에 rm CMD 내용에서 한번 더 나옴)
# rm -rf dir1
-r : 빈 디렉토리가 아닌데 지워도 되냐고 묻는다. ( r : recursive )
-rf : 물어보지 않고 그냥 바로 삭제 ( f : force )
3. 파일 관리 명령어
▷ touch CMD
- 파일의 시간 정보를 바꾼다. 파일의 이름을 지정하여 존재하지 않는 파일이름을 지정하면 빈파일을 만들어 주고, 기존에 존재했던 파일을 지정하면 파일이나 디렉토리의 수정시간이나 접근시간 등을 현재시간으로 업데이트 시켜준다.
- 명령어 형식
# touch file1 /* file1 파일 생성 */
# touch file1 file2 /* file1, file2 파일 생성 */
# touch -t 08081230 file1 /* file1 수정 시간 변경 (월,일,시,분) */
- 명령어 옵션
-a : 최근 파일 사용기간 만 변경
-c : 파일을 생성하지 않는 명령어
-d [시간] : 현재 시간 대신 지정한 시간으로 변경
-m : 최근 파일 변경 시간만 변경
-r [파일] : 현재 시간 대신 지정한 파일의 시간으로 변경
-t MMDDhhmm : 현재 시간 대신 지정한 시간으로 변경

실습 결과
▷ cp CMD
- 파일 복사
- 명령어 형식
# cp file1 file2 /* file1 파일내용을 file2로 복사 */
# cp file1 dir1 /* file1 파일을 dir1디렉토리에 복사 */
# cp -r dir1 dir2 /* dir1 디렉토리를 dir2 디렉토리로 복사 */
- 명령어 옵션
-a : 원본 파일의 속성, 링크 정보를 유지 하면서 복사
-b : 복사할 대상을 덮어쓰고나 지울 때를 대비해서 백업 파일 만듬
-d : 심볼릭 파일 자체를 심볼릭 정보와 함께 복사할 때 사용
-f : 복사할 파일이 존재할 때 삭제하고 복사
-i : 복사할 파일이 존재하는 경우 복사할 것인지 물어봄
-l : 디렉토리가 아닌 경우 복사 대신 하드 링크로 만듬
-p : 원본 파일의 소유, 그룹, 권한, 허용 시간을 보존한 채로 복사
-r : 서브 디렉토리 내에 있는 모든 파일까지 통째로 복사
-s : 디렉토리가 아닌 경우 복사 대신 심볼릭 링크로 만듬
-u : 대상 파일보다 원본 파일이 새로운 것일 때 복사
-v : 복사 상태를 보여줌
※ 실무에서 쓰이는 예
- 로그파일(EX: file.log) 비우기
# cp /dev/null file.log
# cat /dev/null > file.log
# > file.log
# cd /test
# cp -p /var/log/messages file.log
# cp -f /dev/null file.log
# ls -l file.log
-> 파일의 크기 '0' 확인

- 설정 파일을 백업 받고 설정하는 경우
# cd /etc/httpd/conf
# cp -p httpd.conf httpd.conf.old
▷ mv CMD
- 파일 옮기기 (rename)
- 명령어 형식
# mv file1 file2 /* file1 파일 이름이 file2로 변경 */
# mv file1 dir1 /* file1 파일이 dir1 디렉토리의 하위경로로 이동 */
# mv dir1 dir2 /* dir1 디렉토리가 dir2 디렉토리의 하위경로로 이동 */
- 명령어 옵션
-b : 복사할 대상을 엎어 쓰고나 지울때를 대비해서 백업 파일을 만듬
-f : 복사할 파일이 존재할 때 삭제하고 복사
-i : 복사할 파일이 존재하는 경우 복사할 것인지 물어봄
-u : 대상 파일보다 원본 파일이 새로운 것일 때 복사
-v : 파일 옮기기 전의 과정을 보여 줌
▷ rm CMD
- 파일 지우기
- 명령어 형식
# rm file1 /* file1 파일 삭제 */
# rm file1 file2 /* file1, file2 파일 삭제 */
# rm -r dir1 /* dir1 디렉토리 하위경로까지 삭제 */
- 명령어 옵션
-f : 강제로 파일을 지우고 삭제할 파일이 없을 경우에도 아무런 메시지를 보여주지 않는다.
-i : 파일을 삭제할 것인지 사용자에게 물어봄
-r, -R : 일반파일이면 그냥 지우고 디렉토리일 경우 그 하위경로와 파일을 모두 지움
-v : 삭제되는 파일의 정보를 보여줌
※ rm 명령어로 지운 파일 복구 (100% 장담할 수 없음)
# debugfs /dev/sda3
(TUI) debugfs CMD 사용하는 방법 (ext2, ext3)
(TUI) extundelete CMD (ext3, ext4)
(GUI) TestDisk 툴을 사용하는 방법(Windows(FAT32/NTFS), Linux(ext3/ext4)