有没有办法在使用带有符号链接目录的 cd 时显示尾随的“/”?

有没有办法在使用带有符号链接目录的 cd 时显示尾随的“/”?

我使用 bash shell 并使用了大量软链接。我观察到一个很小但令人讨厌的行为,那就是我需要按两次 tab 键才能完成目录软链接的名称。例如

$ mkdir dir1
$ ln -s dir1 link1

使用自动完成功能,输入“cd d”会产生“cd dir1/”,但输入“cd l”会产生“cd link1”,而我真正想要的是它产生“cd link1/”

答案1

我认为你正在寻找阅读行变量mark-directories,和mark-symlinked-directories。只需将以下内容添加到您的~/.inputrc文件中,然后使用重新加载即可CtrlxCtrlr

set mark-directories on
set mark-symlinked-directories on

为了确保正常CtrlxCtrlr工作,您还应该在 中包含以下内容~/.inputrc。(请参阅这个问题

"\C-x\C-r": re-read-init-file

顺便说一句,如果你想列出你的当前设置阅读行变量,请使用以下命令:(另请参阅man bash以了解更多详细信息。)

bind -v

答案2

此处的 Tab 起着自动完成的作用,它所做的就是搜索相关文件和目录来完成您的命令。

据我所知,在 bash 中你不能告诉它做其他事情,你可以尝试使用其他 shell,也许他们可以。

然而实际上并没有区别。因为这两个命令都会带你进入同一个目录......

更新

根据这里您可以使用它来进入父目录:

以下是改变给定符号链接的目标的方法:

cd -P .

下面是它的工作原理

user@host:~/tmp$ ls 
@a b
user@host:~/tmp$ file a
a: symbolic link to `b/c'
user@host:~/tmp$ cd a
user@host:~/tmp/a$ cd .
user@host:~/tmp/a$ cd -P .a
user@host:~/tmp/b/c$

您可以将其别名为

cdl='cd -P'

来自 bash 手册:

-P选项表示使用物理目录结构而不是遵循符号链接

相关内容