BASH: альтернатива для cd или выполнение скрипта в каталоге, в котором он стоит - PullRequest
0 голосов
/ 16 сентября 2018

Я хотел бы команду типа

    cd ./test/zen/

, но работать с именем файла в нем, например

command ./test/zen/rename.sh

и перейти в / test / zen

Есть способ?Я не могу использовать pipe, потому что он мне нужен для такой строки, как

find -name "rename.sh" -exec sh {} \;

. Или есть решение выполнить с помощью этой последней команды скрипт в каталоге, где он находится, а не в каталоге, где я выполняюмоя последняя команда ...

Есть идеи?Спасибо ^ _ ^

Ответы [ 2 ]

0 голосов
/ 17 сентября 2018

Find уже поддерживает это:

find /var -mount -name "ba*" -execdir pwd \;

от man find:

   -execdir command {} +
          Like  -exec, but the specified command is run from the subdirec‐
          tory containing the matched file, which is not normally the  di‐
          rectory in which you started find.  As with -exec, the {} should
          be quoted if find is being invoked from a shell.
0 голосов
/ 17 сентября 2018

Вы можете использовать функцию для этой цели:

cdf() {
    cd $(dirname $1)
}

Отсутствует контроль ошибок, проверка параметров и т. Д., Но вы поняли.

...