리눅스 명령어는 왜이리 많은걸까..?
현재 위치한 작업 디렉토리의 경로를 출력한다.
$ pwd
[사용 예시]
$ pwd
/home/posein
디렉토리를 이동한다.
$ cd [directory_name]
cd
인자가 없이 사용하는 경우엔 자신의 홈 디렉토리로 이동한다.
cd
절대경로
최상위 디렉토리부터 전체 경로를 지정하여 이동한다.
맨 앞에는 항상 최상위 디렉토리( / )를 표기한다.
$ cd /usr/local/src
$ /home
상대경로
현재 디렉토리를 기준으로 이동한다.
하위 디렉토리 혹은 부모 디렉토리로 이동할 때 사용한다.
$ cd home
상대경로 사용 시 사용하는 표기법
cd /cd .cd ..cd ~cd와 실행 결과가 같다.cd ~helena0589)에 유용하다.cd -디렉토리를 생성할떄 사용한다.
$ mkdir [option] directory_name(s)
주요 옵션
-p (--parents)
경로로 지정되 서브 디렉토리가 없을 경우, 함께 생성한다.
-m (--mode)
디렉토리 생성시 퍼미션(Permission)을 설정한다.
-v (--verbose)
생성된 디렉토리를 메시지로 출력한다.
[사용예시]
$ mkdir www
$ mkdir data backup pic
$ mkdir -p www/pds/photo
디렉토리를 삭제하는 명령이다.
디렉토리 안이 비어있지 않으면 삭제할 수 없다.
$ rmdir [option] directory_name(s)
주요 옵션
[사용예시]
$ rmdir www
$ rmdir data backup pic
$rmdir -p wwww/pds/photo
디렉토리 안의 내용을 출력한다.
$ ls [options] [파일 또는 디렉토리 명
주요 옵션
ls 명령어는 아주 많은 옵션이 존재한다.
그 중 자주 쓰는 옵션 일부만 정리해보았다.
| 옵션 | 의미 |
|---|---|
| -a | 숨겨진 파일이나 디렉토리도 출력한다. |
| -l | 파일이나 디렉토리를 상세하게 출력한다. |
| -d | 디렉토리의 경우 해당 디렉토리의 정보를 출력한다. |
[사용예시]
$ ls
$ ls -a
$ ls -l
파일이나 디렉토리를 복사하는 명령이다.
$ cp [option] source(s) destination
주요 옵션
ls명령어와 같이 cp명령어도 옵션이 많기에 그 중 일부만 정리하였다.
| 옵션 | 의미 |
|---|---|
| -r, -R | 복사하려는 대상의 하위 디렉토리까지 복사한다. |
| -i | 복사를 통해 생성할 파일이 존재할 경우 덮어 쓸 것인지 물어본다. |
| -f | 같은 파일의 이름이 존재하는 경우 강제로 덮어쓴다. |
| -s | 복사하는 대신 심볼릭 링크를 만든다. (ln 명령어를 통해 생성 가능하다.) |
| -l | 복사하는 대신 하드 링크를 만든다. (ln 명령어를 통해 생성 가능하다.) |
[사용예시]
$ cp /etc/passwd .
$ cp -r /etc tmp
$ cp a.txt b.txt /tmp
파일을 삭제하는 명령이다.
옵션에 따라 디렉토리를 삭제(-r)할 수 있다.
주요 옵션
[사용예시]
$ rm -i
$ rm doc1.txt doc2.txt doc3.txt
$ rm -rf data/
파일이나 디렉토리의 이름을 변경하거나 이동시키는 명령어이다.
$ move [options] source(s) destination
주요 옵션
-i (--interactive)
이동할 디렉토리에 동일한 파일명이 존재할 경우 덮어 쓸 것인지 물어본다.
-f (--force)
만약 동일한 이름의 파일이 존재 할 경우 강제로 덮어쓴다.
-b
덮어쓸 때 백업본의 파일을 만든다.
파일명 뒤에 ~가 붙은 파일이 생성된다.
-v (--verbose)
파일을 이동하는 내용을 출력한다.
-u
만약 동일한 이름의 파일이 있을 경우 검사하여 해당 피일이 최신 파일이면 이동하지 않는다.
[사용예시]
$ mv readme.txt /home/posein/data/
$ mv /home/posein/data/ /home/posein/baekup/
$ mv aaa.txt bbb.txt
$ mv a.txt b.txt data/ /tmp
$ mv data/* backup/
파일 혹은 디렉토리의 최종 접근 시간, 수정 시간 등 타임스탬프를 변경한다.
만약 해당 이름의 파일이 존재하지 않을 경우 파일의 크기가 0인 빈 파일을 생성하는 명령어이다.
$touch [option] 파일명
주요 옵션
-a (access time)
접근 시간을 바꾼다.
-m (modification time)
수정 시간을 바꾼다.
-t (timestamp)
[[CC]YY]MMDDmm[.ss] 형식의 타임스탬프로 시간을 변경한다.
-r (--reference=파일명)
지정된 파일의 접근시간(Access time) 및 수정 시간(modification time)으로 특정 파일의 시간을 변경한다.
$ touch -r a.txt b.txt
a.txt의 접근 시간 및 수정 시간으로 b.txt의 시간을 변경한다.
[사용예시]
$ touch a.txt
$ touch -a lin.txt
$ touch -a -t 201810142250 joon.txt
$ touch -t 201212222105 /etc/passwd
$ touch -r a.txt b.txt
파일의 종류를 출력하는 명령어이다.
관련 정보는 /usr/share/magic 파일에 존재한다.
$ file [option] 파일명
주요 옵션
-b (--berif)
이름을 제외한 정보를 출력한다.
-i (--mine)
특정 파일의 문자 집합 정보를 출력한다.
ex) ASCII, UTF-8
[사용예시]
$ file -i lin.txt
주어진 조건을 가지고 있는 파일 및 디렉토리를 찾아 경로를 출력한다.
허가 거부됨 (Permission Denied) 주의가 뜨면서 검색하지 못한다.$ fine [path] options expression주요 옵션
fine 명령어는 또한 많은 옵션이 존재한다.
그 중 자주 쓰는 옵션 일부만 정리해보았다.
-name
주어진 이름의 파일이나 디렉토리를 찾는다.
-user
지정한 사용자의 파일이나 디렉토리를 찾는다.
-group
지정한 그룹 소유의 파일이나 디렉토리를 찾는다.
-uid
지정한 UID 소유의 파일이나 디렉토리를 찾는다.
UID : User Identifier, user ID
-gid
지정한 GID 소유의 파일이나 디렉토리를 찾는다.
GID : Group Identifier, group ID
-type
지정한 파일 유형을 찾는다.
파일 유형
| 명령어 | 파일유형 |
|---|---|
| d | 디렉토리 |
| f | 일반 파일 |
| l | 링크 파일 |
| b | 블록 디바이스 |
| c | 캐릭터 디바이스 |
| p | 파이프 파일 |
| s | 소켓파일 |
-exec
찾아진 파일 등과 연계하여 명령을 내린다.
결과값은 {}으로 표시하며 \;으로 종료한다.
-ok
-exec 옵션과 같으나 확인 메시지를 출력하여 실행 시 'y'나 'n'을 입력받는다.
-ls
상세 출력을 한다.
-size n
n 블록 길이의 파일을 찾는다.
[사용예시]
$ find -name '*/.c'
$ find -name '[ab]*' : a 또는 b로 시작하는 파일이나 디렉토리 찾기
$ find -user posein
$ find -type l
$ find ! -type f
$ find . -type d
$ find .
파일 권한은 다음과 같은 형태로 확인한다.
$ ls -l lin.txt
-rw-rw-r--. 1 posein1 posein2 13 Jan 11 11:05 lin.txt
허가권 (rw-rw-r--)
| 권한 | 숫자모드 | 파일 | 디렉토리 |
|---|---|---|---|
| r | 4 | 파일 내용 확인 권한 | 디렉토리 내부 내용 확인 권한 |
| w | 2 | 파일 내용 수정 권한 | 디렉토리 내부에 파일 생성 및 삭제 권한 |
| x | 1 | 실행 파일 실행 권한 | 디렉토리 내부 접근 권한 |
위에 예시로 rw-rw-r--에서 3개씩 허가권이 나뉘게 된다
'rw-'
소유자에 대한 권한이다.
읽기와 쓰기 권한이 부여되어있다.
소유권은 2진수 혹인 10진수로 표현 가능하다.(110, 6)
'rw-'
그룹에 대한 권한이다.
소유자 권한과 동일하게 부여되어 있다.
마찬가지로 2진수 혹은 10진수로 표현할 수 있다.(110, 6)
'r--'
기타 사용자에 대한 권한이다.
이 같은 경우에는 읽기 권한만 부여되어있다.
2진수 혹인 10진수로 표현하면 100과 4로 표현 가능하다.
=> 위 소유권을 숫자로 표현하면 Permission rw-rw-r--은 664와 동일한 의미이다.
파일이나 디렉토리에 접근하는 허가권(Permission)을 설정한다.
문자 모드(Symbolic mode)를 사용하여 알파벳으로 표기하거나, 숫자모드(Numberic mode)fh 솔정 가능하다.
$ chmod [option] mode file(s)
주요 옵션
-R (--recursive)
하위 디렉토리를 포함한 디렉토리 내부의 모든 파일의 접근 권한을 변경한다.
-c (--changes)
변경된 정보를 출력한다.
-f (--silent, --quite)
중요한 오류 메시지가 아니면 생략한다.
-v (--verbose)
명령 진행 결과에 대한 정보를 자세히 출력한다.
--version
명령어의 버전 정보를 출력한다.
[사용예시]
$ chmod ugo+rwx aa.txt
$ chmod a+rwx aa.txt
$ chmod 777 a.txt
$ chmod -R go-rwx
$ chmod a= a.txt
파일이나 디렉토리의 소유권 및 그룹 소유권을 변경한다.
# chown [option] owner[:group] file(s)
주요 옵션
-R (--recursive)
하위 디렉토리를 포함한 디렉토리 내부의 모든 파일의 접근 권한을 변경한다.
-c (--changes)
변경된 정보를 출력한다.
-f (--silent, --quite)
중요한 오류 메시지가 아니면 생략한다.
-v (--verbose)
명령 진행 결과에 대한 정보를 자세히 출력한다.
--version
명령어의 버전 정보를 출력한다.
[사용 예시]
# chown -R posein *
: 하위 디렉토리를 포함하여 현재 디렉토리의 모든 파일의 소유자를 posein으로 변경
# chown posein:yuloje jalin.txt
# chown 500 jalin.txt
# chown :yuloje joon.txt
파일이나 디렉토리의 소유 그룹을 바꾸는 명령어이다.
root가 아니면 사용하는 경우는 드물지만, 특정 사용자가 여러 그룹에 속한 경우 본인 소유의 파일을 본인이 속한 그룹내에서 소유권을 변경할 수 있다.
# chgrp [option] group file(s)
주요 옵션
-R (--recursive)
하위 디렉토리를 포함한 디렉토리 내부의 모든 파일의 접근 권한을 변경한다.
-c (--changes)
변경된 정보를 출력한다.
-f (--silent, --quite)
중요한 오류 메시지가 아니면 생략한다.
-v (--verbose)
명령 진행 결과에 대한 정보를 자세히 출력한다.
--version
명령어의 버전 정보를 출력한다.
[사용예시]
# chgrp admin alin.jpg
# chgrp -R ihd ~posein
파일이나 디렉토리 생성 시 부여되는 기본 허가권을 지정한다.
umask 명령어를 실행하면 설정된 umask값을 확인 할 수 있다.
파일 생성 시 666, 디렉토리 생성 시 777에서 설정한 umask 값을 뺀 값으로 기본 하가권이 지전된다.
$ umask [option] [value]
주요 옵션
[사용예시]
$ umask 022
$ umask u=rwx, g=rw, o=rw
(= $umask 011)
umask의 연산법은 추후 포스팅 예정
하드 링크 또는 심볼릭 링크를 생성한다.
하드 링크와 심볼릭 링크의 차이는 추후 포스팅 예정
주요 옵션
[사용예시]
$ ln joon.txt j
$ ln -s joon.txt j
$ ln -s /etc/xinetd.d x
그래도 스스로 정리하니 꼼꼼하게 알 수 있는거 같다.
터미널 명령어들 너무 깔끔하고 보기 쉽게 잘 정리되어 있네요!
잘 봤습니다ㅏ:)