研究了两天的FreeBSD,总是感觉输入提示符那里怪怪的,而且默认的提示符还不带显示目录的功能,老是用PWD特不方便,于是乎呢。想到了修改提示符。当然了。首先要说明一下本文的适合范围啦,本人的FreeBSD系统采用的是CSH-SHELL所以只针对CSH-SHELL进行讲解。。其他的SHELL请参考其他说明。
如果不了解你的操作系统用的是什么SHELL的话,用#echo $shell来查看SHEll的版本。要是版本显示的是/bin/csh的话,就接着往下看吧。
要修改提示符先要找到关于CSH-SHELL的配置文件,这个配置文件是[#/.cshrc],找到这个文件后用编辑器打开即可(Vi的编辑器打开语句是:#vi /.cshrc如果你的机器上没有Vi编辑器的话,请选用其他的文本编辑器,本文就不再详细介绍了)
找到如下语句:set prompt = "任意匹配字符"
如:set prompt = " [email]abc@hotmail.com[/email] # "
注:由于篇幅的关系下面的内容将不再使用关键字颜色加亮显示。
找到上面这个语句基本就可以大功告成了,正面是有关于prompt的参数。
! 和%h一样
%B 开始粗体模式
%b 结束粗体模式
%c 当前工作目录名称的最后部分
%c2,%c3等等 当前工作目录名称的最后两个、三个(等等)组成部分
%C 跟%c类似,但是使用长形式的目录名称
%d 本周的当天
%D 今天是当月中的第几天
%h 当前命令的历史记录编号
%l shell的当前控制终端
%L 清除从提示符末尾到下一行的所有内容
%m 机器的主机名称
%M 机器的完全符合规范的域名
%n 用户名
%p 用精确格式(包括秒)显示的12小时制时间
%P 用精确格式(包括秒)显示的24小时制时间
%S 开始标准输出格式
%s 结束标准输出格式
%t 以12小时制格式显示时间
%T 以24小时制格式显示时间
%U 开始下划线模式
%u 结束下划线模式
%w 当前月的名称
%W 当前月的序数
%y 以2位格式表示的年
%Y 以4位格式表示的年
%% %字符
%! 跟%h相同
%@ 跟%t相同
$# 扩展到>供常规使用,如果用户正以root身份运行的话,就扩展到#
%/ 当前工作目录的完整名称
%- 以短格式表示的当前工作目录
^C 跟C匹配的控制字符:例如^G代表Ctrl+G
\a 使tcsh在任何时候显示提示符时嘟嘟响
\e 终止的escape符0x1B
\f 终止的换页符
\n 在这个位置开始一个新行
\r 回车符
\t Tab制表符
\v 垂直制表符
\nnn 由八进制数字nnn所指定的字符
solaris 更改系统提示符
这得视你的 shell 而定。有些 shell 很容易,有些 shell 很难,有些根
本办不到。
C Shell (csh):
将以下的东西加入你的 .cshrc 里。
alias setprompt 'set prompt="${cwd}% "'
setprompt # to set the initial prompt
alias cd 'chdir \!* && setprompt'
假如你有用 pushd 与 popd, 把底下的东西也加进去。
alias pushd 'pushd \!* && setprompt'
alias popd 'popd \!* && setprompt'
若你的 C shell 没有 $cwd 这个变数,那就得用 `pwd` 代替之。
若你想要的只是 prompt 里有目前所在目录的最后一个成分
("mail%" 而?nbsp;"/usr/spool/mail%") 则用
alias setprompt 'set prompt="$cwd:t% "'
有些旧版的 csh 将 && 和 || 的意义弄反了。你可以试试看:
false && echo bug
若结果是印出 "bug",那就把 && 和 || 对调,或找一个没有这种
bug 的 csh 来用。
Bourn Shell (sh):
如果你有较新版的 Bourn Shell(SVR2 或更新的版本),那么你就可
以用一个 shell function 来造你自己的命令,譬如 "xcd":
xcd() { cd $* ; PS1="`pwd` $ ";}
如果你的 Bourn Shell 是比较旧的版本,也是可以做到,但是方法比
较复杂。这里提供一个方法。把以下的内容加入你的 .profile:
LOGIN_SHELL=$$ export LOGIN_SHELL
CMDFILE=/tmp/cd.$$ export CMDFILE
# 16 is SIGURG, pick a signal that's not likely to be
used
PROMPTSIG=16 export PROMPTSIG
trap '. $CMDFILE' $PROMPTSIG
然后把以下的部份写成一个可执行的 script(不需要缩排),名字就
叫做 "xcd",放在你的 PATH 中
: xcd directory - change directory and set prompt
: by signalling the login shell to read a command file
cat >${CMDFILE?"not set"} < cd $1
PS1="\`pwd\`$"
EOF
kill -${PROMPTSIG?"not set"} ${LOGIN_SHELL?"not set"}
那么,现在就可已用 "xcd /some/dir" 来改变工作目录了。
Korn Shell (ksh):
把下面这行加入你的 .profile 中:
PS1='$PWD $ '
如果你只想显示最后一个部分,那么就用
PS1='${PWD##*/} $ '
T C shell (tcsh)
Tcsh 是常用的 csh 加强版,增加了一些内建变数(及许多其他的功
能):
%~ the current directory, using ~ for $HOME
%/ the full pathname of the current directory
%c or %. the trailing component of the current directory
所以你可以直接用
set prompt='%~'
BASH (FSF's "Bourne Again Shell")
$PS1 中的 \w 表示工作目录的完整路径(以 ~ 表示 $HOME);\W 则
是表示工作目录的最后一个部份。所以,只要把前面所提有关 sh 和
ksh 的方法做以下的修改
PS1='\w $ '
或
PS1='\W $ '
让FreeBSD终端也显示彩色:Csh在.cshrc文件中添加 alias ls ls -G
参考:http://blog.sina.com.cn/s/blog_60c53e470100e4ec.html
http://www.dedecms.com/knowledge/servers/linux-bsd/2012/0819/8375.html
http://hi.baidu.com/wjmckluzdpcfiye/item/8f65b95b61ea29444fff2068