Следующая команда работает для кодирования stdin с использованием echo:

echo "abc" | openssl enc -base64

Эта команда также работает для замены символов в stdin используя cat:

cat | sed 's/a/b/g'

Однако следующая команда, которая должна кодировать stdin с помощью cat , не отвечает моим потребностям, потому что она не отображает закодированное значение каждый раз, когда я нажимаю return.

cat | openssl enc -base64

Как я могу кодировать stdin на лету, используя cat?

2 ответа2

3

Если вы печатаете

cat | openssl enc -base64

и затем нажмите Ctrl+D, тогда он закодирует все, что вы только что набрали.

0

Прежде всего, вам (почти) никогда не нужно использовать cat | или cat  one_file  | ,  Например, ваш пример sed отлично работает как

sed 's/a/b/g'

Итак, мое первое предложение, что вы пытаетесь

openssl enc -base64

без cat .

Но, честно говоря, я не ожидаю, что это сработает. Вам может понадобиться немного поразвлечься:

while read x
do
      echo "$x" | openssl enc -base64
done

Обратите внимание, что при этом запускается новая команда openssl для каждой строки ввода, так что это может не дать таких же результатов, как один и тот же ввод через один вызов openssl .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .