Erstellen eines Alias ​​für `tree -P '* name *'`

476
Bentley4

Ich erstelle aliasmit dem treeProgramm einen Befehl für den folgenden Befehl :

tree -P '*name*' 

Das funktioniert genau so, wie ich es will. Wenn ich jedoch einen Alias ​​für diesen Befehl erstelle, verhält sich der Befehl anders: Er druckt nur Verzeichnisse und keine Dateien.

Im .bash_aliases

function tree_seek { tree -P '*$1*'  }  alias treeseek='tree_seek' 

Warum macht der Alias treeseek namenicht dasselbe wie tree -P '*name*'.

0
@artistoex Könnten Sie das näher erläutern? Soweit ich das beurteilen kann, unterscheidet sich dies nicht von der gelöschten Antwort, die Sie kommentiert haben, da Sternchen mit doppelten Anführungszeichen keiner Erweiterung unterliegen. Deswegen sollte `tree -P" * $ 1 * "` ebenfalls funktionieren. Daniel Beck vor 11 Jahren 2
Mit doppelten Anführungszeichen wie `Daniel Beck` kann man sagen, dass es auch funktioniert. Könnten Sie dies als separate Antwort posten? Bentley4 vor 11 Jahren 0
Aliase behandeln keine Argumente, verwenden eine Shell-Funktion. vonbrand vor 11 Jahren 0

1 Antwort auf die Frage

2
Eero Helenius

In Bash interpolieren einfache Anführungszeichen nichts . Verwenden Sie stattdessen doppelte Anführungszeichen in Ihrer Funktion:

function tree_seek() { tree -P "*$1*"  }  alias treeseek='tree_seek' 
@ daniel-beck: Entschuldigung, ich wollte deine Antwort sicher nicht hijacken. Ich habe Ihren Kommentar nicht gesehen, bevor ich meine Antwort gepostet habe. Eero Helenius vor 11 Jahren 0
+1 zum Finden und Entschuldigung bei Daniel Beck. jaume vor 11 Jahren 0