메뉴 건너뛰기

XEDITION

Linux

윈도우 환경에 익숙한 사람이라면 유닉스의 명령라인을 통한 작업이 매우 힘들어 보이고 투박해 보일 수 있지만 익숙해지기만 한다면 명령라인 없이 어떻게 작업을 할 수 있나라는 생각이 들 정도로 강력한 환경을 제공한다.


여기에서는 이중 유용하게 사용할만한 유닉스 명려라인에서의 응용을 소개한다. 이 글의 원문은 http://www.linuxgazette.com/node/view/8856 에서 볼 수 있다.

 


1 일반 명령


•apropos word
주어진 단어 word와 연관된 모든 man 페이지의 요소들을 보여준다. 특히 프로그래머에게 유용하다. # apropos socket
AF_LOCAL [unix]      (7)  - Sockets for local interprocess communication
AF_UNIX [unix]       (7)  - Sockets for local interprocess communication
IO::Socket           (3pm)  - Object interface to socket communications
IO::Socket::INET     (3pm)  - Object interface for AF_INET domain sockets
IO::Socket::UNIX     (3pm)  - Object interface for AF_UNIX domain sockets
NETLINK_ROUTE [rtnetlink] (7)  - Linux IPv4 routing socket
PF_LOCAL [unix]      (7)  - Sockets for local interprocess communication
PF_UNIX [unix]       (7)  - Sockets for local interprocess communication
SOCK_RAW [raw]       (7)  - Linux IPv4 raw sockets
....


•gpg -c file
주어진 file을 암호화 한다. 암호화된 파일은 file.gpg로 저장된다.

•gpg file.gpg
암호화된 파일 file.gpg를 복호화 한다.

•cal -3
이번달을 기준으로 지난달과 다음달을 출력한다.

http://www.joinc.co.kr/albums/album01/ajj.png

•grep --color word /usr/share/dict/words
grep는 파일에서 문자열 word를 포함한 라인을 찾아내서 출력한다. 그러나 여러개의 출력이 한번에 이루어질 경우 출력결과가 혼란스러울 수 있다. --color 옵션을 주면 찾아낸 문자열에 대해서 쉽게 확인 할 수 있도록 색을 줘서 출력한다.

•nice command
명령을 낮은 우선순위로 실행한다.

•echo "wget url" | at 01:00
새벽한시에 wget url을 수행한다. wget은 특정 페이지를 다운로드 받기 위해서 사용한다. 지정된 시간에 어떤 일을 수행하도록 하기 위한 다양한 목적으로 응용가능하다. # echo "wget http://www.joinc.co.kr/index.php | at 01:"


•echo "mail -s '중요한 약속 있음' P@joinc.co.kr < /dev/null" | at 14:00
14시에 주의를 환기시키는 메일을 발송한다.

•echo "(321-123)/123" | bc -l
간단한 수치연산

•watch -n1 "cat /proc/interrupts"
1초 간격으로 주어진 파일의 변화된 내용을 화면에 연속적으로 출력한다.

•time command
command에 대한 실행시간을 체크한다. 간단한 프로그램 성능테스트를 위한 용도로 사용할 수 있다.

•dd bs=1M if=/dev/hda | gzip | ssh user@remote dd of=hda.gz
하드디스크를 압축해서 원격지에 저장한다.

•alias hd='od -Ax -tx1z -v'
파일의 내용을 덤프뜨고 싶을 때 유용하게 사용할 수 있다. 16진수 데이터와 ASCII내용을 한화면에 출력시켜준다.

http://www.joinc.co.kr/albums/album01/ajk.png

•touch -c -t 0304050607 file
파일의 시간을 설정한다(YYMMDDhhmm).

•du -sh file dir
파일과 디렉토리의 디스크 사용량을 출력한다. # du -sh root
870M    root


•pstree -p
프로세스의 상속결과를 트리형태로 출력한다. -p 옵션이 붙은경우 각 프로세스의 PID도 함께 출력한다.

 

 

2 원격 작업


•ncftpput -u userid -p password hostname /path/file sourcefile ftp 클라이언트인 ncftp에서 제공하는 커멘드라인 클라이언트 프로그램으로 스크립트 형태로 사용할 수 있게 되어 있다. sourcefile을 hostname 서버의 /path/file로 복사한다. 자동백업등을 ftp를 통해서 제어하고 싶을 때 유용하게 사용할 수 있다.
•ncftpget -u userid -p password hostname localpath /path/file hostname의 ftp서버에 접근해서 /path/file을 localpath로 복사한다. ncftpput와 함께 유용하게 사용할 수 있다.
•wget ftp://userid:password@hostname/path/file 원격 호스트 hostname에 userid와 password로 접근해서 /path/file을 가져온다.


3 파일 시스템


•df -h 남은 파일 공간
•df -i 남는 inode
•du -hs 디렉토리의 사용량을 출력한다.
•fdisk -l 디스크 파티션의 크기를 출력


4 디렉토리 검색


•cd - 이전의 작업 디렉토리로 되돌아간다.
•cd 홈 디렉토리로 이동한다.
•cd dir && command dir로 이동한후 명령을 실행시키고 자동적으로 현재 디렉토리로 이동한다.
•pushd . 현재 디렉토리를 스택에 저장한다. popd를 이용해서 스택에 저장된 디렉토리로 이동이 가능하다. 디렉토리를 여기저기 이동해야 할때 편하게 사용할 수 있다.

 


5 압축


•tar c dir | bzip2 > dir.tar.bz2 디렉토리를 tar로 묶은후 bz2로 압축한다.
•bzip2 -dc dir.tar.bz2 | tar x 위의 명령으로 압축된 파일을 푼다.
•find dir -name "*.png" | xargs tar rf dir.tar; bzip2 dir.tar ◦.png를 찾은 후 압축한다.

•cpio -idmv < file.cpio cpio로 묶인 파일을 푼다.


6 파일 찾기


•alias l='ls -l --color=auto' 디렉토리 파일을 색으로 출력
•ls -rtl 파일을 날짜순으로 정렬해서 출력
•ls -rtS 파일을 크기순으로 정렬해서 출력
•find -name "*.ch" | xargs grep -E "search string" 확장자기 c,h인 모든 파일을 찾아서 "search string"가 있는지 확인한다.
•locate "file*.txt"
•find -type f | xargs grep -E "search string" 하위 디렉토리를 포함한 모든 일반 파일에서 "search string"를 찾는다.
•find -type f -maxdepth 1 | xargs grep -E "search string" 현재 디렉토리에서 "search string"를 포함한 일반 파일을 찾는다.

 


7 CD 관련 작업


•dd db=1M if=/dev/cdrom | gzip > cdrom.is.gz
•mkisofs -r dir | gzip > cdrom.iso.gz 디렉토리의 내용을 cdrom 이미지로 작성
•gzip -dc cdrom.iso.gz | cdrecord dev=0,0,0 -* 작성된 cdrom 이미지를 이용해서 cdrom 굽기
•cdrecord dev=0,0,0 -audio *.wav wav파일로 부터 오디오 CD만들기

 


8 RPM


•rpm -ivh packages.rpm rpm패키지를 설치하기
•rpm -Uvh packages.rpm rpm패키지를 업그레이드 하기
•rpm -e package rpm패키지를 지우기
•rpm -e package 설치된 package의 버젼을 알아오기
•rpm -qi package 설치된 package의 자세한 정보 알아오기
•rpm -qf /path/file /path/file이 어떤 rpm패키지에 포함되어 있는지 확인
•rpm -q --requires package 패키지가 필요로 하는 파일혹은 패키지들
•rpm -qa --queryformat "%10{SIZE}\t%{NAME}\n" | sort -k1,1n 모든 페키지를 크기로 정렬해서 출력한다.
•rpm -qa | grep mplayer 설치한 패키지 중에 mplayer이 있는지 확인

 


9 문자열 편집


•sed 's/string1/string2/g' file file에서 모든 string1을 string2로 치환한다.
•tr -d '\r' < file 파일에서 '\r'문자를 제거한다. 도스에서 만들어진 텍스트 파일을 unix포멧으로 변경할 때 사용할 수 있다.

 


10 interactive


•mc
ftp 클라이언트로도 사용가능한 강력한 파일 메니저

•script
터미널의 상황을 파일로 저장한다. vmstat와 같은 내용을 파일로 저장하기 위해서 사용할 수 있다. # script
# vmstat 2
 r  b   swpd   free   buff  cache   si   so    bi    bo   in    cs us sy id wa
 0  0      0  43116  20696 289776    0    0   144    29 1093   967  7  2 85  6
 0  0      0  43116  20704 289776    0    0     0     6 1048   602  0  0 100  1
 0  0      0  43116  20704 289776    0    0     0     0 1044   598  0  0 100  0

작업이 끝났다면 Ctrl+D키를 누르면 된다. 그러면 typescript라는 파일이름으로 지금까지 터미널 작업내역이 저장된다.

 

 

참고 URL : http://www.joinc.co.kr/modules/moniwiki/wiki.php/Site/Tip/CommandLine

위로