Utilisez la fonction de chemin de saisie semi-automatique du terminal pour l'entrée dans un script shell


8

Je veux créer un script qui: (1) Obtient un chemin d'accès donnant à l'utilisateur la possibilité d'utiliser tab pour la saisie semi-automatique, puis (2) obtient un nom de fichier de l'utilisateur, puis (3) crée un fichier sur ce chemin avec l'extension. SMS.

Ma question est: comment faire 1.? Comment dire à bash de demander une entrée qui est un chemin "autocompletable", de préférence avec une partie du chemin (disons ~ / x /) déjà remplie par défaut?

Remarque: les chemins incluront presque toujours des espaces.

Réponses:


15
read -p "enter a directory: " -i "$HOME/x/" -e path

Depuis une session bash, entrez help read|less


Merci! Sur osx, j'obtiens cette erreur: "-bash: read: -i: option invalide read: usage: read [-ers] [-u fd] [-t timeout] [-p prompt] [-a array] [-n nchars] [-d delim] [nom ...] "Est-ce une chose osx?

Cela fonctionne dans Debian, où je prévois de l'utiliser. :)

vous avez probablement une ancienne version de bash sur votre mac:echo $BASH_VERSION
glenn jackman

2
Le -idrapeau a été ajouté en bash4.0. help '[r]ead'pour obtenir de l'aide readuniquement. Notez que bien qu'il read -epuisse se terminer à l'intérieur ~, il ne sera pas développé.
Stéphane Chazelas

2
Cela signifie que vous obtiendrez le tilde littéral dans la variable $ path, ce qui peut être difficile à gérer. Avec le recul, utilisez-i "$HOME/x/"
glenn jackman
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.