A veces, cuando ejecuto comandos, no muestra una salida, por lo que no estoy seguro de si han funcionado o no. ¿Es posible hacer que todos los comandos tengan retroalimentación si se han ejecutado correctamente o no? O, como mínimo, para mostrar la identificación de comentarios que han ejecutado (correctamente o no)
command-line
rajlego
fuente
fuente
cryptsetup
puede omitir de manera predeterminada algunos mensajes de error. Es algo bueno tener$?
en tuPS1
. El siguiente paso es agregar también la hora actual, para conocer siempre los tiempos de los comandos;)Respuestas:
(Creo que ya que está publicando dentro de Ask Ubuntu , podemos suponer que está hablando del shell predeterminado, es decir, Bash ).
Hay una muy buena respuesta en la pregunta de desbordamiento de pila en un script de shell: los comandos de echo echo a medida que se ejecutan (esta no es solo una solución específica de Ubuntu).
Lo que debe hacer es usar el comando set para activar verbose o xtrace.
le dará una lista de los parámetros actuales se cambian a en o fuera .
o la versión de formato largo:
a su vez, verbosa EN .
Sin embargo, creo que lo que quieres es en realidad xtrace. Esto no solo hará eco de cada comando que ejecute, sino que también ampliará los parámetros y le dará más comentarios. Entonces, si hago algo tan tonto como escribir 'hola' en la terminal, obtendré el eco de lo que escribí, así como un informe / seguimiento de lo que hizo el shell para intentar ejecutar el comando 'hola' (vea la captura de pantalla a continuación ):
Para habilitar xtrace:
o:
Para deshabilitar estos parámetros, usted (contra-intuitivamente) llama a los mismos comandos excepto con un símbolo más + en lugar de un guión o un símbolo menos, así, por ejemplo:
a su vez, verbosa OFF , parecida:
a su vez, xtrace OFF .
Una guía detallada sobre las opciones de shell se encuentra en el Capítulo 33. Opciones, Guía avanzada de secuencias de comandos Bash .
fuente
whoami >/dev/null
.Para verificar si algún comando funcionó correctamente o no, puede verificar el estado de retorno , dado por
$?
, del comando anterior con:Un estado de retorno de
0
significa que el comando se completó con éxito, mientras que una salida distinta de cero ( código de error ) significaría que se encontraron algunos problemas o hay un error y la categoría se puede conocer a partir del código de error. Los códigos de error de Linux / C se definen en/usr/include/asm-generic/errno-base.h
y/usr/include/asm-generic/errno.h
.También en bash,
.bashrc
define un aliasalert
que se puede usar para notificar con el estado de finalización. Tendría que adjuntar el alias con el comando o combo de comandos como este:Puede agregar la siguiente línea de código a su
~/.bashrc
archivo para mostrar el estado de retorno del último comando ejecutado.(abra el archivo
~/.bashrc
con el editor de texto de su elección, y copie la línea anterior, péguelo en el archivo y guárdelo. Inicie una nueva instancia del terminal, y debería tenerlo en acción. O en su lugar podría definir alguna función y usar con loPS1
que se ilustra a continuación.)una pequeña demostración:
Solo jugando con
PS1
:) ..un poco más,(puede modificar la función para que sea más elegante, algo como lo hace @gronostaj en su publicación).
fuente
PS1
. Este es el que uso, con número rojo en caso de errores, nada extra si el último comando tuvo éxito:\[\033[01;41;37m\]${?#0}\[\033[00;01;36m\] \u@\h:\w\[\033[00m\]\$
~/.bashrc
archivo fuente ?^_^
el éxito y un rojox_x
por cualquier otra cosa.Puede cambiar su símbolo del sistema para mostrar un signo de marca verde cuando el comando anterior sale con 0 y X roja de lo contrario. Arch Linux Wiki tiene un buen código para agregar a su
bash.rc
:(He inhabilitado el código de error real porque no me gusta, si desea ver los códigos exactos simplemente eliminar
#
de esta línea:#PS1="$White\$? "
)Así es como se ve:
fuente
Sí , es posible obtener comentarios para cada comando que ejecutó en el terminal. Funciona sobre la base de lo
echo $?
cual devuelve 0 para completar con éxito el comando y cualquier otro valor que no sea 0 para el fallo.Para obtener los comentarios de éxito o fracaso, agregue la siguiente línea al
~/.bashrc
archivo.Y luego el
~/.bashrc
archivo fuente para que funcione.Explicación:
Para cada comando que ejecutó en el terminal, este
;if [[ $? == 0 ]]; then tput setaf 6 && echo SUCCESS; tput sgr0; else tput setaf 1 && echo FAILURE; tput sgr0; fi;
código se vinculará automáticamente .Ejemplo:
fuente
bind 'RETURN: " && echo SUCCESS || echo FAILED \n"'
también hará lo mismo, no necesita verificar[[ $? == 0 ]]
explícitamente.