익혀두면 유용한 shell 명령어들. UseThePowerOfCommandShells. One of the ComputerTips [[TableOfContents]] == [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 === 쉘에서의 VimEditor 모드 === {{{ set -o vi }}} SeeAlso http://bbs.python.or.kr/viewtopic.php?t=21176 === 특정디렉토리밑의 모든 파일내 문자열 바꾸기 === {{{ find . -type f -exec vi -c $'%s/bioinfo\.sarang\.net/biohackers\.net/g\nwq\n' \{} \; }}} === 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}' }}}