O pacote moreutils tem um ótimo comando para fazer isso, chamado vipe
. Na página do manual:
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.
Por padrão, isso usará o comando editor
, que geralmente é apenas um link simbólico para o editor de linha de comando padrão. Você pode alterar isso alterando o link (use update-alternatives
em sistemas baseados no Debian) ou usando a variável EDITOR
environment. Por exemplo, você poderia fazer:
echo Hello World | EDITOR=nano vipe | less
Caso contrário, se o editor de texto em particular não tiver suporte para esse tipo de coisa, acho que você está preso criando manualmente um arquivo temporário, gravando o arquivo, executando o editor, inserindo o arquivo no restante o pipeline e removendo o arquivo temporário. O comando vipe
basicamente cuida de tudo isso. Isso é legal, mas o comando raramente está disponível por padrão.