오늘은 리눅스 기본 명령어의 두번째 시간이며 디렉터리 및 파일에 대한 명령어를 살펴보도록 하겠습니다.
디렉터리 관리 명령어
~$ pwd
- 현재 작업 중인 디렉터리 위치 표시
[형식]
~$ pwd
[예제]
~$ pwd
/home/stllin
~$ cd
- 디렉터리 이동
[형식]
~$ cd (상대경로 OR 절대경로) 설정경로
- 상대 경로 : 현재 작업 디렉터리 기준으로 표시
- 절대 경로 : /를 기준으로 경로에 모든 디렉터리 표시
[설정경로]
- ~ : 홈 디렉터리
- . : 현재 디렉터리
- .. : 한단계 상위 디렉터리
- / : 루트 디렉터리
- - : 이전 디렉터리
[예제]
~$ cd ~
~$ pwd
/
~$ mkdir
- 디렉터리 생성
[형식]
~$ mkdir 옵션 디렉터리명
[옵션]
- -m : 권한 설정 (기본 : 755)
- -p : 상위 경로 생성
- -v : 생성된 디렉터리 메세지 출력
[예제]
~$ mkdir test
~$ ls
test
~$ rmdir
- 디렉터리 삭제
- 디렉터리 안에 파일이 존재하는 경우 삭제되지 않는다.
[형식]
~$ rmdir 디렉터리명
[예제]
~$ ls
test1 test2 test3 test4 test5
~$ rmdir test1
~$ ls
test2 test3 test4 test5
파일 관련 명령어
~$ ls
- 현재 디렉토리의 파일 목록 출력
[형식]
~$ ls 옵션 경로명
[옵션]
- -a : 숨겨진 파일을 포함한 모든 파일과 디렉터리
- -l : 퍼미션, 크기, 사이즈 등 자세한 정보
- -d : 지정된 디렉터리 정보
- -r : 알파벳 역순
- -R : 하위 경로와 그 안에 있는 파일
[예제]
~$ ls
test2 test3 test4 test5
~$ cp
- 파일 또는 디렉터리 복사
[형식]
~$ cp 옵션 원본 대상
[옵션]
- -b : 복사 대상 파일이 이미 존재할 경우를 대비하여 백업 파일 생성
- -f : 복사 대상이 이미 존재하면 복사 대상 파일을 강제로 지우고 복사
- -i : 복사 대상이 이미 존재하면 사용자에게 덮어씌울 것인지 확인
- -r : 디렉터리를 복사할 경우 하위 디렉터리와 파일을 모두 복사
[예제]
~$ ls
test4
~$ cat test4
you can do it
~$ cp test4 test5
~$ ls
test4 test5
~$ cat test5
you can do it
~$ rm
- 파일 또는 디렉터리 삭제
[형식]
~$ rm 옵션 (파일명 OR 디렉터리명)
[옵션]
- -f : 질의 메시지 없이 강제로 파일이나 디렉터리 삭제
- -i : 삭제 시 사용자에게 질의
- -r : 삭제 디렉터리가 포함하고 있는 하위 디렉터리를 포함하여 모든 파일 삭제
[예제]
~$ ls
test1 test2 test3 test4 test5
~$ rm -rf test1
~$ ls
test2 test3 test4 test5
~$ mv
- 파일 또는 디렉터리 이동
- 파일명 변경
[형식]
~$ mv 옵션 원본대상
[옵션]
- -b : 백업 파일 생성
- -f : 대상 파일이 이미 있어도 사용자에게 어떻게 처리할지 묻지 않음
- -v : 파일이 옮겨지는 과정 상세 표시
[예제]
~$ ls
TeST
~$ cat TeST
Hi
~$ mv -v TeST TESt
`TeST' -> `TESt'
~$ ls
TESt
~$ cat TESt
Hi
~$ touch
- 크기가 0byte인 빈 파일 생성
- 서버의 현재 시간으로 타임 스템프 변경
- 타임스템프 : 파일의 시간 정보를 나타내는 것으로 접근시간, 수정시간, 변경시간이 있다.
- 접근시간 : 애플리케이션이나 서비스가 시스템 호출을 사용해 파일을 읽을 때마다 접근시간이 갱신
- 수정시간 : 파일 내용이 변경될 때 파일 수정 시간이 갱신
- 변경시간 : 파일 내용을 수정했을 때 기록되는 시간으로 변경 불가능
[형식]
~$ touch 옵션 파일명
[옵션]
- -a : 접근시간 변경
- -m : 수정시간 변경
- -c : 시스템 현재 시간으로 파일 시간 정보 수정
- -t 시간정보 : 특정 파일의 시간 정보 변경
- -r 파일1 파일2 : 파일1의 시간 정보를 파일2에 동일하게 적용
~$ file
- 파일의 종류 및 파일 속성 값을 출력
[형식]
~$ file 옵션 파일명
[옵션]
- -b : 파일명은 출력하지 않고 파일 유형만 표시
- -f : 파일 목록에서 지정한 파일들에 대해서만 명령 실행
- -z : 압축파일 내용 출력
- -i : MIME 타입 문자로 출력
~$ find
- 현재 디렉터리부터 하위 디렉터리까지 주어진 조건의 파일을 찾아 해당 경로 출력
[형식]
~$ find 경로 옵션 정규표현식 파일명
[옵션]
- -name : 이름을 기준으로 파일 검색
- -user : user의 파일이나 디렉터리 검색
- -perm : 지정된 권한의 파일 검색
- -type : 파일 유형에 따라 파일 검색
- -atime n : n일 전에 접근한 파일 검색
- -exec : 검색된 파일에 수행할 명령어 지정
~$ locate
- 파일의 위치를 찾아 출력
[형식]
~$ locate 파일명
txt 파일 관련 명령어
~$ cat
- 파일의 내용 출력
[형식]
~$ cat 옵션 파일
[옵션]
- -n : 각 문장 앞에 번호 표시 (빈 행 포함)
- -b : 각 문장 앞에 번호 표시 (빈 행 제외)
- -s : 연속되는 2개 이상의 빈 행을 한 행으로 출력
- -A : 텍스트 파일에 존재하는 개행 문자나 탭 문자 등을 확인
[예제]
~$ ls
aja
~$ cat aja
d3d3d3
~$ head
- 파일의 앞부분을 지정한 만큼 출력
[형식]
~$ head 옵션 파일명
[옵션]
- -c : 출력을 원하는 용량 지정(byte 단위)
- -숫자 OR -n 숫자 : 출력을 원하는 줄 수 지정
~$ tail
- 파일의 마지막 행을 기준으로 지정한 행까지의 파일 내용 일부를 출력
[형식]
~$ tail 옵션 파일명
[옵션]
- -c : 출력을 원하는 용량 지정
- -숫자 OR -n 숫자 : 출력을 원하는 줄 수 지정
- -f : 지정된 파일에 새롭게 추가되는 파일 내용 실시간 출력
- -v : 파일 출력 시 파일명 표시
- -q : 파일 출력 시 파일명 표시하지 않음
~$ more
- 파일을 화면 단위로 끊어서 출력
- 위에서 아래 방향으로만 출력
- 지나간 내용 다시 볼 수 없다.
[형식]
~$ more 옵션 파일명
[옵션]
- -숫자 : 한 페이지에 표시되는 라인 수
[작업 키]
- Space Bar : 다음 페이지로 전환
- Enter : 한 줄씩 출력
- Ctrl + D : 반 페이지 출력
- Ctrl + B : 이전 페이지 출력
- Q : 종료
- /패턴 : 지정한 패턴의 문자열 검색
~$ less
- 텍스트 파일을 한 번에 한 화면씩 출력
- 기능적으로 more를 확장한 것으로 커서를 화면의 상하좌우로 이동할 수 있음
~$ grep
- 파일에서 특정한 패턴(문자열) 또는 정규 표현식으로 나타낸 단어를 찾는 명령어이다.
[형식]
~$ grep 옵션 문자열 파일명
[옵션]
- -r : 디렉터리 내의 모든 디렉터리와 파일들을 검색하도록 지정
- -E : 패턴을 정규 표현식으로 확장
- -i : 대소문자 차이 무시
- -v : 검색할 문자열이 포함되지 않은 줄만 출력
- -n : 라인 수 출력
- -l : 문자열이 포함된 파일명 출력
~$ wc
- 파일의 라인 수, 단어 수, 알파벳 수 출력
[형식]
~$ wc 옵션 파일명
[옵션]
- -l : 전체 라인 수 출력
- -w : 전체 단어 수 출력
- -c : 전체 문자(알파벳) 수 출력
[출력형식]
라인수 단어수 알파벳수 해당파일명
[예제]
~$ ls
text5
~$ wc test5
2 14 56 test5
~$ sort
- 명령어 결과나 문서 내용 정렬
[형식]
~$ sort 옵션 파일명
[옵션]
- -b : 앞 공백 무시
- -o : 저장할 파일 명시
- -r : 역순으로 표시
- -f : 대소문자 구분하지 않음
- -t : 필드 구분자 지정
- -u : 중복 행 제거
- -m : 정렬 파일 병합
- -n : 숫자만 비교
~$ cut
- 파일에서 특정 필드를 추출
- 필드는 구분자로 구분
[형식]
~$ cut 옵션 파일명
[옵션]
- -c : 잘라낼 곳의 글자 위치 지정. 콤마나 하이픈을 사용하여 범위 지정
- -f : 잘라낼 필드 지정
- -d : 필드 구분자 지정. 디폴트는 탭
- -s : 대소문자 구분하지 않음
~$ split
- 하나의 파일을 여러 개의 작은 파일로 분리
[형식]
~$ split 옵션 파일명
[옵션]
- -b : 파일을 byte단위로 분할
- -l : 파일을 주엊ㄴ 라인 수 단위로 분할
파일 비교 명령어
~$ diff
- 두 개의 파일을 행 단위로 비교하여 다른 부분을 출력
[형식]
~$ (diff 옵션 파일1 파일2) OR (diff 옵션 디렉터리1 디렉터리2)
[옵션]
- -b : 연속된 공백 무시
- -i : 대소문자 구분하지 않음
- -s : 두 파일이 같은지 확인
- -r : 두 디렉터리 차이점 출력
~$ cmp
- 두 개의 파일을 바이트(문자) 단위로 비교하여 출력
[형식]
~$ cmp 옵션 파일1 파일2
[옵션]
- -b : 두 파일 간의 다른 바이트 출력
- -i : 두 파일 간의 다른 문자 위치와 문자를 출력
- -s : 아무 것도 출력하지 않고 실행 결과 코드만 반환
~$ comm
- 두 개의 파일을 줄 단위로 비교하여 출력
[형식]
~$ comm 옵션 파일1 파일2
[옵션]
- -1 : '파일1'에만 있는 내용을 제외하고 내용 출력
- -2 : '파일2'에만 있는 내용을 제외하고 내용 출력
- -3 : '파일1'과 '파일2'에 공통으로 존재하는 내용을 제외하고 출력
리다이렉션
- 표준 입력과 표준 출력의 방향을 재지정
- 표준 입력/출력/에러가 화면이 아닌 파일로 대체된다. 즉, 모니터로 출력이 파일로 재지정
[표준 장치]
- 표준 입력 장치 : 키보드
- 표준 출력 장치 : 모니터
- 표준 에러 장치 : 모니터
[리다이렉션 연산자]
- >
- 명령을 화면에 출력하는 것이 아니라 프린터나 파일에 출력하도록 전송
- 파일이 존재하지 않으면 새로운 파일을 만들고 같은 파일이 존재하면 덮어씀
- >>
- 파일이 있는 경우 지정된 파일에 결과를 추가
- 파일이 존재하지 않으면 지정된 이름으로 파일 생성
- <
- 키보드가 아닌 지정된 파일에서 입력 내용 읽어옴
- >&
- 명령의 출력을 다른 명령의 입력으로 보냄
- <&
- 명령의 입력을 읽고 다른 명령의 출력으로 보냄
파이프
- 둘 이상의 명령을 함께 묶어 출력 결과를 다른 프로그램이 입력으로 전환하는 기능
- 현재 명령의 표준 출력을 다음 명령의 표준 입력으로 사용
- 명령어와 명령어의 연결은 '|' 기호 사용
- 더 이상 처리할 명령어가 없으면 표준 출력 장치인 화면으로 출력한다.
[형식]
명령어 | 명령어 | 명령어
정규표현식
^
- 라인의 첫 글자
$
- 라인의 끝 글자
.
- 한 글자
*
- * 기호 바로 이전의 글자나 정규 표현식이 0회 이상 반복
[]
- 대체 글자 목록을 []에 나열
- "-"로 문자 범위 지정
[^]
- 대체 못할 글자 목록을 [^]에 나열
- "-"로 문자 범위 지정
+
- + 기호 바로 이전 글자나 정규 표현식이 1회 이상 반복
?
- ? 기호 바로 이전 글자나 정규 표현식이 없거나 1회만 존재
()
- 부분 정규 표현식의 시작과 끝을 표시
|
- |로 구분된 단어들 중 최소 하나 존재
{m,n}
- {} 기호 바로 이전 글자나 정규 표현식이 m개 이상 n개 이하 반복
참고서 : 2023 이기적 리눅스마스터 2급 기본서
내용 : 86p ~ 107p