sample-bashrc.html
来自「BASH Shell 编程 经典教程 《高级SHELL脚本编程》中文版」· HTML 代码 · 共 835 行 · 第 1/2 页
HTML
835 行
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><HTML><HEAD><TITLE>一个简单的.bashrc文件</TITLE><METANAME="GENERATOR"CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINKREL="HOME"TITLE="高级Bash脚本编程指南"HREF="index.html"><LINKREL="PREVIOUS"TITLE="历史命令"HREF="histcommands.html"><LINKREL="NEXT"TITLE="将DOS批处理文件转换为Shell脚本"HREF="dosbatch.html"></HEAD><BODYCLASS="APPENDIX"BGCOLOR="#FFFFFF"TEXT="#000000"LINK="#0000FF"VLINK="#840084"ALINK="#0000FF"><DIVCLASS="NAVHEADER"><TABLESUMMARY="Header navigation table"WIDTH="100%"BORDER="0"CELLPADDING="0"CELLSPACING="0"><TR><THCOLSPAN="3"ALIGN="center">高级Bash脚本编程指南: 一本深入学习shell脚本艺术的书籍</TH></TR><TR><TDWIDTH="10%"ALIGN="left"VALIGN="bottom"><AHREF="histcommands.html"ACCESSKEY="P">前一页</A></TD><TDWIDTH="80%"ALIGN="center"VALIGN="bottom"></TD><TDWIDTH="10%"ALIGN="right"VALIGN="bottom"><AHREF="dosbatch.html"ACCESSKEY="N">下一页</A></TD></TR></TABLE><HRALIGN="LEFT"WIDTH="100%"></DIV><DIVCLASS="APPENDIX"><H1><ANAME="SAMPLE-BASHRC"></A>Appendix K. 一个简单的<TTCLASS="FILENAME">.bashrc</TT>文件</H1><P><TTCLASS="FILENAME">~/.bashrc</TT>文件决定了交互shell的行为. 好好的了解这个文件, 将会使你更加了解Bash. </P><P><AHREF="mailto:emmanuel.rouat@wanadoo.fr"TARGET="_top">Emmanuel Rouat</A>捐献了下边这个注释非常详细的<TTCLASS="FILENAME">.bashrc</TT>文件, 这个文件是为Linux系统编写的. 他希望读者能够给他一些回馈. </P><P>仔细的学习这个文件, 直到你可以自由重用其中的代码片断和函数, 并把它们用到你自己的<TTCLASS="FILENAME">.bashrc</TT>文件中, 甚至可以放到你的脚本中. </P><DIVCLASS="EXAMPLE"><HR><ANAME="BASHRC"></A><P><B>例子 K-1. <TTCLASS="FILENAME">.bashrc</TT>文件样本</B></P><TABLEBORDER="0"BGCOLOR="#E0E0E0"WIDTH="100%"><TR><TD><FONTCOLOR="#000000"><PRECLASS="PROGRAMLISTING"> 1 #=============================================================== 2 # 3 # 个人的$HOME/.bashrc文件, 基于bash-2.05a(或更高版本) 4 # 5 # 最后更新日期: 星期2 4月15 20:32:34 CEST 2003 6 # 7 # 这个文件(一般情况下)被只会被交互式shell读取. 8 # 这里可以定义你的别名, 函数, 9 # 和其他的一些交互式特征, 比如你的提示符. 10 # 11 # 这个文件(开始时)是为Solaris设计的, 12 # 但是基于Redhat的默认.bashrc文件 13 # --> 为Linux修改. 14 # 你在这里看到的大部分代码都是从网上找来的 15 # (即internet). 16 # 这个bashrc文件有点挤 - 17 # 记住, 它仅仅是个例子而已. 按照你自己的需求进行裁减. 18 # 19 # 20 #=============================================================== 21 22 # --> 注释由HOWTO的作者添加. 23 # --> 然后又被ER编辑了一下 :-) 24 25 #-------------------------------------- 26 # 如果有源代码的全局定义, 请在此处定义. 27 #-------------------------------------- 28 29 if [ -f /etc/bashrc ]; then 30 . /etc/bashrc # --> 读取/etc/bashrc, 如果存在的话. 31 fi 32 33 #------------------------------------------------------------- 34 # $DISPLAY的自动设置 (如果还没设置的话) 35 # 这用于linux - 可能运行的结果不同.... 36 # 问题是不同的终端种类对于'who am i'来说, 37 # 将会给出不同的答案...... 38 # 我还没发现一种'通用'方法 39 #------------------------------------------------------------- 40 41 function get_xserver () 42 { 43 case $TERM in 44 xterm ) 45 XSERVER=$(who am i | awk '{print $NF}' | tr -d ')''(' ) 46 # Ane-Pieter Wieringa建议使用下面这种方式: 47 # I_AM=$(who am i) 48 # SERVER=${I_AM#*(} 49 # SERVER=${SERVER%*)} 50 51 XSERVER=${XSERVER%%:*} 52 ;; 53 aterm | rxvt) 54 # 找出一些运行在这里的代码..... 55 ;; 56 esac 57 } 58 59 if [ -z ${DISPLAY:=""} ]; then 60 get_xserver 61 if [[ -z ${XSERVER} || ${XSERVER} == $(hostname) || ${XSERVER} == "unix" ]]; then 62 DISPLAY=":0.0" # 在本地主机上显示 63 else 64 DISPLAY=${XSERVER}:0.0 # 在远端主机上显示 65 fi 66 fi 67 68 export DISPLAY 69 70 #---------- 71 # 一些设置 72 #---------- 73 74 ulimit -S -c 0 # 不需要任何coredump 75 set -o notify 76 set -o noclobber 77 set -o ignoreeof 78 set -o nounset 79 #set -o xtrace # 对于调试来说非常有用 80 81 # 使能选项: 82 shopt -s cdspell 83 shopt -s cdable_vars 84 shopt -s checkhash 85 shopt -s checkwinsize 86 shopt -s mailwarn 87 shopt -s sourcepath 88 shopt -s no_empty_cmd_completion # 仅限于bash>=2.04 89 shopt -s cmdhist 90 shopt -s histappend histreedit histverify 91 shopt -s extglob # 对于complete命令(按情况补全)来说是必要的 92 93 # 禁用选项: 94 shopt -u mailwarn 95 unset MAILCHECK # 当有邮件到达时, 我不希望我的shell提示我 96 97 98 export TIMEFORMAT=$'\nreal %3R\tuser %3U\tsys %3S\tpcpu %P\n' 99 export HISTIGNORE="&:bg:fg:ll:h"100 export HOSTFILE=$HOME/.hosts # 将远端主机的列表放入~/.hosts101 102 103 104 #-----------------------105 # 问候, 问侯报文等等...106 #-----------------------107 108 # 先定义一些颜色:109 red='\e[0;31m'110 RED='\e[1;31m'111 blue='\e[0;34m'112 BLUE='\e[1;34m'113 cyan='\e[0;36m'114 CYAN='\e[1;36m'115 NC='\e[0m' # 没有颜色116 # --> 很好. 与使用"ansi.sys"的DOS效果相同. 117 118 # 在黑色背景下看起来非常好.....119 echo -e "${CYAN}This is BASH ${RED}${BASH_VERSION%.*}${CYAN} - DISPLAY on ${RED}$DISPLAY${NC}\n"120 date121 if [ -x /usr/games/fortune ]; then122 /usr/games/fortune -s # 让我们的每天充满乐趣.... :-)123 fi124 125 function _exit() # 在退出shell时运行的函数126 {127 echo -e "${RED}Hasta la vista, baby${NC}"128 }129 trap _exit EXIT130 131 #---------------132 # Shell提示符133 #---------------134 135 if [[ "${DISPLAY#$HOST}" != ":0.0" && "${DISPLAY}" != ":0" ]]; then 136 HILIT=${red} # 远端主机: 提示符为红137 else138 HILIT=${cyan} # 本地主机: 提示符为青色139 fi140 141 # --> 下面提示符函数中\W和\w的替换实例, 142 #+ --> 用来获得完整路径名的显示. 143 144 function fastprompt()145 {146 unset PROMPT_COMMAND147 case $TERM in148 *term | rxvt )149 PS1="${HILIT}[\h]$NC \W > \[\033]0;\${TERM} [\u@\h] \w\007\]" ;;150 linux )151 PS1="${HILIT}[\h]$NC \W > " ;;152 *)153 PS1="[\h] \W > " ;;154 esac155 }156 157 function powerprompt()158 {159 _powerprompt()160 {161 LOAD=$(uptime|sed -e "s/.*: \([^,]*\).*/\1/" -e "s/ //g")162 }163 164 PROMPT_COMMAND=_powerprompt165 case $TERM in166 *term | rxvt )167 PS1="${HILIT}[\A \$LOAD]$NC\n[\h \#] \W > \[\033]0;\${TERM} [\u@\h] \w\007\]" ;;168 linux )169 PS1="${HILIT}[\A - \$LOAD]$NC\n[\h \#] \w > " ;;170 * )171 PS1="[\A - \$LOAD]\n[\h \#] \w > " ;;172 esac173 }174 175 powerprompt # 这是默认提示符 - 可能比较慢176 # 如果很慢的话, 可以使用fastprompt来代替....177 178 #===============================================================179 #180 # 别名和函数181 #182 # 事实上, 这里定义的一些函数非常大183 # (比如'lowercase'), 但是我的机器是512M内存, 所以 .....184 # 如果你想让这个文件小一点, 185 # 可以将这些函数放到脚本中. 186 #187 # 其中的许多函数来自于bash-2.04188 # 中的例子. 189 #190 #===============================================================191 192 #-------------------193 # 个人的别名194 #-------------------195 196 alias rm='rm -i'197 alias cp='cp -i'198 alias mv='mv -i'199 # -> 防止偶然的文件误操作. 200 alias mkdir='mkdir -p'201 202 alias h='history'203 alias j='jobs -l'204 alias r='rlogin'205 alias which='type -all'206 alias ..='cd ..'207 alias path='echo -e ${PATH//:/\\n}'208 alias print='/usr/bin/lp -o nobanner -d $LPDEST' # 假设LPDEST被定义209 alias pjet='enscript -h -G -fCourier9 -d $LPDEST' # 使用enscript的漂亮的打印210 alias background='xv -root -quit -max -rmode 5' # 将一张图片作为背景211 alias du='du -kh'212 alias df='df -kTh'213 214 # 'ls'家族 (假定使用GNU ls)215 alias la='ls -Al' # 显示隐藏文件216 alias ls='ls -hF --color' # 为识别的文件类型添加颜色217 alias lx='ls -lXB' # 按扩展名排序218 alias lk='ls -lSr' # 按尺寸排序219 alias lc='ls -lcr' # 按修改时间排序220 alias lu='ls -lur' # 按访问时间排序221 alias lr='ls -lR' # 递归ls222 alias lt='ls -ltr' # 按日期排序223 alias lm='ls -al |more' # 管道给'more'224 alias tree='tree -Csu' # 'ls'的另一种好方法225 226 # 裁减'less'227 alias more='less'228 export PAGER=less229 export LESSCHARSET='latin1'230 export LESSOPEN='|/usr/bin/lesspipe.sh %s 2>&-' # 如果lesspipe.sh存在, 就用这个231 export LESS='-i -N -w -z-4 -g -e -M -X -F -R -P%t?f%f \232 :stdin .?pb%pb\%:?lbLine %lb:?bbByte %bb:-...'233 234 # 拼写错误 - 纯粹个人喜好 :-)235 alias xs='cd'236 alias vf='cd'237 alias moer='more'238 alias moew='more'239 alias kk='ll'240 241 #----------------242 # 一些有趣东西243 #----------------244 245 function xtitle ()246 {247 case "$TERM" in248 *term | rxvt)249 echo -n -e "\033]0;$*\007" ;;250 *) 251 ;;252 esac253 }254 255 # 别名...256 alias top='xtitle Processes on $HOST && top'257 alias make='xtitle Making $(basename $PWD) ; make'258 alias ncftp="xtitle ncFTP ; ncftp"259 260 # .. 和函数261 function man ()262 {263 for i ; do264 xtitle The $(basename $1|tr -d .[:digit:]) manual265 command man -F -a "$i"266 done267 }268 269 function ll(){ ls -l "$@"| egrep "^d" ; ls -lXB "$@" 2>&-| egrep -v "^d|total "; }270 function te() # xemacs/gnuserv的包装器271 {272 if [ "$(gnuclient -batch -eval t 2>&-)" == "t" ]; then273 gnuclient -q "$@";274 else275 ( xemacs "$@" &);276 fi277 }278 279 #---------------------------280 # 与文件和字符串相关的函数:281 #---------------------------282 283 # 使用名字模式来查找文件:284 function ff() { find . -type f -iname '*'$*'*' -ls ; }285 # 使用pattern $1和Execute $2来查找文件: 286 function fe() { find . -type f -iname '*'$1'*' -exec "${2:-file}" {} \; ; }287 # 在一系列文件中找到模式, 并高亮288 function fstr()289 {290 OPTIND=1291 local case=""292 local usage="fstr: find string in files.293 Usage: fstr [-i] \"pattern\" [\"filename pattern\"] "294 while getopts :it opt
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?