如何为目录符号链接添加制表符完成附加斜杠?

Nat*_*man 8 command-line bash auto-completion

我的~/Documents目录是一个符号链接:

nathan@nathan-desktop:~$ stat Documents
  File: Documents -> /mnt/nathan/extended/Documents
Run Code Online (Sandbox Code Playgroud)

如果我想cd进入目录,我可以输入:

c d space D o c tab

...并且选项卡完成将按预期附加uments到末尾cd Doc。但是,它并没有附加一个尾随/,即使符号链接指向一个目录。

有没有办法让 Bash 做到这一点?

pa4*_*080 10

启用READLINEmark-symlinked-directories选项。有几种方法可以做到这一点:

  1. 通过将命令放入文件来自定义您的readline.inputrc

    • 创建或编辑~/.inputrc并添加这些行:

      $include /etc/inputrc
      set mark-symlinked-directories on
      
      Run Code Online (Sandbox Code Playgroud)
    • 登录/注销或按ctrl+xctrl+r重新加载设置。

  2. 通过将命令放入文件(或文件中)来自定义您的readline.bashrc.profile

  3. 通过在目录中创建文件来为所有用户自定义readline.sh/etc/profile.d

    • 创建一个文件,它应该如下所示:/etc/profile.d/mark-symlinked-directories.sh

      #!/bin/sh
      bind 'set mark-symlinked-directories on'
      
      Run Code Online (Sandbox Code Playgroud)

      不需要对此文件的可执行权限。

    • 登录/注销。就是这样。

进一步阅读:


我发现的一种简单方法是tab完成双倍:

c d space D o c tab tab

第一个tab将追加uments,第二个将追加/,第三个将打印包含的目录列表。