GNU/Linux >> Tutoriales Linux >  >> Linux

¿Capture automáticamente la salida del último comando en una variable usando Bash?

Esta es una solución realmente complicada, pero parece funcionar principalmente algunas veces. Durante las pruebas, noté que a veces no funcionaba muy bien al obtener un ^C en la línea de comando, aunque lo modifiqué un poco para que se comportara un poco mejor.

Este truco es solo un truco de modo interactivo, y estoy bastante seguro de que no se lo recomendaría a nadie. Es probable que los comandos en segundo plano provoquen un comportamiento aún menos definido de lo normal. Las otras respuestas son una mejor manera de obtener resultados mediante programación.

Dicho esto, aquí está la "solución":

PROMPT_COMMAND='LAST="`cat /tmp/x`"; exec >/dev/tty; exec > >(tee /tmp/x)'

Establezca esta variable ambiental bash y emita los comandos que desee. $LAST normalmente tendrá el resultado que está buscando:

startide seth> fortune
Courtship to marriage, as a very witty prologue to a very dull play.
                -- William Congreve
startide seth> echo "$LAST"
Courtship to marriage, as a very witty prologue to a very dull play.
                -- William Congreve

No conozco ninguna variable que haga esto automáticamente . Para hacer algo además de copiar y pegar el resultado, puede volver a ejecutar lo que acaba de hacer, por ejemplo,

vim $(!!)

Donde !! es la expansión de la historia que significa 'el comando anterior'.

Si espera que haya un solo nombre de archivo con espacios u otros caracteres que puedan impedir el análisis de argumentos adecuado, cite el resultado (vim "$(!!)" ). Dejarlo sin comillas permitirá que se abran varios archivos a la vez, siempre que no incluyan espacios u otros tokens de análisis de shell.


Linux
  1. ¿Almacenar la salida del comando en la variable de Shell?

  2. ¿Usando una referencia a una variable de cadena Bash en Sed?

  3. Usando el comando de suspensión de Linux en Bash Scripts

  4. Uso del comando Linux Basename en Bash Scripts

  5. Usando la salida de comandos anteriores en bash

Cómo asignar la salida de un comando de Linux a una variable

Tutorial sobre el uso del último comando en la terminal de Linux

Usando el comando Dirname de Linux en Bash Scripts

pasar grep a una variable en bash

Código de salida de asignación de variables a sustitución de comandos en Bash

¿Redirigir la salida del comando de tiempo en Unix a una variable en bash?