Bash cd-Befehl Datei Verschieben

Verzeichnis mit Bash cd-Befehl durch Angabe von Dateien wechseln

In Windows 10 WSL Bash und Linux Bash Befehlszeile/Konsole schreiben wir ein Override-Skript, das es dem cd-Befehl ermöglicht, in ein Verzeichnis zu wechseln, nicht nur durch Angabe eines Verzeichnisses, sondern auch durch Angabe einer Datei.

Shou Arisaka
2 Min. Lesezeit
28. Okt. 2025

In Windows 10 WSL Bash und Linux Bash Befehlszeile/Konsole schreiben wir ein Override-Skript, das es dem cd-Befehl ermöglicht, in ein Verzeichnis zu wechseln, nicht nur durch Angabe eines Verzeichnisses, sondern auch durch Angabe einer Datei.

yuis ASUS /mnt/c/pg$ cd ruby/hoge.md
yuis ASUS /mnt/c/pg/ruby$ cd -
/mnt/c/pg
yuis ASUS /mnt/c/pg$

So etwas wie ein Override.

cd(){
    [[ -f "${1}" ]] && builtin cd "$(dirname "${1}")" || builtin cd "${1}"
}

Wenn ich mit Everything in ein Verzeichnis wechseln möchte, in dem sich eine Datei befindet, kann ich den vollständigen Pfad der Datei mit ctrl+shift+C kopieren, aber ich kann den Ordnerpfad nicht kopieren. Ich dachte, es wäre mühsam, jedes Mal dirname zu machen, also versuchte ich, cd zu modifizieren, aber es war überraschend mühsam.

because it calls recursively the cd defined by you. To fix, use the builtin keyword like:

[bash - Override a builtin command with an alias - Stack Overflow](https://stackoverflow.com/questions/28783509/override-a-builtin-command-with-an-alias)

Wenn Sie also builtin cd in cd ändern, wird es einen Fehler geben. Ich denke nicht, dass command cd auch funktioniert.

cd hat überraschend instabile oder unbestimmte Argumente, also wenn Sie versuchen, es im Detail anzugeben, werden Sie stecken bleiben. Zum Beispiel gibt es Werte wie -, .., ./, bei denen realpath nicht funktioniert, also ist es besser, nur Dinge zu verarbeiten, die definitiv “Argumente sind Dateien” sind, und alle anderen mehrdeutigen Dinge durch normale Operationen gehen zu lassen, damit Sie später nicht von Fehlern geplagt werden.

Diesen Artikel teilen

Shou Arisaka 28. Okt. 2025

🔗 Links kopieren