Как добавлять строки к выходным данным команды git

На самом деле они не относятся к службам systemd...

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

Правильный способ настроить это — настроить это как часть конфигурации X.

См. здесь , чтобы узнать, как это настроить.

Что касается подключения к VPN, вам, вероятно, следует настроить это в NetworkManager, который контролирует ваши подключения и знает, когда ваша сеть работает.

См. здесь , чтобы узнать, как подключить сценарий диспетчера к NetworkManager, который может запускать VPN, когда сеть работает.

0
26.02.2020, 22:31
3 ответа

git pushпишет в stderr, поэтому вам придется перенаправить его на stdout, чтобы его можно было отправить по конвейеру:

cm_safe(){
   git push 2>&1 | while IFS= read -r line; do
     echo "cm safe push: $line"
   done
}

В качестве альтернативы вы можете:

git push |& while IFS= read -r line; do

Я рекомендую прочитать Что такое операторы управления и перенаправления оболочки? для получения дополнительной информации.

2
28.04.2021, 23:22

Кажется, это сработало, но я не знаю, почему:

 git push &> /dev/stdout

Это заставляло git отправлять stdout/stderr на стандартный вывод терминала? Я не понимаю

0
28.04.2021, 23:22

Как вы уже знаете, git pushвыводит stderr, а не stdout. Кроме того, вы всегда должны использовать while IFS= read -r lineдля чтения строк ввода с помощью оболочки, если у вас нет особой причины отказаться от IFS=или -r. Это похоже на то, что вы всегда цитируете свои переменные оболочки -, это то, что вы удаляете, когда вам нужно, а не что-то, что вы добавляете, когда вам нужно.

FWIW Я бы использовал:

cm_safe() { git push 2>&1 | awk '{print "cm safe push:", $0}'; }

или:

cm_safe() { git push 2>&1 | sed 's/^/cm safe push: /'; }

в любом случае, учитывая, что использование цикла оболочки для обработки текста считается плохой практикой .

2
28.04.2021, 23:22

Теги

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