Когда xargs
видит \!\(\*-4.pdf
на своем входе, он понимает !(*-4.pdf
. Если вы используете xargs
, вам нужно произвести ввод, соответствующий его синтаксису ввода, который не похож ни на что другое. Простое добавление обратной косой черты перед пробелами справляется только с пробелами.
В Linux, *BSD и OSX, xargs
поддерживает опцию -0
, которая указывает ему действовать с записями, разделенными нулевыми байтами без кавычек. hg status -0
выдает записи, разделенные нулевыми байтами. Осталось только адаптировать промежуточную обработку, чтобы справиться с нулями вместо новых строк в качестве разделителей.
С помощью GNU awk или любого другого awk, который поддерживает нулевые байты в качестве разделителей записей (я думаю, что BSD/OSX awk поддерживает), вы можете переключить ваше преобразование на awk.
hg status -0 |
awk -v RS='\0' -v ORS='\0' '/^!/ {print substr($0, 3)}' |
xargs -0 hg remove
Вы можете комбинировать все предложения, сделанные в комментариях, например, с здесь строкой , смешанной с:
$ script -c 'python -i <<< "print \"test\""'
Script started, file is typescript
Python 2.7.5 (default, Jul 13 2018, 13:06:57)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-28)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> test
>>>
Script done, file is typescript
Это запишет вышеуказанное в файл с именемtypescript
:
$ cat typescript
Script started on Tue 21 Aug 2018 12:19:50 AM EDT
Python 2.7.5 (default, Jul 13 2018, 13:06:57)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-28)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> test
>>>
Script done on Tue 21 Aug 2018 12:19:50 AM EDT
Описанный выше метод работает следующим образом:
script -c
'...' - runs the commands in single quotes in
скрипт and logs the output to the file
машинопись`python -i <<< "...."
-запускает Python в интерактивном режиме, передавая команду "...."
в виде здесь строки"print \"test\""
-команда для запуска как здесь строкаЕсли вы обнаружите, что полученный файл typescript
содержит управляющие последовательности, такие как:
ESC[34mRPMsESC[39;49mESC[0m
ESC[34mRPMs_fpmESC[39;49mESC[0m
ESC[34mansibleESC[39;49mESC[0m
Вы можете использовать less -R
или less -r
для просмотра этих:
$ less -R somefile
RPMs
RPMs_fpm
ansible