Ответ 1
Вы можете использовать подоболочку:
( hg status; hg status --ignored ) | awk '( $1 == "?" ) || ( $1 == "I") { print $2 }' | xargs rm -r
$ 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", но иногда она оставляет файл позади, возможно потому, что новая строка отсутствует или что-то еще.
Вы можете использовать подоболочку:
( hg status; hg status --ignored ) | awk '( $1 == "?" ) || ( $1 == "I") { print $2 }' | xargs rm -r
Используйте фигурные скобки для группировки команд:
$ { echo first line; echo second line; } | grep "line"
first line
second line
(Отправлено в ответ от комментарий camh)
Вы можете использовать остальные флаги статуса hg, чтобы показать, что вы действительно хотите:
hg status -uriamn
Это показывает неизвестные файлы (u), удаленные файлы (r), игнорируется (i), добавлено (a), изменено (m) и делает это без отображения префикса состояния.
Это работает для меня:
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 ;