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.
[bash - Override a builtin command with an alias - Stack Overflow](https://stackoverflow.com/questions/28783509/override-a-builtin-command-with-an-alias)because it calls recursively the cd defined by you. To fix, use the builtin keyword like:
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.