echo Hello World | nano - | less
Я хочу изменить Hello -> Goodbye в текстовом редакторе.
Это не должно быть с нано. Я застрял с нано чтения стандартного ввода, но требует, чтобы я записал в файл (запись в - создает файл с именем -)
echo Hello World | nano - | less
Я хочу изменить Hello -> Goodbye в текстовом редакторе.
Это не должно быть с нано. Я застрял с нано чтения стандартного ввода, но требует, чтобы я записал в файл (запись в - создает файл с именем -)
Ответы:
Пакет moreutils имеет отличную команду для этого, называется vipe
. Со страницы руководства:
SYNOPSIS
command1 | vipe | command2
DESCRIPTION
vipe allows you to run your editor in the middle of a unix pipeline and
edit the data that is being piped between programs. Your editor will have
the full data being piped from command1 loaded into it, and when you close
it, that data will be piped into command2.
По умолчанию используется editor
команда, которая обычно является символической ссылкой на редактор командной строки по умолчанию. Вы можете изменить это, изменив ссылку (используйте update-alternatives
в системах на основе Debian) или используя EDITOR
переменную окружения. Например, вы могли бы сделать:
echo Hello World | EDITOR=nano vipe | less
В противном случае, если конкретный текстовый редактор не имеет поддержки для такого рода вещей, я думаю, что вы застряли с созданием временного файла вручную, записав файл в него, запустив редактор, введя файл в остальную часть конвейера и удаление временного файла. Команда в vipe
основном позаботится обо всем этом. Это хорошо, но команда редко доступна по умолчанию.
Текстовый редактор joe (он же редактор Joe's ) делает то, что вы хотите.
Команда echo "hello world" | joe - | less
работает как положено, хотя по какой-то причине ей нужны кавычки.
Некоторые команды (например, gpg) выводят вывод, который не попадает в канал. Это портит начальный экран внутри joe, но нажатие ctrl + r - refresh - очистит все.
Если все, что вам нужно, это заменить «Hello» на «Goodbye» (или любую другую замену слов), вы можете избежать ручного редактирования в редакторе в пользу инструмента автоматического поиска и замены. Например, «sed» может делать такие замены, как это:
echo Hello World | sed 's/Hello/Goodbye/' | less
Проверьте "man sed" для более подробной информации.