web-dev-qa-db-fra.com

Comment faire en sorte que la complétion de l'onglet ajoute une barre oblique pour les liens symboliques du répertoire?

Mon répertoire _~/Documents_ est un lien symbolique:

_nathan@nathan-desktop:~$ stat Documents
  File: Documents -> /mnt/nathan/extended/Documents
_

Si je veux cd dans le répertoire, je peux taper:

cdspaceDoctab

... et la complétion de l'onglet ajoutera uments à la fin de _cd Doc_ comme prévu. Cependant, not ajoute un _/_ final, même si le lien symbolique pointe vers un répertoire.

Y a-t-il un moyen de faire ça à Bash?

3
Nathan Osman

Activez l'option mark-symlinked-directories pour READLINE . Il y a plusieurs façons de le faire:

  1. Personnalisez votre readline en plaçant des commandes dans un fichier .inputrc:

    • Créez ou éditez ~/.inputrc et ajoutez ces lignes:

      $include /etc/inputrc
      set mark-symlinked-directories on
      
    • Connexion/Déconnexion ou appuyez sur ctrl+x et ctrl+r pour recharger les paramètres.

  2. Personnalisez votre readline en insérant des commandes dans le fichier .bashrc (ou dans le fichier .profile):

    • Éditez ~/.bashrc et ajoutez cette ligne:

      bind 'set mark-symlinked-directories on'
      
    • Log-in/Log-out ou source le fichier:

      source ~/.bashrc
      
  3. Personnalisez la readline pour tous les utilisateurs en créant un fichier .sh dans le répertoire /etc/profile.d:

    • Créez un fichier /etc/profile.d/mark-symlinked-directories.sh qui devrait ressembler à ceci:

      #!/bin/sh
      bind 'set mark-symlinked-directories on'
      

      Les autorisations exécutables sur ce fichier ne sont pas nécessaires.

    • Connexion/Déconnexion. C'est ça.

Lectures complémentaires:


Une façon simple que j'ai trouvée est double tab pour l'achèvement:

cdspaceDoctabtab

La première tab ajoutera uments, le second ajoutera / et le troisième imprimera la liste des répertoires contenus.

5
pa4080