Переход в родительский каталог файла с помощью cd?

Я пишу .sh, чтобы выполнить какую-то работу для меня, но теперь я нахожусь в точке, где мне приходится записывать в каталог файл /path/to/file.end. Терминал не позволяет [ ! d0]

cd /path/to/file.end
bash: cd: /path/to/file.end: Not a directory

, к сожалению, нет обходного пути, о котором я знаю, так что было бы неплохо, если бы вы могли помочь!

1
задан 5 July 2013 в 14:53

2 ответа

Вы не можете cd в файл. Вот функция (командной строки), которая автоматически cd будет указывать путь для заданного полного пути к файлу:

function fcd () { [ -f "$1" ] && { cd "$(dirname "$1")"; } || { cd "$1"; } ; pwd; }
6
ответ дан 24 May 2018 в 20:17
  • 1
    Я понял это правильно: function fcd () {[-f $ 1] & amp; & amp; & amp; {cd $ (/ file.end $ 1); } || {cd $ 1; } pwd} ответ: bash: синтаксическая ошибка около неожиданного токена `pwd ', это дает мне ошибку таким образом :( – Azsgy 5 July 2013 в 15:30
  • 2
    @Atsch, нужно использовать точку с запятой до pwd, и если вы определяете функцию в одной строке, вам нужна точка с запятой после pwd. – glenn jackman 5 July 2013 в 15:36
  • 3
    @glennjackman функция просто выходит без вывода или изменения dir :( – Azsgy 5 July 2013 в 15:43
  • 4
    запустите функцию, затем введите echo $? - каков статус выхода? – glenn jackman 5 July 2013 в 16:07
  • 5
    Я не должен был сомневаться. Альтернатива выглядела лучше для меня, когда я нашел ее _O- – Rinzwind 5 July 2013 в 16:11

Если вы добавите «/ ..» к имени файла, которое приведет вас в правильный каталог, например. [F1]. Он все равно работает на Cygwin.

1
ответ дан 24 May 2018 в 20:17
  • 1
    Не работает в bash;) touch test && cd /home/test/test/.. говорит bash: cd: /home/test/test/..: No such file or directory – Rinzwind 5 July 2013 в 19:41

Другие вопросы по тегам:

Похожие вопросы: