지극히 개인적인 공부 노트/리눅스(Linux)

[Linux] 리눅스 명령어(파일 관련)

AS J 2021. 8. 8. 17:11

리눅스의 기초적인 명령어(https://as-j.tistory.com/67)에 이어서, 파일과 디렉터리에 대한 명령어 중 내가 공부한 명령어를 이 글에 정리해봤다.

우선, 리눅스 명령어 이전에 내 컴퓨터의 전체적인 디렉터리 구조를 알고 싶을 때는 tree 명령어를 통해 알 수 있다. 단, 이 명령어는 일반 bash나 터미널 창이 아닌, 명령 프롬프트 창(cmd)에 tree를 입력해야 한다.

아래 명령어는 cmd가 아닌 bash나 shell에 입력하면 되며, 명령어 사용 형식에서 대괄호([ ])로 묶인 부분은 생략 가능하고, 공백이나 마침표 등을 유의하며 봐야 한다. 공백으로 구분되는 것은 서로 다른 요소이며, 공백 또한 함께 포함하여 명령어로 입력해야 한다.

 

chmod [옵션] 모드 파일명

파일이나 디렉터리의 접근 권한을 변경하는 명령어. 접근 권한은 소유자, 그룹, 그 외 사용자가 있고, 각 유형에 따라 가능한 작업을 rwx(읽기-4, 쓰기-2, 실행-1)의 합으로 나타낸다. ex) chmod 751 hello.txt → hello.txt에 대해 소유자는 rwx(읽기, 쓰기 실행) 모두 가능, 그룹은 rx(읽기, 실행)만 가능, 그 외 사용자는 x(실행)만 가능하도록 권한을 부여한다는 의미이다.

-c, --changes : 변경된 파일 정보를 출력한다.
-f, --silent, --quiet : 대부분의 에러 메시지를 출력하지 않는다.
-R, --recursive : 하위 디렉터리에 있는 모든 디렉터리/파일을 변경한다.
--reference=filename : 지정한 파일을 참조하여 퍼미션을 변경한다.
-v, --verbose : 각 파일 정보를 상세히 출력한다.
--version : 버전 정보를 출력한다.

 

chown [옵션] 소유자:[그룹명] 파일
chown [옵션] .그룹명 파일

파일의 소유자와 그룹을 변경하는 명령어. root 권한(가장 강력한 권한)이 있어야 가능하다.

-f, --silent, --quiet : 파일 권한 변경 실패 시 에러를 출력하지 않는다.
-R, --recursive : 하위 디렉터리에 있는 모든 디렉터리와 파일을 변경한다.
-v, --verbose : 각 파일에 대해 변경한 정보나 변경되지 않은 정보를 상세히 출력한다.
--version : 버전 정보를 출력한다.

 

mkdir [옵션] 디렉터리명

디렉터리 생성하는 명령어. 권한 부여도 함께 설정할 수 있으며, 추가 설정이 없는 경우에 기본적으로 755의 실행 권한을 갖는다.(chmod 명령어 설명 참고)

-m, --mode 모드 : 새로 만들 디렉터리의 권한을 설정한다.
-p, --parents : 상위 경로도 함께 생성한다.
--version : 버전 정보를 출력한다.

 

touch [옵션] 파일명

최근에 파일에 접근한 시간과 최근에 파일을 변경한 시간(파일 내용이 변경된 시점)을 시스템의 현재 시간으로 변경하는 명령어. 만약 파일이 존재하지 않는 경우엔 0바이트 크기의 빈 파일을 생성한다.

-a : 접근 시간을 변경한다.
-c, --no-create : 지정한 파일을 생성하지 않는다.
-d, --date=STRING : 현재 시간 대신 지정한 시간(STRING)으로 변경한다.
-m : 파일의 변경 시간을 수정한다.
-r, --reference=FILE : 지정한 파일(FILE)의 시간으로 변경한다.
-t STAMP : 현재 시간 대신 지정한 시간으로 변경한다. [[cc]yy]mmddhhmm[.ss] 형식이다([cc]yy:년, mm:달, dd:일, hh:시, mm:분, ss:초).
--version : 버전 정보를 출력한다.

 

rmdir [옵션] 디렉터리명

현재 위치를 기준으로 하위에 파일이나 디렉터리가 비어 있을 경우에만 삭제하는 명령어. 비어 있지 않은 경우, 메시지를 출력하며 삭제되지 않는다.

--ignore-fail-on-non-empty : 디렉터리가 비어 있지 않은 경우 삭제할 수 없다. 이때 메시지를 출력하지 않는다.
-p, --parents : 상위 경로도 지운다. 상위 디렉터리도 비어 있어야 한다.
--verbose : 상세한 정보를 출력한다.
--version : 버전 정보를 출력한다.

 

rm [옵션] 파일명또는디렉터리명

지정된 디렉터리나 파일을 하나씩 삭제하는 명령어. 특별한 옵션이 없으면 디렉터리 삭제가 불가능하다.

-f, --force : 강제로 파일이나 디렉터리를 삭제하고, 삭제할 대상이 없을 경우 메시지를 출력하지 않는다.
-i, --interactive : 매번 삭제할 때마다 사용자에게 물어본다.
-I : 셋 이상의 파일을 삭제하거나 하위의 파일이나 디렉터리가 있을 경우 사용자에게 물어본다. -i 옵션보다는 확인 절차가 적으나 대부분의 사용자 실수는 막을 수 있다.
--interactive[=WHEN] : 상호 대화형 모드로 값(WHEN)을 지정한다. 이 값은 once(-I 옵션과 같음)나 always(-i 옵션과 같음)가 올 수 있다. 값을 지정하지 않으면 always가 기본이다.
--no-preserve-root : “/”을 특별하게 취급하지 않는다.
--preserve-root : “/”을 삭제하지 않는다(기본값이다).
-r, -R, --recursive : 하위 디렉터리를 포함하여 모든 내용을 삭제한다.
-v, --verbose : 지워지는 파일의 정보를 화면에 출력한다.
-R : -r 옵션과 같은 역할을 한다.
--version : 버전 정보를 출력한다.

 

cp [옵션] 원본파일 복사파일
cp [옵션] 대상위치/파일명 복사하고싶은위치

파일을 다른 파일이나 디렉터리로 복사하는 명령어. 같은 이름의 대상 파일이 있는 경우에도 물어보지 않고 바로 덮어쓰며, 이는 복구할 수 없기 때문에, 이 같은 실수를 방지하기 위해 alias 설정을 cp='cp -i'로 설정해야 한다.(alias 명령어 설명 참고)

-a, --archive : -dR --preserve=all 옵션과 같다.
-b, --backup : 복사 대상 파일이 있을 경우를 대비하여 백업 파일을 만든다.
-d, --no-deference : 원본 파일이 소프트링크 파일이면 소프트링크 원본을 복사한다.
-f, --force : 복사 대상 파일이 있으면 복사 대상 파일을 강제로 지우고 복사한다.
-i, --interactive : 복사 대상 파일이 있으면 사용자에게 복사 여부를 물어본다.
-l, --link : 심볼릭 링크 형식으로 복사한다.
--parents : 원본 파일명에 디렉터리 경로도 같이 입력했다면 그 경로를 그대로 복사한다.
-p, --preserve : 원본 파일의 소유자, 그룹, 권한, 시간 정보를 그대로 보존하여 복사한다.
-s, --symbolic-link : 디렉터리가 아닌 일반 파일을 심볼릭 링크 형식으로 복사한다.
-u, --update : 변경일이 같거나 더 최신의 복사 대상 파일이 있으면 복사하지 않는다.
-v, --verbose : 복사 상태를 자세하게 출력한다.
-x, --one-file-system : 원본 파일과 대상 파일의 파일 시스템이 서로 다를 경우에는 파일을 복사하지 않는다.
-R, -r, --recursive : 디렉터리를 복사할 경우 하위 디렉터리와 파일을 모두 복사한다.
--version : 버전 정보를 출력한다.

 

mv [옵션] 대상위치/이름 이동하고싶은위치/이름

파일 및 디렉터리를 이동하거나 이름을 변경하는 명령어. 만약 대상 위치의 파일명과 이동한 파일명을 다르게 설정하면 파일명이 변경되는 기능을 하고, 이동할 파일이 여러 개일 경우는 이동 모드로만 동작한다. 단, 이동할 위치에 이미 같은 이름이 존재하면 이동되지 않는다.

--backup[=CONTROL] : 대상 파일이 존재하면 백업 파일을 생성한다.
-b : --backup과 비슷하게 백업 파일을 생성한다.
-f, --force : 사용자에게 묻지 않고 파일을 덮어쓴다.
-i, --interactive : 존재하는 파일을 덮어쓸 경우 확인한다.
-n, --no-clobber : 존재하는 파일을 덮어쓰지 않는다.
-S, --suffix=SUFFIX : 지정한 접미사로 백업을 생성한다.
-t, --target-directory=DIRECTORY : 전체 원본 파일을 대상 디렉터리로 이동한다.
-T, --no-target-directory : 파일을 대상 디렉터리로 취급하지 않고 원본 파일로 취급한다.
-u --update : 파일이 업데이트된 경우에만 이동한다.
-v --verbose : 상세한 정보를 출력한다.
--version : 버전 정보를 출력한다.

 

alias 명령어='옵션을포함한명령어'

옵션을 포함한 긴 명령어를 자주 사용할 경우, 매번 입력하지 않고 짧은 문자열로 지정(옵션을 디폴트 값으로 지정)하는 명령어.

alias cp='cp -i'  # 복사할 때(cp 명령어)마다 한 번 더 물어보도록 설정(-i 옵션)

 

unalias

alias(알리아스)로 지정된 것을 모두 해제하는 명령어.

 

cat [옵션] [파일명]

파일 내용 출력하는 대표적인 명령어. 옵션에 따라 덮어 씌우기, 이어 쓰기 등이 가능하다.

-A, --show-all : -vET 옵션과 같다.
-b, --number-nonblank : 각 문장 앞에 번호를 표시해 준다. 공백 줄은 번호를 표시하지 않는다.
-e : -vE와 같다.
-E, --show-ends : 개행 문자를 $로 표시한다. 줄 바꿈 표시이다.
-n, --number : 각 문장 앞에 번호를 표시해 준다. 공백 줄도 번호를 표시한다.
-s, --squeeze-blank : 공백이 여러 줄인 경우, 한 줄만 공백으로 보여주고 나머지 줄은 무시한다.
-t : -vT 옵션과 같다.
-T, --show-tabs : 탭 문자를 ^I로 출력한다.
-v, --show-nonprinting : ^와 M 표시법으로 출력한다. 줄 바꿈 문자와 탭 문자는 표시하지 않는다.
--version : 버전 정보를 출력한다.

 

find [파일경로] [옵션] [작업]

주어진 조건에 따라 디렉터리를 검색해서 원하는 파일을 찾는 명령어. 아무 조건도 없이 명령어만 입력하면 모든 파일의 위치를 출력한다. 실제로 find 명령어는 단순한 파일 검색 기능보다 다양하고 강력한 기능을 제공할 수 있다. 주로 단순 파일 검색은 아래와 같이 이용할 수 있다.

find 파일경로 -name 이름 -type 타입  # 파일 경로 내에 이름에 해당하는 디렉터리 또는 파일 검색. 타입 중에 d는 디렉터리, f은 파일
-name name : 지정된 이름의 파일을 찾는다.
-user name : user 소유의 파일을 찾는다.
-type [bcdfls] : 지정된 형식의 파일을 찾는다.
• b : 블록파일
• c : 문자
• d : 디렉터리
• f : 파일
• l : 링크파일
• s : 소켓

-size [+/-]n[bckw] : 지정된 크기의 파일을 찾는다.
• +n : n보다 크다
• -n : n보다 작다
• n : n이다
• b : 512-byte
• c : byte
• k : kilobytes
• w : 2-byte

-inum number : 지정한 아이노드 번호와 파일을 찾는다.
-print : 표준출력으로 검색된 파일명을 출력한다.
-exec command { } \; : 찾은 각 파일에 대해 지정된 명령을 실행한다.
-ok command { } \; : 실행 여부를 사용자에게 확인한 후 명령을 실행한다.

 

head [옵션] 파일명

파일의 앞부분을 보여주는 명령어. 행 수나 용량 지정이 가능하다.

cat hello.txt | head -n10  # hello.txt 파일의 앞부분 10줄 출력
-숫자 : 출력을 원하는 줄 수를 지정한다. 기본값은 10을 사용하여 열 줄을 출력한다. 예를 들어 head -3 /var/log/messages이라면 첫 번째 줄부터 세 번째 줄까지만 출력한다.
-c, --bytes=SIZE : 출력을 원하는 용량을 정할 수 있다. 사이즈(SIZE)는 b(block=512bytes), k(Kilo bytes), m(Mega Bytes)을 숫자 뒤에 붙여 용량을 구분한다. 뒤에 단위가 없을 때는 바이트 단위로 출력한다.
-n, --lines=N : 출력을 원하는 줄 수를 지정한다.
-q, --quiet, --silent : 출력할 때 파일명을 출력하지 않는다.
-v, --verbose : 출력하는 파일명을 출력한다.
--version : 버전 정보를 출력한다.

 

tail [옵션] 파일명

head와 반대로 지정된 파일의 마지막 행부터 지정한 행(뒤에서)까지의 파일 내용을 출력하는 명령어.

-c, --bytes=N : 마지막 바이트(N)만큼 내용을 출력한다.
-f, --follow : tail을 종료하지 않고 파일의 업데이트 내용을 실시간으로 출력한다.
-n, --lines=N : 파일의 마지막 행부터 N 번째까지 출력한다.
-q, --quiet, --silent : 파일명을 출력하지 않는다.
-v, --verbose : 출력 전에 파일 이름을 출력한다.
--version : 버전 정보를 출력한다.

 

grep [옵션] 패턴 [파일명]

지정한 특정 문자열을 검색하여 동일한 문자열이 있는 줄의 패턴을 찾아 화면에 출력하는 명령어. 파일명 대신 *를 입력하면 모든 파일에서 검색하고, 패턴은 정규 표현식을 이용한 문자열 패턴을 의미한다. 대표적인 옵션은 아래와 같고, 이외에도 다양한 옵션이 있다.

-i : 대소문자 구분 없이 검색
-v : 패턴과 일치하지 않는 행을 출력
-c : 패턴과 일치하는 행의 개수 출력
-w : 패턴과 단어 단위로 매칭되어야 출력

https://terms.naver.com/entry.naver?docId=4125646&categoryId=59321&cid=59321 

 

grep

패턴에 매칭되는 라인을 보여준다. [이렇게 써요] grep [옵션] 패턴 [파일···] -A num, --after-context=num : 일치하는 줄 다음에 지정한 줄 수(num)만큼의 내용을 더 보여준다. -b, --byte-offset : 일치하는

terms.naver.com

 

more [옵션] [-라인] [+/표현식] [+라인] [파일명]

한 파이지 이상되는 출력 내용을 한 화면의 페이지 단위로 보여주며 검색 기능과 원하는 페이지로 이동하는 기능을 제공하는 명령어

-d : “[Press space to continue, “q” to quit.]” 메시지를 보여주고 만일 잘못된 키 입력이 있을 때 벨 소리 대신에 “[Press “h” for instructions.]”를 출력한다.
-p : 스크롤하지 않고 전체 스크린을 지우고 텍스트를 출력한다.
-s : 두 개 이상의 공백 줄을 하나로 합쳐 출력한다.
-u : 언더 라인 문자를 보여주지 않는다.
+/표현식 : 정규표현식이 발견되는 부분부터 출력한다.-라인 : 한 화면에 출력할 줄 수를 지정한다.+라인 : 지정한 줄부터 출력한다.
-라인 : 한 화면에 출력할 줄 수를 지정한다.
+라인 : 지정한 줄부터 출력한다.

 

diff [옵션] 기준파일 비교파일

두 파일을 비교하여 다른 부분을 출력하는 명령어. 옵션이 너무 많아서 옵션 정보를 담은 링크를 남겨둔다.

https://terms.naver.com/entry.naver?docId=4125603&cid=59321&categoryId=59321&expCategoryId=59321 

 

diff

파일을 줄 단위로 비교하여 출력한다. [이렇게 써요] diff [옵션] 기준파일 비교파일 -lines : 문맥의 행을 출력한다. -a, --text : 모든 파일을 텍스트 파일로 취급한다. -b, --ignore-all-space : 중복된 공백

terms.naver.com

 

echo [옵션] [명령어]

지정한 문자열을 출력하는 명령어. 명령어만 입력하는 경우에는 공백을 출력한다.

-n : 마지막에 따라오는 개행 문자(newline) 문자를 출력하지 않는다.
-e : 문자열에서 역슬래시(\)와 조합되는 이스케이프 문자(escape sequence)를 인용부호(“)로 묶어 문자를 인식하도록 한다.
\a 경고음 (벨) 소리를 낸다.
\b 백스페이스
\c 마지막 개행 문자를 출력하지 않는다.
\f 폼 피드(form feed) 형식으로 출력한다.
\n 개행 문자을 출력한다.
\r 캐리지 리턴(carriage retrurn)
\t 수평 탭
\v 수직 탭
\\ 역슬래시
\nnn ASCII 코드가 nnn(8진수)인 문자

 

mount [옵션] 디바이스 디렉터리

리눅스에서 물리적인 저장 장치(보조기억장치)를 디렉터리에 연결시켜주는 명령어. 대표적인 옵션은 아래와 같고, 더 자세한 옵션은 아래 링크에서 확인할 것.

-a: /etc/fstab에 명시된 파일 시스템을 마운트 할 때 사용
-t: 파일 시스템의 유형을 지정, 생략할 시 /etc/fstab 파일을 참조
-o: 추가적인 설정을 적용할 때 사용, 다수의 조건을 적용할 때는 콤마(,)로 구분
remount 디바이스 디렉터리: mount를 취소하는 명령어
df: 현재 마운트 된 디스크 정보 출력

https://terms.naver.com/entry.naver?docId=4125732&cid=59321&categoryId=59321&expCategoryId=59321 

 

mount

디바이스와 파일시스템을 연결한다. [이렇게 써요] mount -a [옵션] 디바이스 디렉터리 -h : 사용법을 출력한다. -V : 버전 정보를 출력한다. -a : fstab에 정의되어 있는 모든 파일시스템을 마운트한다.

terms.naver.com

 

unmount

마운트(mount)를 해제하는 명령어.

 

nano 편집할파일명

리눅스의 파일 에디터 중 나노로 파일을 편집하는 창을 출력하는 명령어. 단축키는 아래와 같다.

Ctrl+O: 저장
Ctrl+X: 종료
Ctrl+W: 검색
Alt+6: 복사
Ctrl+U: 붙여넣기
Ctrl+^: 여러 줄 선택

 

이외에도 su(현재 사용자 변경), which(절대 경로), wc(라인, 단어의 수), shutdown(시스템 종료) 등의 많은 명령어가 있음.

 

참고

1. 대부분의 명령어는 --help 옵션을 함께 입력하면 사용법을 출력한다.(중복되기 때문에 적지 않음)

2. 네이버의 유닉스 리눅스 명령어 사전을 통해 더 자세한 사용법을 참고할 수 있다.

https://terms.naver.com/list.naver?cid=59321&categoryId=59321&so=st4.asc

 

유닉스 리눅스 명령어 사전 : 네이버 지식백과

유닉스 리눅스 명령어 logname, 유닉스 리눅스 명령어 su, 유닉스 리눅스 명령어 strip, 유닉스 리눅스 명령어 locale, 유닉스 리눅스 명령어 renice, 유닉스

terms.naver.com