Подтвердить что ты не робот

Bash: как я могу конкатенировать вывод двух команд, чтобы я мог передать их третьим?

$ hg status

и

$ hg status --ignored

дают очень похожие результаты. Я хотел бы объединить их, чтобы я мог кормить их awk, как если бы был статус hg - all (или svn svn status --no-ignore)

Я думаю что-то вроде:

$ echo "$(hg status)" "$(hg status --ignored)" | awk  ' ( $1 == "?" ) || ( $1 == "I") { print $2 }' | xargs rm -r

чтобы сделать команду "make very clean really", но иногда она оставляет файл позади, возможно потому, что новая строка отсутствует или что-то еще.

4b9b3361

Ответ 1

Вы можете использовать подоболочку:

( hg status; hg status --ignored ) | awk '( $1 == "?" ) || ( $1 == "I") { print $2 }' | xargs rm -r

Ответ 3

Вы можете использовать остальные флаги статуса hg, чтобы показать, что вы действительно хотите:

hg status -uriamn

Это показывает неизвестные файлы (u), удаленные файлы (r), игнорируется (i), добавлено (a), изменено (m) и делает это без отображения префикса состояния.

Ответ 4

Это работает для меня:

echo $(a)$(b)

если вы добавите "", вы можете добавить разделители, например:

echo "$(./gethostname.sh)|($(./getip.sh);"

Я использую это в Openwrt для трансляции моих настроек ip:

echo "$( uci get [email protected][0].hostname )|$( ip addr | grep inet | grep br-lan | cut -d ' ' -f 6 | cut -d '/' -f 1 );"  | socat - UDP-DATAGRAM:255.255.255.255:4999,broadcast ;