Ich schreibe eine .sh, um etwas Arbeit für mich zu erledigen, aber jetzt bin ich an dem Punkt angelangt, an dem ich in das Verzeichnis cd muss, in dem sich die Datei /path/to/file.end befindet. Das Terminal erlaubt dies nicht
cd /path/to/file.end
bash: cd: /path/to/file.end: Not a directory
Es gibt leider keine Problemumgehung, die ich kenne. Es wäre also schön, wenn Sie helfen könnten!
command-line
bash
files
directory
Azsgy
quelle
quelle
cd /path/to
? Dadurch wird das Verzeichnis in das Verzeichnis geändert, in dem sich die Dateifile.end
befindet.Antworten:
Typ
cd $( dirname /path/to/file.end)
. Das wird dich dazu bringen/path/to
.Erläuterung:
dirname
Gibt den vollständigen Pfad für eine Datei zurück (ohne den Dateinamen, den Sie erhalten würdenbasename
) - dh gibtdirname /etc/apt/apt.conf.d/99update-notifier
zurück/etc/apt/apt.conf.d
$(anything)
wird durch das Ergebnis des Befehls in Klammern ersetzt. Socd $( dirname /etc/apt/apt.conf.d/99update-notifier)
wird ausgeführt alscd /etc/apt/apt.conf.d
Eine andere (aber alte und entmutigte) Notation dafür war
quelle
Sie können nicht
cd
in eine Datei. Hier ist eine (Befehlszeilen-) Funktion , die automatischcd
in einen Pfad für einen bestimmten vollständig qualifizierten Dateipfad eingeht:quelle
pwd
und wenn du eine Funktion in einer Zeile definierst, brauche danach ein Semikolonpwd
.echo $?
- wie lautet der Exit-Status?Wenn Sie "/ .." an den Dateinamen anhängen, gelangen Sie in das richtige Verzeichnis, z
cd /path/to/file.end/..
. Es funktioniert sowieso auf Cygwin.quelle
touch test && cd /home/test/test/..
sagtbash: cd: /home/test/test/..: No such file or directory