Envolver comando en el indicador

Envolver comando en el indicador

¿Es posible insertar un separador después del comando en un mensaje? Esto es un ejemplo:

~/Desktop: ls -al
-------------------------------------
total 80
drwx------+  6 eddie  staff   204B Apr 29 16:57 .
drwxr-xr-x+ 54 eddie  staff   1.8K Apr 30 10:54 ..

~/Desktop:

Específicamente quiero agregar la parte --------- después de emitir un comando para distinguir más fácilmente el comando del resultado.

Respuesta1

En zsh, puedes definir la función de enlace.preexecpara hacer eco de una cadena especificada antes de ejecutar cada comando.

En bash, puedes usar la DEBUGtrampa para configurar un gancho preejecutivo para hacer lo mismo.

Definirías una función preexec() algo como esto:

preexec () { echo "-------------------------------"; }
preexec_invoke_exec () {
    [ -n "$COMP_LINE" ] && return  # do nothing if completing
    preexec
}
trap 'preexec_invoke_exec' DEBUG

Ver más detalles en¿Bash tiene un gancho que se ejecuta antes de ejecutar un comando?

Sin embargo, no creo que esto funcione en todas las versiones de bash. En mi antiguo servidor Ubuntu, ejecutando bash 3.2.39(1), help trapdice

Si un SIGNAL_SPEC es DEBUG, se ejecuta ARGdespuéscada comando simple.

En otro servidor, ejecutando bash 4.1.2(1), dice

Si un SIGNAL_SPEC es DEBUG, se ejecuta ARGantescada comando simple.

que es lo que necesitamos. Así que asegúrese de que en su versión de bash help trapdiga "antescada comando simple."

Respuesta2

Si está utilizando bash o ksh para su shell, puede crear una función en uno de sus archivos de puntos (.profile, .bash_profile, etc.) de esta manera:

function hr {
    echo "--------------------------------------------------------------------------------"
}

Luego, puede anteponerlo a los comandos cuando desee que el separador use &&o ;como separadores de comandos. Como en:

bash-[534]$ hr && ls
--------------------------------------------------------------------------------
ddtool_23.jnlp  prtconf-pv

o

bash-[536]$ hr ; ls -la
--------------------------------------------------------------------------------
total 36K
drwxr-xr-x  2 tim staff    4 2012-12-06 15:02 ./
drwxr-xr-x 46 tim staff  134 2013-04-30 14:59 ../
-rw-------  1 tim staff 2.7K 2012-12-06 15:00 ddtool_23.jnlp
-rw-r--r--  1 tim staff  24K 2012-12-06 15:02 prtconf-pv

Hago esto. También tengo una segunda función que imprime un separador más grueso.

function hr2 {
    echo "================================================================================"
}

A menudo uso estas funciones en scripts de shell para proporcionar separación entre diferentes partes de los scripts, como hr2entre tareas principales y hrentre elementos en una declaración de bucle. Hace que la lectura del resultado del script sea mucho más fácil.

información relacionada