Это возможно, синтаксис довольно легок:
$ cat *.tar | tar -xvf - -i
-i опция игнорирует EOF в конце архивов tar из страницы справочника:
-i, --ignore-zeros
ignore blocks of zeros in archive (normally mean EOF)
Общий совет: если Вы имеете два уровня вложения, избегаете использования одинарных кавычек во внутренней команде и используете одинарные кавычки вокруг внешней команды.
Дополнительная подсказка: не используйте обратные галочки - `…`
- для выполнения кода вместо этого используйте $(…)
вокруг этого. Долларовыми круглыми скобками является в значительной степени DWIM ('Делают то, что я имею в виду') когда дело доходит до вложенных кавычек; одинарные левые кавычки имеют тайные, зависимые от оболочки правила.
watch -n 3 'for x in $(my_command | grep keyword | cut -d" " -f1); do command2 "rusage[mem=7000]" "$x"; done'
При необходимости в одинарных кавычках в единственно заключенной в кавычки команде можно использовать '\''
. Думайте об этих четырех символах как о способе заключить одинарную кавычку в кавычки в одинарных кавычках, хотя с технической точки зрения это создается как конец единственно заключенная в кавычки строка, добавьте литеральную одинарную кавычку и запустите новую единственно заключенную в кавычки строку (все еще добавленный к текущему слову).
Для более сложных случаев, или кропотливо считают кавычки или определяют временные переменные.
cmd='for x in $(my_command | grep keyword | cut -d" " -f1); do command2 "rusage[mem=7000]" "$x"; done'
watch_cmd='watch -n 3 "$cmd"'
Этот ответ не характерен для zsh. Zsh не приносит ничего главного здесь. Можно сохранить немного заключения в кавычки, потому что нет никакой потребности в двойных кавычках вокруг замен команды, и иногда существуют способы использовать созданные-ins а не внешние команды, которые уменьшают потребности заключения в кавычки, но базовые проблемы совпадают с в других оболочках.
О, и между прочим, отметьте это watch
выполнит Вашу команду в sh
, не в zsh. Если Вы хотите выполнить команду в zsh, необходимо работать
watch -n 3 -x zsh -c "$cmd"
на Debian/Ubuntu, и
export cmd
watch -n 3 'exec zsh -c "$cmd"'
(еще больше заключения в кавычки!) в другом месте.
watch
не идет-x
ни-c
опции на моей машине. Я искал его онлайн и не нашел страниц справочника, которые упоминают их. Что делают эти опции? – Amelio Vazquez-Reina 27.10.2011, 00:45-x
говоритwatch
не передать команду через оболочку. Я просто узнал, что это характерно для Debian/Ubuntu, даже при том, что он не указал как таковой.-c
передаетсяzsh
, не кwatch
. – Gilles 'SO- stop being evil' 27.10.2011, 01:03-x
и-exec
опции оба существуют в моемwatch
(на хинду), таким образом, это определенно не Debian-конкретно. Возможно, Вы по сравнению с некоторой другой версиейwatch
? Мой прибывает из procps пакета. – rozcietrzewiacz 27.10.2011, 09:46watch
прибывает изprocps
на Debian также. Официальный источник не имеет--exec
. Пакет в Debian (и производные включая Ubuntu) добавляет опцию в Debian-определенном патче (watch_exec_beep.patch
; это - “исполнительный патч часов Mortys” от ошибки № 410967). Хинду, возможно, принял подобный патч. – Gilles 'SO- stop being evil' 27.10.2011, 10:42