Вы можете поместить оболочку оболочки вокруг вызова python
(поместите это в .zshrc
или .bashrc
] ... в зависимости от вашей оболочки),
python () {
if [ "$1" = manage.py ]; then
command python manage.py && xyz
else
command python "$@"
fi
}
Но я подозреваю, что вам лучше изменить manage.py
на запуск xyz
в конце (см. библиотеку подпроцесса python) или создание сценария оболочки,
manage.sh :
#! /bin/sh
python manage.py && xyz
Используйте рекурсивный переключатель на chown:
chown -R root:users dir
И это должно сработать.
Подробнее о том, почему у вас возникает ошибка :, если команда find не находит никаких файлов, то chown будет выполняться без операнда в конце, что генерирует эта ошибка.
Если вы действительно намерены придерживаться исходного формата команды, вы можете добавить переключатель-r в xargs, и он должен избавиться от ошибки, когда файлы не найдены.
В дополнение к наблюдению, что вы можете использовать флаг -R
для chown
, причина, по которой вы получаете сообщение об ошибке, почти наверняка[1] связана с тем, что у вас нет файлов, которые нужно изменить. В версии gnu xargs
есть дополнительный флаг -r
, указывающий xargs не запускать команду, если для команды нет ввода.
Однако использование xargs
является неправильным подходом, POSIX-версия find
будет группировать команды для вас. Используйте
find. \( ! -user root -o ! -group users \) -exec chown -vc root:users {} +
обратите внимание на конечную +
, а не на часто встречающуюся \;
в примерах использования -exec
. С \;
команда запускается один раз для каждого соответствующего файла, но с +
файлы группируются и запускаются пакетами.
В некоторых случаях xargs все же следует использовать, например, если вы хотите прочитать ввод и обработать строки парами, но это редко. Почти всегда вы хотите либо запустить команду для каждого файла, либо собрать как можно больше файлов и запустить одну команду для каждого пакета.
[1] В зависимости от реализации xargs вы могли точно заполнить несколько командных буферов файлами, но гораздо более вероятно, что файлов вообще не будет.