Me gustaría saber cómo reutilizar la última salida de la consola, es decir:
pv-3:method Xavier$ python -c "from distutils.sysconfig import get_python_lib; print get_python_lib()"
/Library/Python/2.6/site-packages
pv-3:method Xavier$ cd **LASTOUTPUT**
shell
command-line
io-redirection
método de acción
fuente
fuente
/dev/tty
, pero debería ser posible capturar cualquier cosa enviadastdout
aostderr
, lo que podría ser adecuado.Respuestas:
Asumiendo bash:
fuente
`backtick-commands`
!cd $(dirname $(which python))
¡aquí vengo!Aún no mencionado, use una variable:
fuente
cd $dir
Todas las demás soluciones implican modificar su flujo de trabajo o ejecutar el comando dos veces, lo que podría no ser adecuado si tarda mucho tiempo en ejecutarse o no es repetible (por ejemplo, elimina un archivo; volver a ejecutarlo produciría un resultado diferente).
Así que aquí hay una idea más complicada si la necesita:
.bashrc
bash prompt
Esto tiene algunos problemas, por lo que solo se entiende como un punto de partida. Por ejemplo, el archivo de salida (
~/<pid>.out
) puede crecer mucho y llenar su disco. Además, todo su caparazón podría dejar de funcionar sitee
muere.Podría modificarse para capturar solo la salida del comando anterior usando
preexec
yprecmd
ganchos en zsh, o una emulación de ellos en bash, pero eso es más complicado de describir aquí.fuente
tee
de las señales (intente presionarCtrl+C
y ejecutar algunos comandos más). Use lascript
utilidad que no tiene ninguno de estos problemas.Un borrador de trabajo para una concha tradicional:
Ahora podemos pasar la pantalla a un archivo. Necesita sudo.
A propósito
screendump
: el llamado programa ya no funciona para mí. Tal vez solo para núcleos más antiguos. / dev / pts / N tampoco funcionó para mí. Tal vez tenga que usar algún MKDEV opcional en / dev. Recuerdo oscuramente algunos/dev/cuaN
, pero puedo estar equivocado.Nos gustaría canalizar la salida en lugar de usar screen.dump. Pero de alguna manera no funciona, a veces espera ENTER.
La captura no es un archivo de texto normal con saltos de línea, sino con, por ejemplo, 80x50 caracteres en una secuencia.
Para elegir las últimas 2 líneas, 1 para la salida del comando y una para la línea de aviso, la revierto, escojo 160 caracteres, revierto nuevamente y escojo 80.
Por si alguna vez te has preguntado, ¿por qué hay un
rev
programa?Crítica:
El primer diagrama está hecho con explicar.py
fuente
alias tee2tty='tee $(readlink /proc/$$/fd/1)'
Prueba esto:
fuente
Entonces, aquí hay una respuesta:
Si está ejecutando bajo X, seleccione el resultado que desea con el mouse para copiarlo y luego haga clic con el botón central para pegarlo.
Si está ejecutando en una consola de texto, puede hacer algo similar con gpm .
fuente
(Desafortunadamente, no es una respuesta que funcione, pero sigue siendo algo curioso. Alguien interesado podría intentar completar la implementación de la función que le voy a contar).
En el
eshell
interior de Emacs, querían tener esa característica, pero no está implementada de manera completa (lo que, sin embargo, se refleja en la documentación ).Por ejemplo:
Verá, solo la salida de los builtins se puede capturar en la
$$
variable.Pero bueno, algo de programación elisp (cf.
eshell-mark-output
implementación en "esh-mode.el"), y podría implementar una función que "marca" la última salida y la devuelve como el resultado de la función; para que pueda usar esa función en un comando eshell que está solicitando: las funciones elisp se pueden usar en comandos eshell con la sintaxis elisp habitual, es decir, entre paréntesis, como este:fuente
Si se da cuenta de que va a querer reutilizar la salida antes de presionar Enter, puede guardarla en una variable: agregue
tmp=$(
al principio de la línea y)
al final. (Esto elimina cualquier línea en blanco al final de la salida del comando, y de hecho elimina cualquier nueva línea final; esto rara vez importa).Si su shell es ksh o zsh, aquí hay una función útil que puede usar para hacer esto más automático. (No es de ayuda en bash porque requiere que el último comando en una tubería se ejecute en el shell principal, que es solo el caso en ksh (no pdksh) y zsh).
Úselo de esta manera:
fuente
(sobre la base de la respuesta de 4485 )
Eso es mucho escribir, así que crea un alias:
Entonces simplemente llame
cd $(python -c ... | tee2tty)
Por supuesto, esto requiere que ya sepa lo que quiere hacer con la salida, pero tiene la ventaja de llamar al comando solo una vez.
fuente
Hará el truco.
Lea aquí para más detalles: Sustitución de comandos .
fuente
Hay una mejor solución:
Simplemente imprima
!!
después del comando ejecutado y obtendrá resultados repetidos.P.ej
Original:
https://askubuntu.com/questions/324423/how-to-access-the-last-return-value-in-bash
fuente
!!
no repite el resultado del último comando, vuelve a ejecutar el último comando. Sijot -r 1 0 1000
devuelve un solo número aleatorio entre 0 y 1000, entonces, después de ejecutar ese comando una vez y obtener539
, la ejecución!!
probablemente dará algún otro número.!!
También puede ser indeseable si el comando anterior tarda mucho tiempo en ejecutarse o repite una operación que no debe repetirse (como cambiar un archivo).