El paquete moreutils tiene un gran comando para hacer esto, llamado vipe
. Desde la página del 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.
De forma predeterminada, esto usará el editor
comando, que generalmente es solo un enlace simbólico al editor de línea de comando predeterminado. Puede cambiar esto alterando el enlace (uso update-alternatives
en sistemas basados en Debian) o usando la EDITOR
variable de entorno. Por ejemplo, podrías hacer:
echo Hello World | EDITOR=nano vipe | less
De lo contrario, si el editor de texto en particular no tiene soporte para este tipo de cosas, creo que está atrapado en la creación manual de un archivo temporal, escribir el archivo en eso, ejecutar el editor, ingresar el archivo al resto de la tubería y eliminando el archivo temporal. El vipe
comando básicamente se encarga de todo esto. Esto es bueno, pero el comando rara vez está disponible por defecto.