Самый простой способ - использовать псевдоним (стратегия 3). Если вам действительно нужна команда xargs
, вы все равно можете переопределить ее с помощью функции bash.
alias grep='grep --color'
xargs() {
local args
for ((i=1; i<=$#; i++))
do
if [[ "-E -L -P -I -s -d" == *"${!i}"* ]]; then
((i=i+1))
elif [[ ${!i:0:1} != "-" ]]; then
if [[ ${!i} == "grep" ]]; then
args="--color"
fi
/usr/bin/xargs ${@:1:i} $args ${@:i+1}
return;
fi
done
}
Но это не лучше, чем использование команды-оболочки, которая, по-видимому, является рекомендуемым решением команды grep
:
/usr/local/bin/grep:
#!/bin/bash
/bin/grep --color "$@"
По моему скромному мнению, вам следует обратиться к grep
команда разработчиков попросила их предоставить простую замену переменной GREP_OPTIONS
, которая включит цвет в grep
в соответствии с некоторой переменной среды.
Для них было бы довольно просто включить по умолчанию параметр цвет
или когда был установлен GREP_COLORS
.
Вероятно, вам нужен один сценарий, который выполняет все необходимые шаги последовательно:
#!/bin/sh
sudo -u www-data php /var/www/owncloud/occ maintenance:mode --on
apt-get update && apt-get upgrade -y
sudo -u www-data php /var/www/owncloud/occ maintenance:mode --off
А затем запустите его из crontab root.
su
и друзья на помощь! Здесь можно использовать su
, sudo
и super
. su
является традиционным, sudo
— самым простым, и super
имеет преимущества, если вы хотите, чтобы пользователи могли выполнять часть этого.
Поскольку вы специально упомянули о проверке состояния выхода apt-get upgrade
, вы должны использовать 1 7 * * 1 apt-get update && apt-get upgrade && sudo -u www-data php /var/www/owncloud/occ maintenance:mode --off
.
Теперь это становится немного длиннее, поэтому следование совету Трига и включение его в скрипт имеет преимущества, но его пример имеет два недостатка :он не проверяет возвращаемые значения, а за режимом обслуживания по команде сразу следует следующий command, и я предполагаю, что была причина задержки между входом в режим обслуживания и запуском apt -get, так что вам может понадобиться нечто подобное:
#!/bin/sh
set -e
sudo -u www-data php /var/www/owncloud/occ maintenance:mode --on || sudo -u www-data php /var/www/owncloud/occ maintenance:mode --on
sleep 1m || true
apt-get update || apt-get update
apt-get upgrade -y || apt-get install
sudo -u www-data php /var/www/owncloud/occ maintenance:mode --off || sudo -u www-data php /var/www/owncloud/occ maintenance:mode --off
Но у вас хорошее начало.