Fast jedes Mal, wenn ich auf meinem Computer (in diesem Fall unter Mac OS X 10.6.7) eine CD in ein anderes Verzeichnis starte (was bash ist), gebe ich sofort 'ls' ein, um das Inhaltsverzeichnis zu erhalten in diesem Verzeichnis. Ich versuche, eine Möglichkeit zu finden, 'cd' zu überschreiben, damit es in das angeforderte Verzeichnis wechselt und mir die Liste auf einen Schlag anzeigt.
Mit der folgenden Zeile in meinem ~ / .bash_profile konnte ich die Grundfunktionalität erreichen, nach der ich suche
function cl() { cd "$@"; ls -l; }
Das funktioniert wie erwartet. In das gewünschte Verzeichnis wechseln und mir dann den Inhalt anzeigen. Wenn ich auf ein Problem stoße, wird versucht, "cd" selbst zu überschreiben, anstatt einen neuen "cl" -Befehl zu erstellen.
Die folgenden Dinge tun nicht Arbeit
##### Attempt 1 #####
# Hangs the command line
function cd() { cd "$@"; ls -l; }
##### Attempt 2 #####
# Hangs the command line
function cd() { 'cd' "$@"; ls -l; }
##### Attempt 3 #####
# Does not change directory.
# Does list contents, but of the directory where you started.
function cd() { /usr/bin/cd "$@"; ls -l; }
#### Other attempts that fail in various ways #####
alias cd=cd "$@"; ls -la;
alias cd="cd '$@'; ls -la;"
alias cd='cd "$@"'; ls -la;
alias cd=/usr/bin/cd "$@"; ls -la;
Ich habe auch mehrere andere Iterationen ausprobiert, die nicht aufgelistet sind, und einen Alias erstellt, der auf die funktionierende Funktion 'cl' verweist. Nichts davon hat funktioniert.
Was ich in der Dokumentation gelesen habe, handelt von der Tatsache, dass 'cd' nicht als externer Befehl ausgeführt werden kann (was meiner Meinung nach die Art ist, wie die Funktion es verwenden müsste).
Also kann ich momentan meinen "cl" -Befehl verwenden und bekommen, was ich will, aber die Frage ist / bleibt:
Gibt es eine Möglichkeit, das Verhalten von 'cd' zu überschreiben, damit es in das angeforderte Verzeichnis wechselt und anschließend etwas anderes unternimmt?