Ich versuche, Aliase in Bash zu erstellen. Was ich tun möchte , ist Karte ls -la
zuls -la | more
In meiner .bashrc-Datei habe ich Folgendes versucht:
alias 'ls -la'='ls -la | more'
Es funktioniert jedoch nicht, da (ich nehme an) Leerzeichen im Aliasnamen enthalten sind. Gibt es eine Lösung dafür?
alias lsm='ls -la | more'
Antworten:
In der Bash-Dokumentation heißt es: "Für fast alle Zwecke werden Shell-Funktionen Aliasen vorgezogen." Hier ist eine Shell-Funktion, die
ls
die Ausgabe ersetzt und dazu führt, dass sie weitergeleitet wird,more
wenn das Argument aus (nur) besteht-la
.Als Einzeiler:
Ausgabe automatisch leiten:
quelle
command
Verhindert, dass die Funktion rekursiv aufgerufen wird.Aus der Alias-Manpage :
Daher wird nur das erste Wort auf Alias-Übereinstimmungen überprüft, wodurch Mehrwort-Aliase unmöglich werden. Möglicherweise können Sie ein Shell-Skript schreiben, das die Argumente überprüft und Ihren Befehl aufruft, wenn sie übereinstimmen, und andernfalls nur das Normal aufruft
ls
(siehe Antwort von @Dennis Williamson ).quelle
Ein leicht verbesserter Ansatz aus Dennis 'Antwort:
Oder der Einzeiler:
So können beispielsweise nach dem Befehl weitere Optionen / Argumente angehängt werden
ls -la -h
quelle
ls -lat
von dieser Behandlung ausgeschlossen werden möchte ? Ich müsste einen Fall über den-la*
Eintrag stellen, ja?Sie können diesen Alias weiterhin aufrufen, benötigen jedoch ein Anführungszeichen, damit das Leerzeichen Teil des Befehlsworts ist. So
"ls -la" -p pattern
wird die-p pattern
Optionmore
nicht weitergegebenls
.quelle