如果我位于深层目录中,可以说:
~/Desktop/Dropbox/School/2017/C/A3/
然后当我打开终端时,它说
bob@bob-ubuntu:~/Desktop/Dropbox/School/2017/C/A3/$
然后我写下我的命令。这很长,我在终端中写入的每一行都会进入下一行。我想知道是否有办法让它只显示我当前的目录。我希望它显示:
bob@bob-ubuntu: A3/$
这样就很清楚了,我总是可以pwd
看到我的整个目录。我只是不希望整个目录在终端中可见,因为它占用了太多空间。
答案1
从 bash 4 开始,缩短命令行中的目录深度是通过在文件PROMPT_DIRTRIM
中使用来完成的.bashrc
。请记住重新打开您的终端。
PROMPT_DIRTRIM=1
请参阅bash手册了解更多信息。
例子
bob@bob-ubuntu:~/Desktop/Dropbox/School/2017/C/A3/$
将被修剪为
bob@bob-ubuntu:.../A3/$
答案2
您需要修改PS1
shell 启动文件(可能.bashrc
)。
如果它已经存在,它的设置将包含\w
,这就是您的工作目录。将其更改为\W
(大写)。文件中的行bashrc
如下所示:
if [ "$color_prompt" = yes ]; then
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\W\[\033[00m\]\$ '
注销并再次登录,或者执行以下操作:
. .bashrc
或者(如果您在其他目录中,则需要添加此前缀“~/”)
source ~/.bashrc
(或者无论你的文件是什么)。
如果不存在,请添加以下内容:
PS1='\u@\h: \W:\$'
到.bashrc
或其他什么。查看PS1
手册bash
页以获得更多想法。
当心;bash
可以使用多个多个初始化文件,例如.bashrc
和.bash_profile
;它可能是PS1
在系统范围内设置的。但您可以在自己的文件之一中覆盖它。
答案3
这对于所有sh
shell 都是可移植的。
分配给PS1
您的 shell 启动文件之一:
PS1='${PWD##*/} $ '
提示将类似于
dir $
其中dir
是当前目录的基本名称。
该$PWD
变量包含当前目录路径,并将删除该路径中${PWD##*/}
直到并包括最后一个的所有内容。/
单引号可防止 shell 形式在赋值时评估变量替换($PS1
每次显示提示时都会评估 的值)。
PS1
不应导出该变量,因为它仅由当前 shell 使用。
答案4
在zsh
提示字符串中,%~
扩展至当前工作目录,例如$HOME
更改为~
或/home/user
to ~user
like in tcsh
,但您可以将其更改为%2~
将其限制为该路径的最后 2 个组成部分,例如:
$ PS1='%n@%m:%2~$ '
me@here:~/bin$ cd /usr/local/share/man/man1
me@here:man/man1$
或者您可以使用%20<…<%~%<<
来确保 的扩展%~
不超过 20 列,并显示它…
以指示截断(如果有):
me@here:man/man1$ PS1='%n@%m:%20<…<%~%<<$ '
me@here:…ocal/share/man/man1$