Study/리눅스

리눅스 2일차(리눅스 Directory 명령어)

됵이 2022. 7. 17. 12:24

파일 관리 명령어

pwd : 디렉터리 절대경로 출력

pwd #현재 작업중이 디렉터리의 절대 경로 출력

cd : 디렉터리 이동

cd [이동할 디렉터리]

cd ./ #현재 디렉터리

cd ../ #상위 디렉터리

cd ~/ #현재 사용자의 홈 디렉터리로 이동

cd # 홈디렉터리로 이동

cd / #루트 디렉터리로 이동

cd -/ #바로 이전 디렉터리로 이동

ls : 디렉터리/파일 확인

ls #현재 디렉터리 구성 내용 출력

ls [디렉터리 명] # 지정한 디렉터리 구성 내용 출력

[옵션]

ls -a #(all) 숨김파일을 포함하여 모든 파일의 목록을 출력

ls -s #(size) 파일 크기 순으로 출력

ls -l #(long) 파일의 상세정보를 출력

ls -h #(human) 파일크기 단위를 사람이 보기 좋게 출력

ls ../ # 부모 디렉토리 표시
 
ls -R # (Recursive) : 하위 디렉토리의 목록까지 모두 출력.
 
ls -n # 소유자 및 그룹을 이름 대신 UID / GID로 출력
 
ls -d # 현재 디렉토리의 정보를 출력.
 
ls -i # 첫번째 행의 inode 번호를 출력.
 
ls -g # 소유자 정보 빼고 파일 조회
 
ls -A # (.)와 (..)를 제외한 모든 파일을 출력.
 
ls -L # 심벌릭 링크 파일의 경우 원본 파일의 정보를 출력.

ls -u # 파일, 디렉토리 이름을 최종 접근 시간 순으로 화면에 출력
 
ls -r # (reverse) : 거꾸로 출력(기본 출력은 알파벳 순서)
 
ls -lu # (a time) : 접근 시간을 출력

ls -lc # (ctime) : 변경 시간을 출력
 
ls -d */ # 파일을 제외한 디렉토리만 반환

mkdir :  디렉터리 생성

mkdir [디렉터리 명]

mkdir [디렉터리 명] [디렉터리 명] [디렉터리 명]
# 디렉터리 여러개 생성

mkdir -p temp/ex1/ex2
#하위 디렉터리 경로대로 생성(-p옵션은 상위 디렉터리가 없으면 상위 디렉터리 먼제 만드는 옵션)

rmdir : 디렉터리 삭제

rm => 디렉터리 삭제시 안에 파일이 존재해도 삭제 가능

# 디렉토리 삭제. 단 하위 디렉토리가 없는 빈 디렉토리여야지 가능하다.
rmdir [디렉토리]
 
# 여러개 삭제
rmdir [디렉토리명] [디렉토리명] [디렉토리명]
 
# 디렉토리 및 하위디렉토리를 같이 삭제. 단, 부모 디렉토리가 비었을 경우
rmdir -p 파일명/하위디렉토리
 
# 디렉터리 삭제 (디렉터리는 -r 옵션 없이 삭제 불가)
# 디렉토리 안에 파일이 있어도 강제 삭제!!
rm -r [대상 디렉토리]

cp : 파일/디렉터리 복사

cp -r [복사할 디렉터리] [붙여넣을 경로]

[옵션]

cp -a 
#원본 파일의 속성/링크 정보를 그대로 복사
cp -b
#복사할 대상이 이미 있을 경우 백업후 복사
cp -d
#복사할 파일이 심볼릭 링크일 경우 자체를 복사
cp -f
#복사할 대상이 있으면 강제로 지우고 복사
cp -i 
#복사할 대상이 있으면 사용자에게 메시지를 띄운 후 복사
cp - l 
#하드링크 형식으로 복사
cp -p
#파일의 소유자, 그룹, 권한, 시간 정보들을 그대로 복사
cp -r
#파일은 그냥 복사 / 디렉터리는 디렉터리 전체가 복사
cp -s 
#파일을 심볼릭 링크 형식으로 복사 
cp -u
#복사할 파일이 이미 있을겨우 변경 날짜가 같거나 최신이면 바꾸지 않는다. 
cp -v 
#복사 상태를 보여준다. 
cp -R
#디렉터리 복사의 경우 디렉터리 안에 포함된 하위 경로들을 함께 복사

mv : 파일/디렉터리 이동

=> 같은 디렉터리 내에서 파일 이동시 이름 변경 효과를 가진다. 

mv [이동할 디렉토리] [대상 디렉토리]

[옵션]

mv -b 
#백업 후 복사
mv -f
#같은 파일이 있는 경우 덮었을 것인지 물어보지 않고 바로 복사
mv -i 
#같은 파일이 있는 경우 덮었을 것인지 물어본다. 
mv -v 
#이동중인 상태를 물어본다.

touch : 빈파일 생성/수정 날짜 변경 

  • 기본적인 기능은 날짜 변경을 할때 사용
  • 파일이 없으면 빈 파일 생성
  • 파일이 존재하면 수정 기간 변경
  •  
touch [옵션] 파일이름
touch -a #atime 만 변경
touch -m #mtime 만 변경 
touch -t #지정한 타임스탬프 설정
touch -r #현재시간이 아닌 지정한 파일의 타임스탬프로 변경
touch -c #파일은 생성하지 않음

파일 내용 관련 명령어

cat : 빈파일 생성/수정 날짜 변경 / 파일 합치기

cat filename
#filename 내용을 출력

cat filename filename2
#filename 내용과 filename2를 출력

cat filename filename2 | more 
#filname 과 filename2 를 페이지 별로 출력

cat filename filename2 | head
#filname 과 filename2 를 처음부터 10번째 줄까지만 출력
#head 뒤에 5를 붙이면 -5번째 줄까지만 출력

cat filename filename2 | tail
#filname 과 filename2 를 끝에서 10번째 줄까지만 출력
#파일 합치기

cat pass_* > pass.copy &
#pass_00,01... 로 나누어진 파일들을 pass.copy 하나로 합친다.

wc: 파일 내용 정보 출력

wc [옵션] 파일명

[옵션]
#-l : 줄 수를 셈(line)
#-w : 단어의 갯수를 셈 (word)
#-c : 바이트 수를 셈 (bytes)
#-L :  가장 긴줄의 길이를 출력(max-line_length)

#라인수 단어수 바이트수

sort : 파일내용 정렬

sort [옵션] [파일명] 

[옵션]

#-r: 역순(내림차순) 정렬 / 기본은 오름차순
#-f: 대소문자 구별안함
#-n: 숫자로 정렬
#-k숫자: k1 -> 1번째 필드를 기준으로 정렬
#-u: 정렬 후 중복된 내용을 제거 
#-b: 선행 공백 무시
#-R: 해시의 키값 기준, 랜덤 정렬
#-h: --human(2K, 1G)
#-c: 정렬되어 있는지 검사
#-m: 이미 정렬된 파일들을 병합
#-o: 파일출력
#-t: 필드 구분자를 지정

#ex)
cat test.txt | sort -r 
#test.txt 파일을 역순으로 출력

cut : 파일내용 자르기 

cut [옵션] 파일

[옵션]
#-c 문자위치: 잘라낼 곳의 글자 위치를 지정한다. 
#-f 필드 : 잘라낼 필드를 정한다. 
#-d 구분자 : 필드를 구분하는 문자를 지정한다. 
#-s : 필드 구분자를 포함 할 수 없다면 그 행은 하지 않는다.

split : 파일 나누기

split [option] file [file_name] 
#-l : 라인수 기준으로 파일을 분할

split -l 10 /etc/passwd test_
#파일 내용이 test_aa,test_bb,test_cc 이런식으로 생성

#-b : 분할되는 기준을 바이트 크기로 분할
 
#-a : 분할되는 파일뒤에 붙을 길이를 지정 
#-d : 분할 파일 이름뒤에 영문이 아닌 숫자로 지정 (0부터 시작)
split -l 10 -d /etc/passwd test_
#파일 내용이 test_00,test_01,test_02 이런식으로 생성
 
#-n : 파일을 균등하게 1/N 나누어 분할
#-C : 라인을 기준으로 지정 바이트가 넘지 않도록 파일을 분할