익혀두면 유용한 shell 명령어들. UseThePowerOfCommandShells. One of the ComputerTips <> vi 관련 팁은 VimEditorCommands 참고 관련포스트 * [[http://www.ibm.com/developerworks/kr/library/l-10sysadtips/|게으른 리눅스: 시스템 관리자를 위한 열 가지 트릭]] * [[http://www.linuxnix.com/2012/07/23-awesome-less-known-linuxunix-command-chaining-examples.html|25+ Awesome Linux/Unix command chaining examples]] == Unix == === 시계맞추기 === {{{ rdate -s time.kriss.re.kr clock -w }}} crontab명령어와 같이 사용하면 효과적으로 쓸 수 있다. {{{ crontab -e 5 0 * * * /usr/bin/rdate -s time.kriss.re.kr }}} === 누가누가 접속해있나, 뭐하나 확인 === {{{ users, finger, w, who }}} === 특정아이피 접속차단 === See IpToBlock === 포트스켄 === {{{ nmap (ip_address or host name) }}} 해당 컴퓨터에 열려있는 포트/서비스들을 보여준다. 안먹는 컴퓨터들도 있다. === 파일 저장하지 않고 풀기 === 보통 *.tar.gz이나 *.tar.bz2파일은 다운받아서 풀면, 받은 파일은 더이상 필요가 없어진다. 이럴때는 저장할 파일의 주소를 저장해서 {{{ curl 파일URL | tar [z,j]xvf - }}} 이러면 받으면서 풀림. === 파이프 === {{{ > : stdout 전달 2> : stderr 전달 >> : 이어붙이기 }}} === 상대방컴퓨터에 터미널보내기 === 믿을만한 상대가 아님 시도하지 말것. 특히나 루트일때는 위험하다. {{{ # export DISPLAY=ip:0 # xterm }}} === 다른컴퓨터를 하드디스크로 마운트하기 === [[NFS]]를 이용 === 현재디렉토리 파일갯수세기 === {{{ ls -l | wc -l }}} === 쉘 프롬프트 변경하기 === {{{ PS1='\[\e[3;32m\]\h:\u@\w \d \t \$ \[\e[m\]' }}} see http://networking.ringofsaturn.com/Unix/Bash-prompts.php === 특정디렉토리밑의 모든 파일내 문자열 바꾸기 === {{{ find . -type f -exec vi -c $'%s/bioinfo\.sarang\.net/biohackers\.net/g\nwq\n' \{} \; }}} VimEditor 에서 {{{ gvim . * # 하위디렉토리까지 열기 :argdo %s/foo/bar/g | w }}} === CPU 정보 === {{{ cat /proc/cpuinfo }}} === 사이즈 큰 파일의 다운로드 === 사이즈 큰 파일(2G 미만은 wget -c 로 다됨)을 다운로드하기 위한 몇가지 방법들 * ncftp 에서 resume 으로 계속 이어받기 * wget -t 0 -O - > afile 으로 받자마자 afile로 넘기기. (이경우 중간에 멈추면 처음부터 다시 ㅡ.ㅡ;) === UseKeyCapsLockToControl === UseKeyCapsLockToControl === ScreenMultiplexor를 이용한 스크린전환 === ScreenMultiplexor === 특정 로그에서 특정 아이피 빈도 측정 === [[Apache]] {{{ cat access_log | awk '{print $1}' | sort | uniq -c }}} {{{ (gzip -dc access.log.*.gz; cat access.log; cat access.log.1) | egrep 'gmp.(ht|x)ml' | awk '{print $1}' | sort | uniq }}} [[SSH]] {{{ (cat auth.log && bzcat auth.log.*) | awk '{print $1" "$2}'|uniq -c|sort -r }}} === 영화에서 mp3 추출 === {{{ mplayer -vo null -dumpaudio -dumpfile 파일명.mp3 파일명.avi mencoder -ovc frameno -oac mp3lame -lameopts cbr:br=192:mode=1 -o 파일명.mp3 파일명.avi }}} SeeAlso [[http://bbs.kldp.org/viewtopic.php?t=49259|비디오 파일에서 오디오 추출하기]] === rename === cus* 로 시작하는 파일을 VIP*로 바꾸기. {{{ ls cus* | sed -e 's/cus\(.*\)/mv cus\1 VIP\1/' | sh }}} 혹은 [[Perl]]스크립트 rename (대개 기본으로 깔려있다) {{{ rename 's/cus/VIP/' *.txt }}} === bash 프롬프트에 색깔입히기 === .bashrc 에 다음 추가. from [[http://tokigun.net/blog/entry.php?blogid=23|토끼군님 블로그]] {{{ __PS_COLOR=31 __PROMPT_FUNC() { local _ERRVAL=$?; local _PWD=${PWD/$HOME/~}; local _BASE=${_PWD##*/} PS1="\[\e[1;${__PS_COLOR}m\]\u\[\e[0;${__PS_COLOR}m\]@\h\[\e[1;30;40m\]:" PS1="${PS1}\[\e[0;37m\]${_PWD%$_BASE}\[\e[1;37m\]${_BASE}" if test $_ERRVAL -eq 0; then PS1="${PS1}\[\e[32m\]\\$ \[\e[0m\]" else PS1="${PS1}\[\e[31m\]\\$ [${_ERRVAL}] \[\e[0m\]" fi echo -ne "\e]0;${USER}@${HOSTNAME}: ${_PWD}\007" } PROMPT_COMMAND=__PROMPT_FUNC }}} 31 - red, 33 - yellow === 사용자에게 관리자권한주기 === See [[Sudo]] === 텍스트 웹브라우저 === See [[W3m]] === 특정 파일들 사이즈 계산 === {{{ du -sk COGS* | awk '{print $1}' | python -c 'print sum(map(int, __import__("sys").stdin.read().split()))' }}} {{{ du -sk COGS* | awk '{sum += $1} END {print sum}' }}} === Grep === See [[Grep]] === List of commands you use most often === {{{ history | awk '{a[$2]++}END{for(i in a){print a[i] " " i}}' | sort -rn | head }}} === 특정 사용자로 실행하기 === {{{ su -c /usr/local/script/run.sh useraccount }}} === 분할압축 및 해제 === 리눅스에서 2기가 이상 파일로 압축하기 위해 {{{ tar -zcvpf - /home | split -b 2048mb - home.tar.gz cat home.tar.gz* | tar -zxvpf - }}} === 파일찾기 === {{{ updatedb # run at crontab daily locate myfile }}{