<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://mediawiki.zeropage.org/index.php?action=history&amp;feed=atom&amp;title=.bashrc</id>
	<title>.bashrc - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://mediawiki.zeropage.org/index.php?action=history&amp;feed=atom&amp;title=.bashrc"/>
	<link rel="alternate" type="text/html" href="https://mediawiki.zeropage.org/index.php?title=.bashrc&amp;action=history"/>
	<updated>2026-05-14T14:51:10Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.39.8</generator>
	<entry>
		<id>https://mediawiki.zeropage.org/index.php?title=.bashrc&amp;diff=41386&amp;oldid=prev</id>
		<title>imported&gt;Unknown at 05:28, 7 February 2021</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.zeropage.org/index.php?title=.bashrc&amp;diff=41386&amp;oldid=prev"/>
		<updated>2021-02-07T05:28:35Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt; #===============================================================&lt;br /&gt;
 #&lt;br /&gt;
 # bash-2.05 이후 버전을 위한 개인적 $HOME/.bashrc 파일&lt;br /&gt;
 #&lt;br /&gt;
 # 아 파일은 대화모드 쉘을 위한 것입니다.&lt;br /&gt;
 # 별칭(alias)이나 함수, 프롬프트같은 &lt;br /&gt;
 # 대화모드용 기능들을 여기에 두면 됩니다.&lt;br /&gt;
 #&lt;br /&gt;
 # 원래는 솔라리스를 위해 디자인 되었습니다.&lt;br /&gt;
 # --&amp;amp;gt; 리눅스용으로 수정&lt;br /&gt;
 # 이 파일은 너무 많은 것을 포함하고 있지만 &lt;br /&gt;
 # 단지 예제라는 것을 기억하세요.&lt;br /&gt;
 # 여러분 필요에 따라 수정해서 쓰기 바랍니다.&lt;br /&gt;
 #&lt;br /&gt;
 #===============================================================&lt;br /&gt;
 &lt;br /&gt;
 # --&amp;amp;gt; 본 문서 저자에 의한 주석.&lt;br /&gt;
 &lt;br /&gt;
 #-----------------------------------&lt;br /&gt;
 # 필요하다면 전역 정의를 source&lt;br /&gt;
 #-----------------------------------&lt;br /&gt;
 &lt;br /&gt;
 if [ -f /etc/bashrc ]; then&lt;br /&gt;
         . /etc/bashrc   # --&amp;amp;gt; 있다면 /etc/bashrc 를 읽음.&lt;br /&gt;
 fi&lt;br /&gt;
 &lt;br /&gt;
 #-------------------------------------------------------------&lt;br /&gt;
 # 아직 세트되지 않았다면 $DISPLAY 를 자동으로 세팅&lt;br /&gt;
 # 이 부분은 리눅스와 솔라리스용입니다 - 필요한대로 고쳐 쓰세요...&lt;br /&gt;
 #-------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
 if [ -z ${DISPLAY:=&amp;quot;&amp;quot;} ]; then&lt;br /&gt;
     DISPLAY=$(who am i)&lt;br /&gt;
     DISPLAY=${DISPLAY%%\!*}&lt;br /&gt;
     if [ -n &amp;quot;$DISPLAY&amp;quot; ]; then&lt;br /&gt;
         export DISPLAY=$DISPLAY:0.0&lt;br /&gt;
     else&lt;br /&gt;
         export DISPLAY=&amp;quot;:0.0&amp;quot;  # 실패할 경우를 대비(fallback)&lt;br /&gt;
     fi&lt;br /&gt;
 fi&lt;br /&gt;
 &lt;br /&gt;
 #---------------&lt;br /&gt;
 # 몇 가지 세팅&lt;br /&gt;
 #---------------&lt;br /&gt;
 &lt;br /&gt;
 set -o notify&lt;br /&gt;
 set -o noclobber&lt;br /&gt;
 set -o ignoreeof&lt;br /&gt;
 set -o nounset&lt;br /&gt;
 #set -o xtrace          # 디버깅용&lt;br /&gt;
 &lt;br /&gt;
 shopt -s cdspell&lt;br /&gt;
 shopt -s cdable_vars&lt;br /&gt;
 shopt -s checkhash&lt;br /&gt;
 shopt -s checkwinsize&lt;br /&gt;
 shopt -s mailwarn&lt;br /&gt;
 shopt -s sourcepath&lt;br /&gt;
 shopt -s no_empty_cmd_completion&lt;br /&gt;
 shopt -s histappend histreedit&lt;br /&gt;
 shopt -s extglob        # programmable completion에 유용&lt;br /&gt;
 &lt;br /&gt;
 #-----------------------&lt;br /&gt;
 # 인사말, motd 등등...&lt;br /&gt;
 #-----------------------&lt;br /&gt;
 &lt;br /&gt;
 # 먼저 색깔을 몇 개 정의:&lt;br /&gt;
 red=&amp;#039;\e[0;31m&amp;#039;&lt;br /&gt;
 RED=&amp;#039;\e[1;31m&amp;#039;&lt;br /&gt;
 blue=&amp;#039;\e[0;34m&amp;#039;&lt;br /&gt;
 BLUE=&amp;#039;\e[1;34m&amp;#039;&lt;br /&gt;
 cyan=&amp;#039;\e[0;36m&amp;#039;&lt;br /&gt;
 CYAN=&amp;#039;\e[1;36m&amp;#039;&lt;br /&gt;
 NC=&amp;#039;\e[0m&amp;#039;              # No Color&lt;br /&gt;
 # --&amp;amp;gt; 좋군요. 도스에서 &amp;quot;ansi.sys&amp;quot;를 쓰는 것과 똑같은 효과가 있네요.&lt;br /&gt;
 &lt;br /&gt;
 # 검정색 백그라운드에서 가장 좋게 보입니다.....&lt;br /&gt;
 echo -e &amp;quot;${CYAN}This is BASH ${RED}${BASH_VERSION%.*}${CYAN} - DISPLAY on ${RED}$DISPLAY${NC}\n&amp;quot;&lt;br /&gt;
 date&lt;br /&gt;
 if [ -x /usr/games/fortune ]; then &lt;br /&gt;
     /usr/games/fortune -s     # 하루를 즐겁게.... :-)&lt;br /&gt;
 fi&lt;br /&gt;
 &lt;br /&gt;
 function _exit()        # 쉘에서 종료시 실행할 함수&lt;br /&gt;
 {&lt;br /&gt;
     echo -e &amp;quot;${RED}나중에 또 봐요${NC}&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
 trap _exit 0&lt;br /&gt;
 &lt;br /&gt;
 #---------------&lt;br /&gt;
 # 쉘 프롬프트&lt;br /&gt;
 #---------------&lt;br /&gt;
 &lt;br /&gt;
 function fastprompt()&lt;br /&gt;
 {&lt;br /&gt;
     unset PROMPT_COMMAND&lt;br /&gt;
     case $TERM in&lt;br /&gt;
         *term | rxvt )&lt;br /&gt;
             PS1=&amp;quot;[\h] \W &amp;amp;gt; \[\033]0;[\u@\h] \w\007\]&amp;quot; ;;&lt;br /&gt;
         *)&lt;br /&gt;
             PS1=&amp;quot;[\h] \W &amp;amp;gt; &amp;quot; ;;&lt;br /&gt;
     esac&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 function powerprompt()&lt;br /&gt;
 {&lt;br /&gt;
     _powerprompt()&lt;br /&gt;
     {&lt;br /&gt;
         LOAD=$(uptime|sed -e &amp;quot;s/.*: \([^,]*\).*/\1/&amp;quot; -e &amp;quot;s/ //g&amp;quot;)&lt;br /&gt;
         TIME=$(date +%H:%M)&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     PROMPT_COMMAND=_powerprompt&lt;br /&gt;
     case $TERM in&lt;br /&gt;
         *term | rxvt  )&lt;br /&gt;
             PS1=&amp;quot;${cyan}[\$TIME \$LOAD]$NC\n[\h \#] \W &amp;amp;gt; \[\033]0;[\u@\h] \w\007\]&amp;quot; ;;&lt;br /&gt;
         linux )&lt;br /&gt;
             PS1=&amp;quot;${cyan}[\$TIME - \$LOAD]$NC\n[\h \#] \w &amp;amp;gt; &amp;quot; ;;&lt;br /&gt;
         * )&lt;br /&gt;
             PS1=&amp;quot;[\$TIME - \$LOAD]\n[\h \#] \w &amp;amp;gt; &amp;quot; ;;&lt;br /&gt;
     esac&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 powerprompt     # 좀 느릴지도 모를 기본 프롬프트입니다.&lt;br /&gt;
                 # 너무 느리면 fastprompt 를 쓰세요....&lt;br /&gt;
 &lt;br /&gt;
 #===============================================================&lt;br /&gt;
 #&lt;br /&gt;
 # 별칭(alias)과 함수들&lt;br /&gt;
 #&lt;br /&gt;
 # 논쟁의 여지가 있지만 몇몇 함수들은 조금 덩치가 큰데(즉, &amp;#039;lowercase&amp;#039;)&lt;br /&gt;
 # 제 워크스테이션은 램이 512메가거든요...&lt;br /&gt;
 # 이 파일 크기를 줄이고 싶다면 이런 함수들은 스크립트로 빼도 됩니다.&lt;br /&gt;
 #&lt;br /&gt;
 # 많은 함수들은 bash-2.04 예제에서 거의 그대로 갖다 썼습니다.&lt;br /&gt;
 #&lt;br /&gt;
 #===============================================================&lt;br /&gt;
 &lt;br /&gt;
 #-------------------------&lt;br /&gt;
 # 개인적인 별칭들(Aliases)&lt;br /&gt;
 #-------------------------&lt;br /&gt;
 &lt;br /&gt;
 alias rm=&amp;#039;rm -i&amp;#039;&lt;br /&gt;
 alias cp=&amp;#039;cp -i&amp;#039;&lt;br /&gt;
 alias mv=&amp;#039;mv -i&amp;#039;&lt;br /&gt;
 # -&amp;amp;gt; 파일에 실수로 타격을 입히지 않게.&lt;br /&gt;
 &lt;br /&gt;
 alias h=&amp;#039;history&amp;#039;&lt;br /&gt;
 alias j=&amp;#039;jobs -l&amp;#039;&lt;br /&gt;
 alias r=&amp;#039;rlogin&amp;#039;&lt;br /&gt;
 alias which=&amp;#039;type -all&amp;#039;&lt;br /&gt;
 alias ..=&amp;#039;cd ..&amp;#039;&lt;br /&gt;
 alias path=&amp;#039;echo -e ${PATH//:/\n}&amp;#039;&lt;br /&gt;
 alias print=&amp;#039;/usr/bin/lp -o nobanner -d $LPDEST&amp;#039;   # LPDEST 가 정의되어 있다고 가정&lt;br /&gt;
 alias pjet=&amp;#039;enscript -h -G -fCourier9 -d $LPDEST&amp;#039;  # enscript 로 예쁜 출력하기(Pretty-print)&lt;br /&gt;
 alias background=&amp;#039;xv -root -quit -max -rmode 5&amp;#039; # 백그라운드 배경 그림&lt;br /&gt;
 alias vi=&amp;#039;vim&amp;#039;&lt;br /&gt;
 alias du=&amp;#039;du -h&amp;#039;&lt;br /&gt;
 alias df=&amp;#039;df -kh&amp;#039;&lt;br /&gt;
 &lt;br /&gt;
 # &amp;#039;ls&amp;#039; 그룹(여러분이 GNU ls 를 쓴다고 가정)&lt;br /&gt;
 alias ls=&amp;#039;ls -hF --color&amp;#039;	# 파일타입 인식을 위해 색깔을 추가&lt;br /&gt;
 alias lx=&amp;#039;ls -lXB&amp;#039;		# 확장자별로 정렬&lt;br /&gt;
 alias lk=&amp;#039;ls -lSr&amp;#039;		# 크기별로 정렬&lt;br /&gt;
 alias la=&amp;#039;ls -Al&amp;#039;		# 숨겨진 파일 보기&lt;br /&gt;
 alias lr=&amp;#039;ls -lR&amp;#039;		# 재귀적 ls&lt;br /&gt;
 alias lt=&amp;#039;ls -ltr&amp;#039;		# 날짜별로 정렬&lt;br /&gt;
 alias lm=&amp;#039;ls -al |more&amp;#039;		# &amp;#039;more&amp;#039;로 파이프 걸기&lt;br /&gt;
 alias tree=&amp;#039;tree -Cs&amp;#039;		# &amp;#039;ls&amp;#039;의 멋진 대용품&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 # 맞춤 &amp;#039;less&amp;#039; &lt;br /&gt;
 alias more=&amp;#039;less&amp;#039;&lt;br /&gt;
 export PAGER=less&lt;br /&gt;
 export LESSCHARSET=&amp;#039;latin1&amp;#039;&lt;br /&gt;
 export LESSOPEN=&amp;#039;|/usr/bin/lesspipe.sh %s 2&amp;amp;gt;&amp;amp;amp;-&amp;#039; # lesspipe.sh 이 있다면 이걸 쓰세요&lt;br /&gt;
 export LESS=&amp;#039;-i -N -w  -z-4 -g -e -M -X -F -R -P%t?f%f \&lt;br /&gt;
 :stdin .?pb%pb\%:?lbLine %lb:?bbByte %bb:-...&amp;#039;&lt;br /&gt;
 &lt;br /&gt;
 # 스펠링 오타용 - 아주 개인적임 :-)&lt;br /&gt;
 alias xs=&amp;#039;cd&amp;#039;&lt;br /&gt;
 alias vf=&amp;#039;cd&amp;#039;&lt;br /&gt;
 alias moer=&amp;#039;more&amp;#039;&lt;br /&gt;
 alias moew=&amp;#039;more&amp;#039;&lt;br /&gt;
 alias kk=&amp;#039;ll&amp;#039;&lt;br /&gt;
 &lt;br /&gt;
 #----------------&lt;br /&gt;
 # 재밌는 거 몇 개&lt;br /&gt;
 #----------------&lt;br /&gt;
 &lt;br /&gt;
 function xtitle ()&lt;br /&gt;
 {&lt;br /&gt;
     case $TERM in&lt;br /&gt;
         *term | rxvt)&lt;br /&gt;
             echo -n -e &amp;quot;\033]0;$*\007&amp;quot; ;;&lt;br /&gt;
         *)  ;;&lt;br /&gt;
     esac&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 # 별칭들(aliases)...&lt;br /&gt;
 alias top=&amp;#039;xtitle Processes on $HOST &amp;amp;amp;&amp;amp;amp; top&amp;#039;&lt;br /&gt;
 alias make=&amp;#039;xtitle Making $(basename $PWD) ; make&amp;#039;&lt;br /&gt;
 alias ncftp=&amp;quot;xtitle ncFTP ; ncftp&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 # .. 과 함수들&lt;br /&gt;
 function man ()&lt;br /&gt;
 {&lt;br /&gt;
     xtitle The $(basename $1|tr -d .[:digit:]) manual&lt;br /&gt;
     man -a &amp;quot;$*&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 function ll(){ ls -l &amp;quot;$@&amp;quot;| egrep &amp;quot;^d&amp;quot; ; ls -lXB &amp;quot;$@&amp;quot; 2&amp;amp;gt;&amp;amp;amp;-| egrep -v &amp;quot;^d|total &amp;quot;; }&lt;br /&gt;
 function xemacs() { { command xemacs -private $* 2&amp;amp;gt;&amp;amp;amp;- &amp;amp;amp; } &amp;amp;amp;&amp;amp;amp; disown ;}&lt;br /&gt;
 function te()  # xemacs/gnuserv 래퍼&lt;br /&gt;
 {&lt;br /&gt;
     if [ &amp;quot;$(gnuclient -batch -eval t 2&amp;amp;gt;&amp;amp;amp;-)&amp;quot; == &amp;quot;t&amp;quot; ]; then&lt;br /&gt;
         gnuclient -q &amp;quot;$@&amp;quot;;&lt;br /&gt;
     else&lt;br /&gt;
         ( xemacs &amp;quot;$@&amp;quot; &amp;amp;amp; );&lt;br /&gt;
     fi&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 #-----------------------------------&lt;br /&gt;
 # 파일 &amp;amp;amp; 문자열 관련 함수들:&lt;br /&gt;
 #-----------------------------------&lt;br /&gt;
 &lt;br /&gt;
 function ff() { find . -name &amp;#039;*&amp;#039;$1&amp;#039;*&amp;#039; ; }                 # 파일 찾기&lt;br /&gt;
 function fe() { find . -name &amp;#039;*&amp;#039;$1&amp;#039;*&amp;#039; -exec $2 {} \; ; }  # 파일을 찾아서 $2 의 인자로 실행&lt;br /&gt;
 function fstr() # 여러 파일중에서 문자열 찾기&lt;br /&gt;
 {&lt;br /&gt;
     if [ &amp;quot;$#&amp;quot; -gt 2 ]; then&lt;br /&gt;
         echo &amp;quot;Usage: fstr &amp;quot;pattern&amp;quot; [files] &amp;quot;&lt;br /&gt;
         return;&lt;br /&gt;
     fi&lt;br /&gt;
     SMSO=$(tput smso)&lt;br /&gt;
     RMSO=$(tput rmso)&lt;br /&gt;
     find . -type f -name &amp;quot;${2:-*}&amp;quot; -print | xargs grep -sin &amp;quot;$1&amp;quot; | \&lt;br /&gt;
 sed &amp;quot;s/$1/$SMSO$1$RMSO/gI&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 function cuttail() # 파일에서 끝의 n 줄을 잘라냄. 기본값은 10&lt;br /&gt;
 {&lt;br /&gt;
     nlines=${2:-10}&lt;br /&gt;
     sed -n -e :a -e &amp;quot;1,${nlines}!{P;N;D;};N;ba&amp;quot; $1&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 function lowercase()  # 파일이름을 소문자로 변경&lt;br /&gt;
 {&lt;br /&gt;
     for file ; do&lt;br /&gt;
         filename=${file##*/}&lt;br /&gt;
         case &amp;quot;$filename&amp;quot; in&lt;br /&gt;
         */*) dirname==${file%/*} ;;&lt;br /&gt;
         *) dirname=.;;&lt;br /&gt;
         esac&lt;br /&gt;
         nf=$(echo $filename | tr A-Z a-z)&lt;br /&gt;
         newname=&amp;quot;${dirname}/${nf}&amp;quot;&lt;br /&gt;
         if [ &amp;quot;$nf&amp;quot; != &amp;quot;$filename&amp;quot; ]; then&lt;br /&gt;
             mv &amp;quot;$file&amp;quot; &amp;quot;$newname&amp;quot;&lt;br /&gt;
             echo &amp;quot;lowercase: $file --&amp;amp;gt; $newname&amp;quot;&lt;br /&gt;
         else&lt;br /&gt;
             echo &amp;quot;lowercase: $file not changed.&amp;quot;&lt;br /&gt;
         fi&lt;br /&gt;
     done&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 function swap()         # 파일이름 두개를 서로 바꿈&lt;br /&gt;
 {&lt;br /&gt;
     local TMPFILE=tmp.$$&lt;br /&gt;
     mv $1 $TMPFILE&lt;br /&gt;
     mv $2 $1&lt;br /&gt;
     mv $TMPFILE $2&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 #-----------------------------------&lt;br /&gt;
 # 프로세스/시스템 관련 함수들:&lt;br /&gt;
 #-----------------------------------&lt;br /&gt;
 &lt;br /&gt;
 function my_ps() { ps $@ -u $USER -o pid,%cpu,%mem,bsdtime,command ; }&lt;br /&gt;
 function pp() { my_ps f | awk &amp;#039;!/awk/ &amp;amp;amp;&amp;amp;amp; $0~var&amp;#039; var=${1:-&amp;quot;.*&amp;quot;} ; }&lt;br /&gt;
 &lt;br /&gt;
 # 이 함수는 리눅스의 &amp;#039;killall&amp;#039; 스크립트와 거의 비슷하지만&lt;br /&gt;
 # 솔라리스에는, 제가 아는 한, 이와 비슷한 것이 없습니다.&lt;br /&gt;
 function killps()   # 프로세스 이름으로 kill&lt;br /&gt;
 {&lt;br /&gt;
     local pid pname sig=&amp;quot;-TERM&amp;quot;   # 기본 시그널&lt;br /&gt;
     if [ &amp;quot;$#&amp;quot; -lt 1 ] || [ &amp;quot;$#&amp;quot; -gt 2 ]; then &lt;br /&gt;
 	echo &amp;quot;Usage: killps [-SIGNAL] pattern&amp;quot;&lt;br /&gt;
 	return;&lt;br /&gt;
     fi&lt;br /&gt;
     if [ $# = 2 ]; then sig=$1 ; fi&lt;br /&gt;
     for pid in $(my_ps| awk &amp;#039;!/awk/ &amp;amp;amp;&amp;amp;amp; $0~pat { print $1 }&amp;#039; pat=${!#} ) ; do&lt;br /&gt;
 	pname=$(my_ps | awk &amp;#039;$1~var { print $5 }&amp;#039; var=$pid )&lt;br /&gt;
 	if ask &amp;quot;Kill process $pid &amp;amp;lt;$pname&amp;amp;gt; with signal $sig?&amp;quot;&lt;br /&gt;
 	    then kill $sig $pid&lt;br /&gt;
 	fi&lt;br /&gt;
     done&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 function my_ip() # IP 주소 알아내기&lt;br /&gt;
 {&lt;br /&gt;
     MY_IP=$(/sbin/ifconfig ppp0 | awk &amp;#039;/inet/ { print $2 } &amp;#039; | sed -e s/addr://)&lt;br /&gt;
     MY_ISP=$(/sbin/ifconfig ppp0 | awk &amp;#039;/P-t-P/ { print $3 } &amp;#039; | sed -e s/P-t-P://)&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 function ii()   # 현재 호스트 관련 정보들 알아내기&lt;br /&gt;
 {&lt;br /&gt;
     echo -e &amp;quot;\nYou are logged on ${RED}$HOST&amp;quot;&lt;br /&gt;
     echo -e &amp;quot;\nAdditionnal information:$NC &amp;quot; ; uname -a&lt;br /&gt;
     echo -e &amp;quot;\n${RED}Users logged on:$NC &amp;quot; ; w -h&lt;br /&gt;
     echo -e &amp;quot;\n${RED}Current date :$NC &amp;quot; ; date&lt;br /&gt;
     echo -e &amp;quot;\n${RED}Machine stats :$NC &amp;quot; ; uptime&lt;br /&gt;
     echo -e &amp;quot;\n${RED}Memory stats :$NC &amp;quot; ; free&lt;br /&gt;
     my_ip 2&amp;amp;gt;&amp;amp;amp;- ;&lt;br /&gt;
     echo -e &amp;quot;\n${RED}Local IP Address :$NC&amp;quot; ; echo ${MY_IP:-&amp;quot;Not connected&amp;quot;}&lt;br /&gt;
     echo -e &amp;quot;\n${RED}ISP Address :$NC&amp;quot; ; echo ${MY_ISP:-&amp;quot;Not connected&amp;quot;}&lt;br /&gt;
     echo&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 # 기타 유틸리티:&lt;br /&gt;
 &lt;br /&gt;
 function repeat()       # 명령어를 n 번 반복&lt;br /&gt;
 {&lt;br /&gt;
     local i max&lt;br /&gt;
     max=$1; shift;&lt;br /&gt;
     for ((i=1; i &amp;amp;lt;= max ; i++)); do  # --&amp;amp;gt; C 형태의 문법&lt;br /&gt;
         eval &amp;quot;$@&amp;quot;;&lt;br /&gt;
     done&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 function ask()&lt;br /&gt;
 {&lt;br /&gt;
     echo -n &amp;quot;$@&amp;quot; &amp;#039;[y/n] &amp;#039; ; read ans&lt;br /&gt;
     case &amp;quot;$ans&amp;quot; in&lt;br /&gt;
         y*|Y*) return 0 ;;&lt;br /&gt;
         *) return 1 ;;&lt;br /&gt;
     esac&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 #=========================================================================&lt;br /&gt;
 #&lt;br /&gt;
 # PROGRAMMABLE COMPLETION - 오직 BASH 2.04 이후에서만 동작&lt;br /&gt;
 # (거의 대부분은 bash 2.05 문서에서 가져왔습니다)&lt;br /&gt;
 # 몇 가지 기능들을 쓰려면 bash-2.05 가 필요할 겁니다.&lt;br /&gt;
 #&lt;br /&gt;
 #=========================================================================&lt;br /&gt;
 &lt;br /&gt;
 if [ &amp;quot;${BASH_VERSION%.*}&amp;quot; \&amp;amp;lt; &amp;quot;2.05&amp;quot; ]; then&lt;br /&gt;
     echo &amp;quot;programmable completion 을 쓰려면 bash 2.05 이상으로 업그레이드가 필요합니다.&amp;quot;&lt;br /&gt;
     return&lt;br /&gt;
 fi&lt;br /&gt;
 &lt;br /&gt;
 shopt -s extglob        # 꼭 필요함&lt;br /&gt;
 set +o nounset		# 이렇게 안 하면 programmable completion 몇 가지는 실패함&lt;br /&gt;
 &lt;br /&gt;
 # 옮긴이: 이 이후는 잘 모르겠네요. :(&lt;br /&gt;
 &lt;br /&gt;
 complete -A hostname   rsh rcp telnet rlogin r ftp ping disk&lt;br /&gt;
 complete -A command    nohup exec eval trace gdb&lt;br /&gt;
 complete -A command    command type which&lt;br /&gt;
 complete -A export     printenv&lt;br /&gt;
 complete -A variable   export local readonly unset&lt;br /&gt;
 complete -A enabled    builtin&lt;br /&gt;
 complete -A alias      alias unalias&lt;br /&gt;
 complete -A function   function&lt;br /&gt;
 complete -A user       su mail finger&lt;br /&gt;
 &lt;br /&gt;
 complete -A helptopic  help     # currently same as builtins&lt;br /&gt;
 complete -A shopt      shopt&lt;br /&gt;
 complete -A stopped -P &amp;#039;%&amp;#039; bg&lt;br /&gt;
 complete -A job -P &amp;#039;%&amp;#039;     fg jobs disown&lt;br /&gt;
 &lt;br /&gt;
 complete -A directory  mkdir rmdir&lt;br /&gt;
 complete -A directory   -o default cd&lt;br /&gt;
 &lt;br /&gt;
 complete -f -d -X &amp;#039;*.gz&amp;#039;  gzip&lt;br /&gt;
 complete -f -d -X &amp;#039;*.bz2&amp;#039; bzip2&lt;br /&gt;
 complete -f -o default -X &amp;#039;!*.gz&amp;#039;  gunzip&lt;br /&gt;
 complete -f -o default -X &amp;#039;!*.bz2&amp;#039; bunzip2&lt;br /&gt;
 complete -f -o default -X &amp;#039;!*.pl&amp;#039;  perl perl5&lt;br /&gt;
 complete -f -o default -X &amp;#039;!*.ps&amp;#039;  gs ghostview ps2pdf ps2ascii&lt;br /&gt;
 complete -f -o default -X &amp;#039;!*.dvi&amp;#039; dvips dvipdf xdvi dviselect dvitype&lt;br /&gt;
 complete -f -o default -X &amp;#039;!*.pdf&amp;#039; acroread pdf2ps &lt;br /&gt;
 complete -f -o default -X &amp;#039;!*.+(pdf|ps)&amp;#039; gv &lt;br /&gt;
 complete -f -o default -X &amp;#039;!*.texi*&amp;#039; makeinfo texi2dvi texi2html texi2pdf&lt;br /&gt;
 complete -f -o default -X &amp;#039;!*.tex&amp;#039; tex latex slitex &lt;br /&gt;
 complete -f -o default -X &amp;#039;!*.lyx&amp;#039; lyx &lt;br /&gt;
 complete -f -o default -X &amp;#039;!*.+(jpg|gif|xpm|png|bmp)&amp;#039; xv gimp&lt;br /&gt;
 complete -f -o default -X &amp;#039;!*.mp3&amp;#039; mpg123 &lt;br /&gt;
 complete -f -o default -X &amp;#039;!*.ogg&amp;#039; ogg123 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 # This is a &amp;#039;universal&amp;#039; completion function - it works when commands have&lt;br /&gt;
 # a so-called &amp;#039;long options&amp;#039; mode , ie: &amp;#039;ls --all&amp;#039; instead of &amp;#039;ls -a&amp;#039; &lt;br /&gt;
 _universal_func ()&lt;br /&gt;
 {&lt;br /&gt;
     case &amp;quot;$2&amp;quot; in&lt;br /&gt;
 	-*)	;;&lt;br /&gt;
 	*)	return ;;&lt;br /&gt;
     esac&lt;br /&gt;
 &lt;br /&gt;
     case &amp;quot;$1&amp;quot; in&lt;br /&gt;
 	\~*)	eval cmd=$1 ;;&lt;br /&gt;
 	*)	cmd=&amp;quot;$1&amp;quot; ;;&lt;br /&gt;
     esac&lt;br /&gt;
     COMPREPLY=( $(&amp;quot;$cmd&amp;quot; --help | sed  -e &amp;#039;/--/!d&amp;#039; -e &amp;#039;s/.*--\([^ ]*\).*/--\1/&amp;#039;| \&lt;br /&gt;
 grep ^&amp;quot;$2&amp;quot; |sort -u) )&lt;br /&gt;
 }&lt;br /&gt;
 complete  -o default -F _universal_func ldd wget bash id info&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 _make_targets ()&lt;br /&gt;
 {&lt;br /&gt;
     local mdef makef gcmd cur prev i&lt;br /&gt;
 &lt;br /&gt;
     COMPREPLY=()&lt;br /&gt;
     cur=${COMP_WORDS[COMP_CWORD]}&lt;br /&gt;
     prev=${COMP_WORDS[COMP_CWORD-1]}&lt;br /&gt;
 &lt;br /&gt;
     # if prev argument is -f, return possible filename completions.&lt;br /&gt;
     # we could be a little smarter here and return matches against&lt;br /&gt;
     # `makefile Makefile *.mk&amp;#039;, whatever exists&lt;br /&gt;
     case &amp;quot;$prev&amp;quot; in&lt;br /&gt;
         -*f)    COMPREPLY=( $(compgen -f $cur ) ); return 0;;&lt;br /&gt;
     esac&lt;br /&gt;
 &lt;br /&gt;
     # if we want an option, return the possible posix options&lt;br /&gt;
     case &amp;quot;$cur&amp;quot; in&lt;br /&gt;
         -)      COMPREPLY=(-e -f -i -k -n -p -q -r -S -s -t); return 0;;&lt;br /&gt;
     esac&lt;br /&gt;
 &lt;br /&gt;
     # make reads `makefile&amp;#039; before `Makefile&amp;#039;&lt;br /&gt;
     if [ -f makefile ]; then&lt;br /&gt;
         mdef=makefile&lt;br /&gt;
     elif [ -f Makefile ]; then&lt;br /&gt;
         mdef=Makefile&lt;br /&gt;
     else&lt;br /&gt;
         mdef=*.mk               # local convention&lt;br /&gt;
     fi&lt;br /&gt;
 &lt;br /&gt;
     # before we scan for targets, see if a makefile name was specified&lt;br /&gt;
     # with -f&lt;br /&gt;
     for (( i=0; i &amp;amp;lt; ${#COMP_WORDS[@]}; i++ )); do&lt;br /&gt;
         if [[ ${COMP_WORDS[i]} == -*f ]]; then&lt;br /&gt;
             eval makef=${COMP_WORDS[i+1]}       # eval for tilde expansion&lt;br /&gt;
             break&lt;br /&gt;
         fi&lt;br /&gt;
     done&lt;br /&gt;
 &lt;br /&gt;
         [ -z &amp;quot;$makef&amp;quot; ] &amp;amp;amp;&amp;amp;amp; makef=$mdef&lt;br /&gt;
 &lt;br /&gt;
     # if we have a partial word to complete, restrict completions to&lt;br /&gt;
     # matches of that word&lt;br /&gt;
     if [ -n &amp;quot;$2&amp;quot; ]; then gcmd=&amp;#039;grep &amp;quot;^$2&amp;quot;&amp;#039; ; else gcmd=cat ; fi&lt;br /&gt;
 &lt;br /&gt;
     # if we don&amp;#039;t want to use *.mk, we can take out the cat and use&lt;br /&gt;
     # test -f $makef and input redirection&lt;br /&gt;
     COMPREPLY=( $(cat $makef 2&amp;amp;gt;/dev/null | awk &amp;#039;BEGIN {FS=&amp;quot;:&amp;quot;} /^[^.#   ][^=]*:/ {print $1}&amp;#039; | tr -s &amp;#039; &amp;#039; &amp;#039;\012&amp;#039; | sort -u | eval $gcmd ) )&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 complete -F _make_targets -X &amp;#039;+($*|*.[cho])&amp;#039; make gmake pmake&lt;br /&gt;
 &lt;br /&gt;
 _configure_func ()&lt;br /&gt;
 {&lt;br /&gt;
     case &amp;quot;$2&amp;quot; in&lt;br /&gt;
         -*)     ;;&lt;br /&gt;
         *)      return ;;&lt;br /&gt;
     esac&lt;br /&gt;
 &lt;br /&gt;
     case &amp;quot;$1&amp;quot; in&lt;br /&gt;
         \~*)    eval cmd=$1 ;;&lt;br /&gt;
         *)      cmd=&amp;quot;$1&amp;quot; ;;&lt;br /&gt;
     esac&lt;br /&gt;
 &lt;br /&gt;
     COMPREPLY=( $(&amp;quot;$cmd&amp;quot; --help | awk &amp;#039;{if ($1 ~ /--.*/) print $1}&amp;#039; | grep ^&amp;quot;$2&amp;quot; | sort -u) )&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 complete -F _configure_func configure&lt;br /&gt;
 &lt;br /&gt;
 # cvs(1) completion&lt;br /&gt;
 _cvs ()&lt;br /&gt;
 {&lt;br /&gt;
     local cur prev&lt;br /&gt;
     COMPREPLY=()&lt;br /&gt;
     cur=${COMP_WORDS[COMP_CWORD]}&lt;br /&gt;
     prev=${COMP_WORDS[COMP_CWORD-1]}&lt;br /&gt;
 &lt;br /&gt;
     if [ $COMP_CWORD -eq 1 ] || [ &amp;quot;${prev:0:1}&amp;quot; = &amp;quot;-&amp;quot; ]; then&lt;br /&gt;
 	COMPREPLY=( $( compgen -W &amp;#039;add admin checkout commit diff \&lt;br /&gt;
 	export history import log rdiff release remove rtag status \&lt;br /&gt;
 	tag update&amp;#039; $cur ))&lt;br /&gt;
     else&lt;br /&gt;
 	COMPREPLY=( $( compgen -f $cur ))&lt;br /&gt;
     fi&lt;br /&gt;
     return 0&lt;br /&gt;
 }&lt;br /&gt;
 complete -F _cvs cvs&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 _killall ()&lt;br /&gt;
 {&lt;br /&gt;
     local cur prev&lt;br /&gt;
     COMPREPLY=()&lt;br /&gt;
     cur=${COMP_WORDS[COMP_CWORD]}&lt;br /&gt;
 &lt;br /&gt;
     # get a list of processes (the first sed evaluation&lt;br /&gt;
     # takes care of swapped out processes, the second&lt;br /&gt;
     # takes care of getting the basename of the process)&lt;br /&gt;
     COMPREPLY=( $( /usr/bin/ps -u $USER -o comm  | \&lt;br /&gt;
         sed -e &amp;#039;1,1d&amp;#039; -e &amp;#039;s#[]\[]##g&amp;#039; -e &amp;#039;s#^.*/##&amp;#039;| \&lt;br /&gt;
         awk &amp;#039;{if ($0 ~ /^&amp;#039;$cur&amp;#039;/) print $0}&amp;#039; ))&lt;br /&gt;
 &lt;br /&gt;
     return 0&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 complete -F _killall killall killps&lt;br /&gt;
 &lt;br /&gt;
 # Local Variables:&lt;br /&gt;
 # mode:shell-script&lt;br /&gt;
 # sh-shell:bash&lt;br /&gt;
 # End:&lt;/div&gt;</summary>
		<author><name>imported&gt;Unknown</name></author>
	</entry>
</feed>