Verwenden Sie die automatische Vervollständigungspfadfunktion des Terminals für die Eingabe in ein Shell-Skript

8

Ich möchte ein Skript erstellen, das: (1) einen Pfad abruft, der dem Benutzer die Möglichkeit gibt, die Registerkarte zur automatischen Vervollständigung zu verwenden, dann (2) einen Dateinamen vom Benutzer erhält und dann (3) eine Datei mit der Erweiterung an diesem Pfad erstellt. TXT.

Meine Frage ist: Wie mache ich 1.? Wie kann ich bash anweisen, nach Eingaben zu fragen, bei denen es sich um einen "automatisch vervollständigbaren" Pfad handelt, vorzugsweise mit einem Teil des Pfads (z. B. ~ / x /), der standardmäßig bereits ausgefüllt ist?

Hinweis: Die Pfade enthalten fast immer Leerzeichen.


quelle

Antworten:

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

Geben Sie in einer Bash-Sitzung ein help read|less

Glenn Jackman
quelle
Vielen Dank! Unter osx erhalte ich folgende Fehlermeldung: "-bash: read: -i: ungültige Option read: usage: read [-ers] [-u fd] [-t timeout] [-p prompt] [-a array] [-n nchars] [-d delim] [name ...] "Ist das eine osx-Sache?
Es funktioniert in Debian, wo ich es verwenden möchte. :)
Sie haben wahrscheinlich eine ältere Version von Bash auf Ihrem Mac:echo $BASH_VERSION
Glenn Jackman
2
Die -iFlagge wurde in bash4.0 hinzugefügt . help '[r]ead'um nur die Hilfe zu bekommen read. Beachten Sie, dass read -ees zwar innen abgeschlossen werden kann ~, aber nicht erweitert wird.
Stéphane Chazelas
2
Dies bedeutet, dass Sie die Literal-Tilde in der Variablen $ path erhalten, was möglicherweise schwierig zu handhaben ist. Im Nachhinein verwenden Sie-i "$HOME/x/"
Glenn Jackman