在我的.bashrc
中,我得到了这个:
PS1="[\w $]"
每当我cd
到一个深层次的目录时,shell提示几乎占据整条线,(终端大小:80 * 24),如:
[/level_a_dir/level_b_dir/level_c_dir/level_d_dir/level_e_dir $]
问题
如果pwd
长于20个字符,我想缩短提示,只需保留最后一个目录,如:
[.../level_e_dir $]
#[/level_a_dir/level_b_dir/level_c_dir/level_d_dir] is replaced with ...
怎么做?
答案 0 :(得分:2)
我是按照以下方式完成的 首先,您必须创建一个shell脚本truncate.sh:
#!/bin/bash
MAXLEN=20
REPLACEMENT="..."
# replace /home/user by ~
TPWD=$(echo ${PWD} | sed 's#'${HOME}'#~#;')
# truncate
if [ ${#TPWD} -gt ${MAXLEN} ] ; then
PWDOFFSET=$(( ${#TPWD} - ${MAXLEN} ))
TPWD="${REPLACEMENT}${TPWD:${PWDOFFSET}:${MAXLEN}}"
fi
echo ${TPWD}
接下来你必须更换你的PS1:
export PS1="[\$(truncate.sh) ] "
答案 1 :(得分:0)
如果你真的想要只 20个字符(或更少),那么我能想到的最简单的是:
export PS1='[${PWD:$((${#PWD}-20))} $]'
如果你没有足够的空间或考虑有两行提示(我个人讨厌的话,我会放弃括号: - )