Запускать сценарий оболочки при переходе в каталог с помощью cd [дубликат]

Что вы на самом деле делаете, так это объединяете все шары tar. Вы можете увидеть весь контент, используя переключатель tar -i:

$ tar -itvf rootdir.tar.xz
subdir_2/
subdir_1/

Я не думаю, что возможно создать tar-шар из всех этих подкаталогов tar-шаров напрямую через канал. Вам нужно сначала записать их на диск в цикле:

for foo in `find rootdir -maxdepth 1 -name "subdir_*" -type d`
do
  tar --create --verbose --file=- --directory="rootdir" "$(basename ${foo})" \
  >"${foo}.tar"
done
tar -cf -  rootdir/subdir*.tar | xz -zc9 > rootdir.tar.xz
rm rootdir/subdir*.tar
0
24.05.2017, 12:40
3 ответа

Вы можете заменить cdфункцией, которая добавляет любую обработку, которую вы хотите:

cd() {
    builtin cd "$@"
    # Do whatever you want here
}
5
28.01.2020, 02:15

Один из способов сделать это — использовать псевдоним Команда :

alias cdgit="cd /foo; git status"

Затем вы выполняете cdgitи переходите в каталог /fooи выполняете git status

1
28.01.2020, 02:15

Я использую что-то похожее на ответ Стивена Китта в моем .bashrc:

function cd() {
  command cd "$@" || return

  if [[ -d .git ]]
  then
    git status --short
  else
    ls -al
  fi
}

You может создавать дополнительные условия для обработки разных вещей по мере необходимости.

ПРИМЕЧАНИЕ: поскольку мы затираем ссылку на команду cd, вы должны использовать команду cd, встроенную команду cd или \ cd, чтобы функция не вызывала себя и не повторялась вечно. По этой причине некоторые могут счесть полезным переименовать эту функцию.

3
28.01.2020, 02:15

Теги

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