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.


la source

Réponses:

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

Depuis une session bash, entrez help read|less

glenn jackman
la source
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