csh - usuario - ¿cuál es la forma correcta de asignar la palabra "hello" a una variable?
Salida del último comando de shell (11)
¿Qué hay de usar la sustitución? Me gusta esto:
command1 command2 RESULT=`LASTCOMMAND` echo $RESULT
No hasta que llegue a la mitad de un script de compilación de 3 horas, recordaré que quiero ver algo al principio de la salida una vez que haya terminado. En este punto, he excedido el número de líneas en mi terminal, así que no puedo desplazarme hacia arriba para verlo (o el comienzo es difícil de encontrar). Por supuesto que puedo ser mejor para almacenar mi producción, pero siempre he tenido curiosidad si esto fuera posible.
En un shell de linux, es posible devolver la salida del último comando. Me doy cuenta de que podría haberlo canalizado o enviado la salida a un archivo, pero mi requisito es recuperar esa salida después de que se haya ejecutado el comando.
Usando csh, pero escucharía sobre cualquier caparazón.
Esta es una función de tu terminal. Debes enfocarte en crear una configuración donde no tengas que recordar hacer nada. Una posible solución es iniciar "pantalla" en su secuencia de comandos de inicio de sesión (que no es tan fácil de obtener) con el registro habilitado.
Esto podría ser muy complicado con ciertos comandos que usan direcciones de cursor. ¿Cuál es el resultado de tu sesión de vim? O un ejemplo un poco más sensato: estás descargando un archivo con wget, y muestra una barra de porcentaje que va del 0% al 100%. ¿Cuál es el resultado de eso?
Creo que básicamente quieres una copia impresa de cualquier cosa entre tu línea actual y el aviso anterior. Eso no es algo por lo que la redirección de shell sería un buen ejemplo, eso es básicamente algo que haría una terminal. Podrías hacerlo manualmente copiando y pegando en pantalla, y tal vez podrías automatizarlo con su comando exec . tmux podría tener algo similar, y puedes hacer cosas extrañas con los modos de shell de Emacs, pero esa es una solución bastante pesada. rxvt-unicode tiene una extensión perl ...
No. La salida de un programa nunca pasa por las manos del caparazón. Sin redirección, va directamente al TTY. Con la redirección, va directamente a cualquier archivo o tubería al que fue dirigido. El shell no tiene idea de lo que el proceso envió a stdout / stderr.
Puede ser que pueda usar el comando tee para poner la salida en STDOUT también en un archivo y luego usarlo.
Puedes ver el código de retorno del último comando, al menos en bash, con $?
.
Hasta donde llega el estándar, no creo que puedas.
Si busca puramente el código de retorno del último comando ejecutado, use echo $?
.
Por lo general, esto ayuda cuando quiere saber si su último comando se ejecutó correctamente y también puede moldearlo en su script de compilación para alertas pasa / falla.
Si ejecutar el comando nuevamente no cambiará nada, ¡puede usarlo! para acceder a la parte superior de la pila de historial para volver a ejecutar el último comando. Hacerlo en los puntos de apoyo le permitirá usar el resultado.
$> find . -iname fileInUnknownLocationInHierarchy.txt
./something/buried/deep/where/you/dont/want/to/retype/fileInUnknownLocationInHierarchy.txt
$> vim `!!`
Siempre puede ejecutar el proceso dentro de una ventana de shell de emacs. Guardará todo.
guardar salida como una variable?
bash: Output=$(ls); echo $Output
script(1)
es exactamente lo que necesita:
script
make
exit
vim typescript
El programa de script
iniciará un nuevo shell y guardará las entradas y salidas en el archivo de typescript
. Cuando haya terminado, simplemente cierre el caparazón con la exit
o ^D
Si prefieres no iniciar un nuevo shell sino simplemente ejecutar tu compilación, puedes usar: script -c <command>
.