Ich führe den ls
Befehl häufig aus, nachdem ich ihn ausgeführt habe cd
. Wie kann ich einen Alias (wie cs
) für diesen Vorgang erstellen ?
quelle
Ich führe den ls
Befehl häufig aus, nachdem ich ihn ausgeführt habe cd
. Wie kann ich einen Alias (wie cs
) für diesen Vorgang erstellen ?
Aus Bash Tips and Tricks: 'CD' mit Stil :
Abschließend möchte ich Ihnen zeigen, wie Sie Ihren eigenen benutzerdefinierten Ersatz für den Befehl 'cd' schreiben.
Stellen Sie fest, dass Sie beim Wechseln in ein Verzeichnis immer dasselbe eingeben? Wahrscheinlich listen Sie die Dateien dort jedes Mal auf, vielleicht so oft, dass Ihre Hände automatisch nach jeder 'CD' 'ls' eingeben.
Nun, wenn ich alles versuche, was mir einfällt, zeigt sich, dass es nur einen Weg gibt, das angestrebte Ziel richtig zu erreichen. Wir müssen eine Shell-Funktion erstellen.
Shell-Funktionen sind Teil der Shell-Programmierung. Funktionen bieten wie in kompilierten Programmiersprachen eine Art prozedurale Modularisierbarkeit. Man kann eine generische Funktion erstellen, um ein häufig verwendetes Stück Logik oder Berechnung mit verschiedenen Parametern durchzuführen. In diesem Fall ist der Parameter das aktuelle Arbeitsverzeichnis.
Hier ist eine einfache:
function cs () { cd $1 ls }
Wie @geirha genau feststellt, schlägt die obige Funktion fehl, wenn Sie versuchen, zu einem Verzeichnis mit einem Leerzeichen im Namen zu wechseln:
$ cs A\ B/
-bash: cd: A: No such file or directory
<current directory listing>
Sie sollten stattdessen die folgende Funktion verwenden:
function cs () {
cd "$@" && ls
}
Sobald Sie diesen Code hinzugefügt haben, ~/.bashrc
sollten Sie in der Lage sein, dies zu tun:
hello@world:~$ cs Documents/
example.pdf tunafish.odt
hello@world:~/Documents$
Sie können den
builtin
Befehl in bash verwenden:quelle
function ls() { /usr/bin/ls $* }
cd
weilrvm
sich auch meinecd
Definition geändert hat . Siehe stackoverflow.com/a/19941991/1601989Verwenden Sie eine Funktion anstelle eines Alias:
quelle
Danke Florian Diesch für den Tipp, eine Funktion zu benutzen. Ich kann
cs
den Namen nicht verwenden, da das csound- Paket einencs
Befehl enthält , den ich verwendet habelc
.Ich habe dies zu
~/.bash_aliases
(nano ~/.bash_aliases
) hinzugefügt :Das Terminal muss dafür eingerichtet sein
reset
.quelle
$1
nicht tun, schlägt es fehl, wenn das Verzeichnis Leerzeichen enthält. Außerdem sollten Sie den Rückgabewert von prüfencd
. Wenn es fehlgeschlagen ist (z. B. die Erlaubnis verweigert wurde), macht es keinen Sinn, das auszuführenls
.lc() { cd "$@" && ls; }
Als Erweiterung dieser Funktion:
cs() { cd "$1" && ls; }
, können Sie auf alle die Argumente der Funktion zu übergebencd
durch die Verwendung$@
von anstelle"$1"
als solche:cs() { cd $@ && ls; }
.quelle
Ich hatte Probleme bei der Neudefinition,
cd
weilrvm
sich auch meinecd
Definition geändert hat . Siehe https://stackoverflow.com/a/19941991/1601989 . Ich wollte nicht wirklich verwenden,builtin
weil das alles überspringen würde, was gerade gemachtrvm
wird.Ich habe Folgendes zu meinem hinzugefügt
.bashrc
:Und dann nach der
rmv
Zeile in der.bashrc
:quelle