본문 바로가기

명령어 모음

리눅스 명령어 모음

반응형

<생각 날 때마다 지속적으로 수정중입니다>



가장 먼저 알고 지나가야 할 용어의 뜻.


수정 : modified - 파일의 내용이 변경된 경우 변경.

변경 : change - 소유자나 소유권이 바뀌거나 다른 파일 시스템으로 이동하는 경우 변경.

읽기 : accesss - 파일을 Open한 경우. grep, cat, sort등의 명령어 사용시에도 변경.



[w]

현재 로그인한 사용자를 본다. 



[stat]
파일이나 시스템 상태를 출력해준다.

-c %w : 최초 만들어진 날짜 출력
-c %x : 마지막 엑세스 날짜 출력

-c %y : 마지막 수정된 날짜 출력

-c %z : 마지막 변경돈 날짜 출력

stat test.txt                             파일에 대한 상태를 출력한다.

stat -c %y test.txt                   날짜를 출력한다.

stat -c %y test.txt | sed 's/^\([0-9\-]*\).*/\1/'



[chown]
사용자 권한을 지정한다

chown -R daemon:daemon [디렉토리명]

-R 옵션은 해당 디렉토리와 내부의 모든 디렉토리 및 파일에 적용하는 옵션이다.



[chmod]

파일의 권한(rwx)을 지정한다.

숫자로 지정시 첫번째 숫자는 유저, 두번째 숫자는 그룹, 세번째 숫자는 나머지의 권한을 뜻한다.

알파벳으로 지정시 -, + 기호를 사용하여 해당 소유권자(u, g, o, a)와 권한을 지정한다.


chmod 777 test.txt           유저, 그룹, 그외 모두 읽기, 쓰기, 실행 가능

chmod 755 test.txt           유저는 읽기, 쓰기, 실행 가능하나 그룹과 나머지는 읽기, 실행만 가능하다.

chmod u+r test.txt           u는 유저를 뜻하며 +는 추가를 뜻한다. r은 읽기 권한 속성을 의미한다. 즉, 유저에게만 읽기 권한을 추가한다.

chmod g-w test.txt         g는 그룹을 뜻하며 -는 삭제를 뜻한다. w은 쓰기 권한 속성을 의미한다. 즉, 그룹에게 쓰기 권한을 주지 않는 다는 것이다.

chmod o+x test.txt          위와 같은 방식으로 유저, 그룹을 제외한 나머지 소유자들에게 실행권한을 준다는 것이다.

chmod a+w test.txt         a는 모든 소유자에게 준다는 것으로 모두 쓰기 권한을 준다는 것이다.



[crontab]
crontab은 정기적으로 설정된 명령을 실행

어느 위치에서라도 실행이 된다.


예 

crontab -e (편집으로 실행)



[dmesg]

커널 메시지를 볼 수 있다.

어느 위치에서라고 실행이 된다.


dmesg

dmesg -c (메세지 내용 지우기) 



[pwd]

현재 위치한 절대경로 출력


pwd



[find]

파일이나 디렉토리 검색


-name : 파일명 검색

-type : 파일 타입 검색

-ctime : create 시간으로 검색

-size : size로 검색

-regex : 정규식 패턴

-gegextype : 정규식 타입


find / -name a.txt                                 루트 디렉토리인 '/'에서부터 하위까지 이름으로 a.txt 파일 검색

find -type d                                       디렉토리들만 검색

find -regextype posix-extended -regex '.{0,}'       정규식으로 검색

find -ctime +2                                    만든지 2일 이상 된것 검색

find -size +100M                               100메가 이상 파일 검색

find -name *.log -exec du -h {} \;     로그 파일을 찾은 후 du 명령어로 파일 사이즈를 출력한다.



[alias]

긴 명령어를 간단하게 만든다.


alias mk = "cd /usr/local" 라고 지정하고 나서

mk 라고 치면

cd /usr/local과 같은 효과를 볼 수 있다.

파일로 있는 위치는 홈 디렉토리에 .bashrc로 존재한다.



[unalias]
alias로 지정된 값을 해제한다.

unalias mk        mk에 지정된 alias 값을 해제한다.



[tar]

파일, 디렉토리를 압축 및 해제 한다.


tar cvfz m.tar a.txt        a.txt 파일을 압축해서 m.tar이라는 압축파일 생성

tar xvfz m.tar                m.tar파일을 압축 해제한다.

tar xvfzP m.tar /home/bin/*    절대경로로 할경우 옵션에 대문자 P 추가한다.

tar tvf m.tar                압축해제 없이 내부 목록 보기



[zip]

파일, 폴더를 압축 및 해제를 한다.


zip m a.txt  b.txt                  // a.txt b.txt를 m.zip으로 압축한다. .zip은 자동으로 생성된다.

zip -r m                             // 디렉토리까지 모두 압축한다.

unzip m.zip                        // 압축을 해제한다.

zip -r m * -x /\*/.svn/\*            // 압축할 디렉토리에 .svn의 모든 폴더 내용을 제외하고 압축한다. (/\* 기호는 모든 디렉토리에서 .svn안에 있는 /\*모든 파일을 지운다)



[PATH]

경로를 보여준다. 대문자로 적어야 한다


echo $PATH


[PATH 설정]

자신의 홈 디렉토리의 .profile 또는 .bash_profile에다가 콜론( : )을 통해 경로를 계속 추가한다.

그러면 어느 위치에서든지 설정된 경로내의 프로그램을 실행 시킬 수 있다.

재시작을 해야 적용이 되나 테스트하기 위해 source .profile 또는 source .bash_profile를 통해 확인 해 볼 수 있다.



[grep]

찾을 문자값, 파일 값 등을 찾는다.


grep main text.c        text.c 파일 내용에서 main을 찾아 출력한다.

dmesg |grep Linux        dmesg에서 Linux에 해당하는 값을 찾는다.

ls |grep abc        ls 명령어 결과값에서 abc를 찾아 출력한다.



[date]

현재 날짜를 출력한다.


date

date +%Y            현재 년도 출력 (참고로 +%Y 앞에 빈공간 있어야 한다.)

date +%m            현재 달 출력

date +%d            현재 일자 출력



[cal]

현재 달력을 출력한다.


-y : 년도

-m : 월


cal

cal -y 1993     1993년도 달력 출력

cal -m 7         7월 달력 출력



[mkdir]

디렉토리를 생성한다.


mkdir a                        a라는 이름의 디렉토리 생성

mkdir -p /home/a         경로명에 따라 없는 모든 디렉토리 생성



[cp]

파일을 복사한다.


-a : 원본 파일의 속성, 링크 정보들을 그대로 유지하면서 복사 

 -f : 복사할 대상 파일이 이미 있는 경우 지우고 복사한다. 

 -i : 덮어쓰기 전에 여부를 묻는다. 

 -p : 가능하다면 파일 속성을 유지한다. 

 -r : 하위 디렉토리까지 복사한다. 

 -s : 복사하는 대신 심볼릭 링크를 만든다. 

 -u : 소스 파일이 복사될 파일보다 새것이거나 복사될 파일이 없을 때만 복사한다.


cp a.txt b.txt                a.txt 파일을 b.txt파일로 복사

cp -r mk /home           mk 디렉토리 전부를 /home 안에 복사한다.



[scp]

네트워크를 통해 파일을 복사한다. s는 Secure로서 안전하게 복사하도록 한다.

scp src desc 순으로 src의 값을 desc로 보낸다.


scp -P 22 /home/a.txt 192.168.0.1:/home 



[ls]

디렉토리 목록을 표시한다.

ls, ll 등이 있다.


-a : 숨긴 파일 표시

-l : 리스트 정리로 표시


ls

ls -a                 숨긴 것까지 보이게

ls -al                숨긴 것과 리스트로 정렬해 보이기

ll --full-time       파일의 대한 모든 시간을 보여준다.



[uname]

커널 버전을 표시한다.


uname

uname -a

uname -mrs


참고

cat /proc/version



[lsb_release]

배포한 리눅스 버전을 표시한다. (lsb-release 패키지가 설치되어 있어야 한다.)


lsb_release

lsb_release -a


참고

cat /etc/*-release



[cat] 

표준 입출력으로 파일 내용을 이어 붙이거나, 복사한다.


cat text1 > text2              text1의 내용을 text2에 복사한다. (text2의 기존 내용은 사라진다.)

cat text1 >> text2            text1의 내용을 text2에 복사한다. (text2의 기존 내용 뒤에 text1의 내용이 추가된다.)


참고

cat text1 text2 > text2       여러개의 파일을 이어 붙이거나 복사가 가능하다.



[awk]

grep와 비슷하게 특정 값을 잡아서 출력시킨다.

필드를 구분하여 출력해주므로 편하다.


ls -al | awk '{print $1}'               첫 번째 필드 부분만 출력한다.

ls -al | awk '{print $NF}'             마지막 필드 부분만 출력한다.

ls -al | awk '{print $FNR}'           라인에 따라 필드 위치가 1씩 증가하면서 해당 필드 부분만 출력한다.

ls -al | awk -F '/' '{print $NF}'    -F 옵션에 따라 /값을 구분으로 필드를 분리한다.

ls -al | awk '{print $1, $2}'          여러 필드 출력

awk '{print $1} 파일명                  파일 내용도 awk를 이용해 출력 할 수 있다.



[rsync] 

파일을 싱크한다.

rsync src desc 순으로 src의 파일, 디렉토리리를 desc로 보낸다.


-a 디렉토리를 싱크 할 경우 

-v 처리 과정, 결과 출력 

-z 파일 전송시 압축 처리 

--delete desc엔 있지만 src에 없는 파일이라면 desc의 파일을 삭제 --exclude= 싱크에서 제외할 파일 -e desc의 특정한 bshell 사용


rsync test.txt /home

rsync text.txt 192.168.0.1:/home

rsync -avz --delete -e ssh text_directory 192.168.0.1:/home



[blkid] 

디바이스 정보를 출력한다.

암호화된 볼륨등을 확인 할 수 있다.



[hdparm] 

하드디스트 체크


hdparm 옵션 디바이스경로


hdparm -T /dev/sda

hdparm -Tt /dev/sda



[iostat] 

apt-get install sysstat 으로 설치 후 사용


시스템의 자원 사용율을 보여준다.

iostat -d   디스크의 속도

iostat -c   CPU의 이용



[pvscan]

물리적인 볼륨을 스캔한다.


pvscan


출력 예

PV /dev/sdb1   VG Secondary   lvm2 [1.82 TiB / 0    free]

PV /dev/sda1   VG Primary     lvm2 [1.82 TiB / 0    free]


위와 같은 결과를 가져오는데 PV는 물리적 볼륨을 뜻하며, VG는 볼륨 그룹을 뜻한다.



[mount]

분리된 파일 시스템을 연결한다.


-t 파일 시스템 종류를 설정


mount /dev/sdb /mnt/sdb

mount -t ext4 /dev/sdb /mnt/sdb



[umount]

연결된 파일 시스템을 분리한다.


-f 강제 분리


umount /mnt/sdb

umount -f /mnt/sdb



[acpi]

시스템의 온도를 보여준다.



acpi -t


해당 명령어가 없는 경우에는 lm-sensors 패키지를 설치한다.



[top]

윈도우의 작업관리자와 같은 시스템의 상태를 보여준다.



top



[free]

메모리 사용량을 보여준다.


-b : 바이트 단위

-k : 킬로바이트 단위

-m : 메가바이트 단위

-g : 기가바이트 단위

--tera : 테라바이트 단위

-h : 사람이 읽기 쉬운 단위



free

free -m

free -g



 [df]

파일 시스템별 사용량을 보여준다.


-k : 킬로바이트 단위

-m : 메가바이트 단위

-h : 사람이 읽기 쉬운 단위


df -k

df -h



[du]

디렉토리별 사용량을 보여준다.


-k :  킬로바이트 단위

-m : 메가바이트 단위

-h : 사람이 읽기 쉬운 단뒤

-s : 선택한 디렉토리의 서브디렉토리를 요약

-d : 선택한 디렉토리의 서브디렉토리 레벨값 설정시


du

du 디렉토리명

du /home

du -k /home

du -d 1 /home        서브디렉토리를 1개까지만 탐색

du -d 3 /home        서브디렉토리를 3개까지만 탐색



[halt]

시스템을 즉시 종료시킨다.


halt



[reboot]

시스템을 즉시 재시작한다.


reboot 



[shutdown]

시스템을 종료시키거나 재시작하는 시간을 설정하고 해당 기능을 수행한다.

종료나 재시작에 대한 메세지를 로그인 유저들에게 통보한다.


-h : 분단위 후 종료시킨다.

-r : 시스템을 재시작한다.


shutdown -h 30                    30분 후 시스템 종료

shutdown -h now                 즉시 시스템 종료

shutdown -r 30                     30분 후 시스템 재시작

shutdown -h 30 "메세지"        로그인 유저들에게 메세지를 보낸다.



[su]

superuser 권한을 얻거나 다른 계정으로 로그인 한다.


su root

su 계정명



[which]

명령어의 위치를 출력한다.



which ls



[whatis]

명령어의 기능을 출력한다.


whatis ls





=================== 정리전 ================


cd      디렉토리 이동

         cd : 홈디렉토리로 이동

         cd.. : 상위 디렉토리로 이동

         cd.  : 현재 디렉토리로 이동

         cd- : 이전 디렉토리로 이동 (맘에드는 명령어죠 ^^)

         cd~ : 홈디렉토리로 이동

ls       MS-DOS의 dir과비슷하죠 파일 목록 보기입니다.

         상세한 정보를 알수있죠~?!! 물론 옵션정보도 알수있구요~!!

         -l :파일의 종류,링크수,디렉토리,소유그룹,파일싸이즈등 좀더자세히보기..

         -a :all~! 모두보기죠~ 그냥 ls 하면 볼수 없는 숨어있는파일 (.)으로시작

              하는 숨겨진파일까지 볼때 사용..

rmdir 디렉토리 지우는 명령어

        -p : 위에서처럼 경로명을 따라서 삭제 하겠죠~

        -v : 작업 진행내용을 출력~

        -f : 삭제여부를 묻지 않고 강제로 삭제하죠~ 조심해서 사용..

mv     파일이나 디렉토리를 옮기는 명령어죠~! 이름변경에도 사용하구요~!!

        --backup :복사하려는 파일과 이름이 같은 파일이 있으면, 확인후에 백업

                       파일을 원본 파일 뒤에 딜트(~)를 붙여서 생성하고 이동~

       -f : 겹쳐쓰기 여부를 묻지않고 무조건 이동~! 

cat     Redirection이용하여 간단한 파일을 만들거나 내용을 볼때 사용...

cp    파일을 복사하죠~

         -f : 강제로 복사

         -r :서브 디렉토리도 모두 복사~~

         -d : 링크정보 복사

         -u : 소스파일이 복사될 파일보다 최근것이거나 복사될 파일이 없을때만복사

rm    파일 or 디렉토리 삭제

        요넘은 rmdir보다 더 사용이 편리하죠~! 왜냐면.. 디렉토리에 파일이 없어야

        rmdir로 디렉토리가 삭제가되는데.. rm -r 하면~ 한방에 삭제가되죠~

        -f  : 강제 삭제

        -r : 디렉토리의 내용을 삭제~

file    파일의 종류를 확인하는 명령어죠~ 자주 사용하진 안치만.. 알아두면 편리하죠~

ln      링크 파일을 생성하는 명령어..

        -s : 심볼릭 링크 생성~!!

         링크의 종류에는 하드링크,심볼릭링크가 있어요~

         하드링크 - 파일의 모든속성을 그대로 유지, 일반파일에서만 만들수 있구요

         심볼릭링크 - 단지 원본파일이나 디렉토리를 가리키는 방향에 불과한것

                            단축아이콘과 비슷한개념으로 모든 파일에대해 생성가능하구요~!


[root @localhost tmp]# ls -al

 

그러면 아래유형과 같이 ls명령에 의해 출력이 되겠죠.....

(1)               (2)   (3)      (4)     (5)           (6)           (7)

drwxr-xr-x     2    root     root    4096    Oct 10 12:00     .

drwxr-x---    2    root     root    4096    Oct 10 12:00     ..

-rw-r--r--     2    root     root    100     Oct 10 12:00     test.c

 

각각은 (1) 접근권한 (2)링크된 숫자 (3)파일의 소유자 (4)파일의 소유자가 속한그룹

(5) 파일의 크기 (6) 파일을 마지막으로 수정한날짜 (7) 파일명 을의미하구요~!!!

 

우리가 이번에 보고자하는것은 (1)접근 권한 이구요~!!!

(1)번을 보면 10개의 문자가 출력되는데 각각의 의미를 볼께요~

첫번째문자는 파일의 종류를 나타냅니다.

"d" -> 디렉토리

"-" -> 일반파일

"b" -> 블록장치파일

"c" -> 문자장치파일

"l" -> 심볼릭링크

"s" -> 소켓

"p" -> 파이프

와같은 의미를 나타냅니다. 블록장치,문자장치,소켓,파이프... 이런거는 차차 리눅스를

공부하다보면 아시게 될 내용들이고 지금은 설명을 생략하겠습니다.

 

첫번째 문자의 의미를 파악하셨다면 나머지 9개의 의미를 봐야겠죠

User            Group             Other

r   w   x       r    w   x         r   w   x

이렇게 User(r,w,x),Group(r,w,x),Other(r,w,x) 으로 9개의비트가 사용되죠

의미를 알아보면

일반파일에서 r ->읽기가능

                   w ->쓰기가능 

                   x-> 실행가능

                   - ->권한없음을 나타내고

디렉토리에서 r ->읽기가능(ls명령으로 볼수있음을 의미하죠~)

                   w ->쓰기가능 (디렉토리내에 파일이나 하위디렉을 생성할수 있음을 의미)

                   x ->실행가능 (cd 명령으로 그 디렉토리에 들어갈수있음을 의미하죠)

위에 출력된 예를 다시 들어보면

drwxr-xr-x 의 의미는 어떻게 될까요?????

앞에 d니까 디렉토리구나~! 가되겠죠..ㅋㅋ

User의 권한은 rwx 로 되어있으니까  유저는 읽기,쓰기,실행할권한을 가지는거구~!!

소유 Group의 권한은 r-x 니까 읽고,실행은 가능한데 쓰기가 안되는거죠~!!

마찬가지로 기타사용자의 권한(Other)는 r-x 읽고,실행가능한데 쓰기는 불가능이죠~

쉽죠?? ㅋㅋ

 

이제 권한이라는것이 있구나를 알았으니깐~!! 권한을 바꿔줄 필요가 있다면

모드(권한)를 바꿔주는 명령어를 사용해야겠죠~! 그명령어가 바로 chmod (체인지모드)

가 된답니다.

다음과 같이 사용하죠

]# chmod u+x test

의미가 뭘까요??

tset의 모드를 바꾸는데(chmod) 유저의 권한에(u)  실행권한(x)까지 추가하라는얘기가되겠죠

마찬가지로...

]#chmod g-w test

그룹(g)의 권한중에서 쓰기 권한은 빼라~!! 가되겠죠~~!!

 

사실 이보다더 쉬운 방법으로 모드를 바꿔줄수 있는방법이있습니다.

읽기 r(4) , 쓰기 w (2), 실행 x(1)을 숫자의 조합으로 사용하는데요..

예를 들어 설명해볼께요

]#chmod 664 test

라고 한다면

664 는 6(User),6(Group),4(Other)를 각각 의미하는데요

User 의 권한이 6이다 라고 했을때... 4(r),2(w),1(x)세개의 숫자로 6이나올수있는 조합은

4+2 즉 읽기권한과 쓰기 권한이 설정되었을때 6이 나올수 있죠??

Group도 User와 마찬가지고 Other를 보면 4 로 설정하니깐... 읽기 권한만 있구나 ~! 하구

알수 있겠죠~!!!

 

]#chmod 664 test 라고했을때 ----> rw-rw-r-- 가 되겠죠???

이 명령어를 자주 사용하다보면 숫자를 사용해서 Permission을 바꿔주는게 더 편리하구나

하고 느끼실꺼에요....

 

그밖에 권한과 관련된 다른명령어로

 

chown  파일의 소유자를 다른 사람에게로 변경시킬때...

chgrp    파일의 그룹 소유권을 변경시킬때 사용....


 

 

find

 

이 명령은 찾고자하는 파일과 디렉토리를 검사해주는역활을 합니다.

사용 형식은 find [디렉토리][옵션] 의 형식으로 사용하구요

 

-name"파일명"  : 파일이름에 의해 검색..

-perm 모드   : 퍼미션 모드에 의해 검색..

-type 파일의종류  : 파일의 종류에의해 검색...b(블럭),c(케릭터),d(디렉),f(일반)....



clear

이 명령어는 터미널의 창을 깨끗히 지우는 명령어 입니다.

더 간단히 단축키 Ctrl + l 를 사용하면 더 편리하구요~!

 

  

adduser

사용자 계정을 추가하라~!!!

adduser --help를 하시면 많은 옵션들이 나올꺼에요 참고하시구요 ^^;;;;;

간단하게 사용자를 추가하고자한다면...

]#adduser hyochang

하시면 hyochang이라는 사용자가 추가되는거랍니다..

]#ls /home/ 하시면 계정 추가된걸 볼수가 있죠...

 

passwd

패스워드 입력명령이구요... 계정을 추가했으면 패스워드를 넣어줘야겠죠

]#passwd hyochang 계정명과 같이 입력하고 패스를 설정해주면 됩니다.

 

userdel

사용자를 삭제하는명령이죠. 이명령이 수행되면..

/etc/passwd,/etc/shadow,/etc/group에 기록된 정보가 삭제됩니다.

-r옵션을 써주면 계정의 홈디렉토리도 같이 지워준답니다.

 

who, w, whoami, who am i

현재 로그인한 사용자들을 보고자할때 사용하는 명령어입니다.

 

 

 

whereis [명령어]

명령어의 실행파일 경로 및 소스 메뉴얼 페이지 파일의 경로를 출력

 


 

 

cal

달력을 출력, 인자값 없으면 현재 달을 출력

 

ps

현재 실행중인 프로세스를 볼때 사용

[root@localhost /]# ps -ef
UID        PID  PPID   C    STIME   TTY          TIME     CMD
root         1        0    0    Sep03     ?            00:00:04    init
root         2        1    0    Sep03     ?            00:00:00    [keventd]

 

kill

kill pid

해당프로세스의 PID를 사용하여 프로세스 종료

kill -9 pid

-9는 priority를 최대로 한것이 되지요~~

 

finger

시스템유저들에 대한 정보를 출력한다.

[root@localhost /]# finger hyochang
Login: hyochang                        Name: (null)
Directory: /home/hyochang               Shell: /bin/bash
Never logged in.
No mail.
No Plan.



tar

 

tar[동작모드/옵션][아카이브 파일명][원본파일들]

 

우선 동작모드에대해 보겠습니다.

-c   새로운 아카이브 파일을 생성한다.

-x   기존에 만들어진 아카이브 파일을 푼다

-r   기존에 만들어진 아카이브 파일에 다른파일들을 더 추가한다

-u   아카이브 안의 파일보다 새로운 파일만을 추가한다

-t    아카이브 파일안에 들어 있는 내용을 풀어보지안고 보기만한다.

 

옵션입니다.

-f    파일을 묶을때 사용하는 옵션

-v    파일을 묶고 풀때의 작업 내용을 출력

-z    파일을 묶으면서 또는 해제하면서 gzip을 이용해서 압축/해제 한다(*.tar.gz,*.tgz)

-Z    파일을 묶으면서 compress를 이용해 압축까지 한다. (*.tar.z)

-l     파일을 묶으면서 bzip2로 압축까지한다. (*.tar.bz2)

 

 

split

파일을 쪼갤때 사용하는 명령어

split -b [size][file][suffix]

반응형

'명령어 모음' 카테고리의 다른 글

Visual Studio 2010 단축키  (0) 2012.07.28