Я пытался создать быстрый скрипт, чтобы найти все репозитории git в каталоге и последовательно «git pull» каждый.Передача команд подоболочке с xargs не работает внутри псевдонима
Это то, что я нашел до сих пор:
find ~/ -name ".git" -type d | sed 's,/*[^/]\+/*$,,' | xargs -L1 bash -c 'cd "$1" && git pull' _
Если вставить в терминал, это будет работать точно так, как это задумано. Однако, если я делаю это в качестве псевдонима в моем .bashrc
файле:
alias gpa="find ~/ -name ".git" -type d | sed 's,/*[^/]\+/*$,,' | xargs -L1 bash -c 'cd "$1" && git pull' _"
Команда не работает. Я изменил его в попытке заставить его напечатать, что подоболочка запущен xargs получает:
alias printgpa="find ~/ -name ".git" -type d | sed 's,/*[^/]\+/*$,,' | xargs -L1 bash -c 'echo "$1"' _"
При запуске каждой подоболочка печатает новую строку, но ничего другого.
Может кто-нибудь ответить, почему это происходит? Чувство моего чувства говорит, что это проблема с моим синтаксисом в псевдониме, но я точно не знаю, что происходит.
'установить -x' в Баш будет заставить его повторить команды, как он видит их, перед их исполнением. Отлично подходит для выяснения сложных проблем с цитированием. – bobbogo
Возможно, вы захотите использовать функцию вместо псевдонима, так что вам не нужно беспокоиться о хитрой цитате, чтобы заставить ее работать. – chepner