echo Hello World | nano - | less
Quero modificar Olá -> Adeus enquanto estiver no editor de texto.
Não precisa ser com nano. Estou preso com o nano reading stdin, mas exigindo que eu escreva em um arquivo (gravar em - cria um arquivo chamado -)
echo Hello World | nano - | less
Quero modificar Olá -> Adeus enquanto estiver no editor de texto.
Não precisa ser com nano. Estou preso com o nano reading stdin, mas exigindo que eu escreva em um arquivo (gravar em - cria um arquivo chamado -)
Respostas:
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 editor
comando, que geralmente é apenas um link simbólico para o editor de linha de comando padrão. Você pode mudar isso alterando o link (usado update-alternatives
em sistemas baseados no Debian) ou usando a EDITOR
variável ambiental Por exemplo, você poderia fazer:
echo Hello World | EDITOR=nano vipe | less
Caso contrário, se o editor de texto específico não tiver suporte para esse tipo de coisa, acho que você está preso à criação manual de um arquivo temporário, gravando o arquivo, executando o editor, inserindo o arquivo no restante do pipeline e removendo o arquivo temporário. O vipe
comando basicamente cuida de tudo isso. Isso é legal, mas o comando raramente está disponível por padrão.
O editor de texto joe (aka Joe's Own Editor ) faz o que você deseja.
O comando echo "hello world" | joe - | less
funciona conforme o esperado, embora precise de aspas por algum motivo.
Alguns comandos (como gpg) produzem uma saída exibida que não entra no canal. Isso corrompe a exibição inicial dentro de joe, mas pressionar ctrl + r - refresh - limpará as coisas.
Se tudo o que você deseja é substituir "Olá" por "Adeus" (ou qualquer outra substituição de palavra), você pode evitar a edição manual em um editor em favor da ferramenta de pesquisa e substituição automática. Por exemplo, "sed" pode fazer substituições como esta:
echo Hello World | sed 's/Hello/Goodbye/' | less
Verifique "man sed" para mais detalhes.