Piszę .sh, żeby coś dla mnie zrobić, ale jestem teraz w punkcie, w którym muszę cd do katalogu, w którym znajduje się plik /path/to/file.end. Terminal nie pozwala
cd /path/to/file.end
bash: cd: /path/to/file.end: Not a directory
niestety nie znam żadnego obejścia, więc byłoby miło, gdybyś mógł pomóc!
command-line
bash
files
directory
Azsgy
źródło
źródło
cd /path/to
? Spowoduje to zmianę katalogu na katalog, w którymfile.end
znajduje się plik .Odpowiedzi:
Wpisz
cd $( dirname /path/to/file.end)
. To cię zabierze/path/to
.Wyjaśnienie:
dirname
zwraca pełną ścieżkę do pliku (bez nazwy pliku, którą byś otrzymałbasename
) - tzn.dirname /etc/apt/apt.conf.d/99update-notifier
zwraca/etc/apt/apt.conf.d
$(anything)
jest zastępowane wynikiem polecenia w nawiasach. Więccd $( dirname /etc/apt/apt.conf.d/99update-notifier)
jest wykonywany jakocd /etc/apt/apt.conf.d
Innym (ale starym i zniechęconym) zapisem tego samego było
źródło
Nie możesz przejść
cd
do pliku. Oto funkcja (linia poleceń) , która automatyczniecd
przechodzi do ścieżki dla danej w pełni kwalifikowanej ścieżki pliku:źródło
pwd
, a jeśli definiujesz funkcję w jednym wierszu, potrzebujesz średnika popwd
.echo $?
- jaki jest status wyjścia?Jeśli dodasz „/ ..” do nazwy pliku, która przeniesie Cię do właściwego katalogu, np
cd /path/to/file.end/..
. W każdym razie działa na Cygwin.źródło
touch test && cd /home/test/test/..
mówibash: cd: /home/test/test/..: No such file or directory