Linux: Как мне правильно передать текст в программу? - PullRequest
1 голос
/ 07 февраля 2010

Я посмотрел, но ничего не могу найти. Например, программа TTS, которую я использую, позволяет вам делать следующее:

~#festival -tts | echo "I am to be spoken"

Что действительно хорошо, но для программ, которые я использую, например hexdump, я не знаю, как передать в него текст Я могу ДЕЙСТВИТЕЛЬНО использовать некоторые из этих вещей, некоторые примеры, которые я пробовал (но не удалось), выглядят так:

~#gtextpad < dmesg
      //(how do I put the contents into the text pad for display? not just into a file)
~#hexdump | echo "I am to be put into hexdump"
      //(How do I get hexdump to read the echo? It normally reads a file such as foo.txt..)

Ответы [ 4 ]

4 голосов
/ 07 февраля 2010

вот несколько способов передать текст в hexdump

STDIN:

echo "text" | hexdump

Здесь документ

hexdump <<EOF
text
EOF

для обработки всего файла

hexdump file
3 голосов
/ 07 февраля 2010

Поток данных в конвейере (последовательность команд, разделенных символами конвейера) течет слева направо. Таким образом, вывод команды 1 ниже поступает на ввод команды 2 и т. Д.

command1 |
command2 |
command3 arg1 arg2 arg3 |
sort |
more

Итак, чтобы получить вывод 'echo' в 'hexdump', используйте:

echo "I am to be dumped" | hexdump

Я не понимаю, как команда 'Festival', которую вы показываете, может работать. Оболочка выполняет достаточное количество операций, поэтому, не делая необоснованных предположений и не делая много скучных операций, а затем все еще полагаясь на планирование решений в ядре, чтобы все было «правильно», я не понимаю, как это можно заставить работать.

2 голосов
/ 14 июля 2013

На bash вы также можете сделать

hexdump <<< "Pipe this text into hexdump"
2 голосов
/ 07 февраля 2010

со страницы руководства hexdump(1):

Утилита hexdump представляет собой фильтр, который отображает указанные файлы или стандартный ввод, если файлы не указаны, в указанном пользователем формате.

Итак:

echo "I am to be put into hexdump" | hexdump
...