Я пишу .sh, чтобы сделать некоторую работу за меня, но сейчас я нахожусь в точке, где мне нужно перейти к каталогу, в котором находится файл /path/to/file.end. Терминал не позволяет
cd /path/to/file.end
bash: cd: /path/to/file.end: Not a directory
К сожалению, я не знаю обходного пути, поэтому было бы неплохо, если бы вы могли помочь!
command-line
bash
files
directory
Azsgy
источник
источник
cd /path/to
? Это изменит каталог на каталог, в которомfile.end
находится файл .Ответы:
Тип
cd $( dirname /path/to/file.end)
. Это приведет вас в/path/to
.Объяснение:
dirname
возвращает полный путь к файлу (без имени файла, которое вы бы получилиbasename
) - т.е.dirname /etc/apt/apt.conf.d/99update-notifier
возвращает/etc/apt/apt.conf.d
$(anything)
заменяется результатом команды в скобках. Такcd $( dirname /etc/apt/apt.conf.d/99update-notifier)
выполнено какcd /etc/apt/apt.conf.d
Другое (но старое и обескураженное) обозначение для того же было
источник
Вы не можете
cd
в файл. Вот функция (командной строки) , которая автоматически входитcd
в путь для заданного полного пути к файлу:источник
pwd
, а если вы определяете функцию в одной строке, после запятойpwd
.echo $?
- что такое статус выхода?Если вы добавите «/ ..» к имени файла, которое приведет вас к правильному каталогу, например
cd /path/to/file.end/..
. Это работает на Cygwin в любом случае.источник
touch test && cd /home/test/test/..
говоритbash: cd: /home/test/test/..: No such file or directory