如何缩短终端上显示的当前目录路径?

如何缩短终端上显示的当前目录路径?

如果我位于深层目录中,可以说:

~/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

您需要修改PS1shell 启动文件(可能.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

这对于所有shshell 都是可移植的。

分配给PS1您的 shell 启动文件之一:

PS1='${PWD##*/} $ '

提示将类似于

dir $

其中dir是当前目录的基本名称。

$PWD变量包含当前目录路径,并将删除该路径中${PWD##*/}直到并包括最后一个的所有内容。/

单引号可防止 shell 形式在赋值时评估变量替换($PS1每次显示提示时都会评估 的值)。

PS1不应导出该变量,因为它仅由当前 shell 使用。

答案4

zsh提示字符串中,%~扩展至当前工作目录,例如$HOME更改为~/home/userto ~userlike 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$

相关内容