{ echo "x1 x2 x3" ; echo "y1 y2 y3"; } | xargs -L1 echo
x1 x2 x3
y1 y2 y3
-L1
будет использовать каждую строку отдельно
Однако справочная страница портит ее:
Строка, оканчивающаяся на пробел продолжается до следующей непустой строки.
См. Здесь:
{ echo "x1 x2 x3 " ; echo "y1 y2 y3"; } | xargs -L1 echo
x1 x2 x3 y1 y2 y3
Это потому, что вы перенаправили стандартную ошибку оболочки.
Именно здесь совместимая с POSIX -оболочка должна писать свои интерактивные подсказки согласно стандарту.
The Bourne Again , Heirloom Bourne ,(Debian и FreeBSD)93 Korn , MirBSD Korn ,(FreeBSD , OpenBSD и Debian)PD Korn,(FreeBSD и Debian)Almquist и Watanabe все оболочки соответствовать в этом отношении и писать свои интерактивные подсказки в стандартную ошибку. Вы увидите отсутствие быстрого поведения со всеми из них.
Однако поведение ввода без эха намного сложнее:
exec
, и (, поскольку стандартная ошибка больше не является терминальным устройством ), не могут снова отключить его при вызове строки редактор для их следующего ввода. Таким образом, вы увидите, что дальнейший ввод, который вы вводите, будет отражен дисциплиной строки терминала, даже если вывод ввода из строкового редактора оболочки будет теперь перенаправлен на стандартную ошибку. Их построчные редакторы также ошибаются в некоторых тонкостях, например, не распознавая дальнейших изменений размера терминала. /dev/tty
напрямую, чтобы управлять такими вещами, как эхо терминала.. Им удается снова отключить эхо при вызове строкового редактора для следующего ввода. Таким образом, вы не увидите, что дальнейший ввод, который вы набираете, повторяется их линейными редакторами или дисциплиной терминальной линии. Оболочки BusyBox Almquist и Z не соответствуют POSIX в этом отношении. Оба они реализуют свои собственные линейные редакторы. С обоими вы увидите поведение, которое это приложение заставляет вас поверить.
/dev/tty
. Он дублирует дескриптор файла на терминальное устройство при запуске, и ZLE затем использует его для всего ; для повторения введенного текста, для чтения введенного текста, для записи интерактивных подсказок,и для включения и выключения эха терминала. Таким образом, на ZLE не влияет последующее перенаправление стандартной ошибки, вывода или даже ввода. Вы можете перенаправить все три на /dev/null
с помощью exec
, если хотите, и оболочка Z по-прежнему будет интерактивно запрашивать и получать ввод. (Оболочка Thompson не поддерживает командный механизм оболочки exec
, в первую очередь, потому что он предшествует -его изобретению.)
Вы должны пожаловаться автору Стефану Шазела, что это приложение неправильное, чтобы оно могло быть исправлено.