Как передать вывод одного эха на вход другого?
Я пытаюсь следующее
echo 5 | echo
но ничего не получите. Что случилось?
1 ответ
Такие команды как grep
а также awk
может принимать стандартный ввод (STDIN) в качестве параметра или аргумента, используя канал. Тем не менее, другие, такие как cp
а также echo
игнорировать стандартный поток ввода и полагаться исключительно на аргументы, найденные после команды.
Используя команду xargs
вы можете создавать и выполнять командные строки из стандартного ввода, например, в вашем случае:
echo 5 | xargs echo
Не существует точного правила, чтобы узнать, принимает ли команда стандартный ввод, однако вы можете иметь небольшое представление, используя эти два правила:
Если команда используется для манипулирования содержимым файла (
grep
,sed
,awk
и т. д.), то обычно он может принимать данные от STDIN.Если команда используется для манипулирования самим файлом (например,
mv
,rm
,cp
) или процесс (например,kill
,lsof
) или вернуть информацию о чем-либо (например,top
,find
,ps
) тогда это не так.