Comando wrap no prompt

Comando wrap no prompt

É possível inserir um separador após o comando em um prompt? Isto é um exemplo:

~/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:

Especificamente, quero adicionar a parte --------- após emitir um comando para distinguir mais facilmente o comando do resultado

Responder1

No zsh, você pode definir a função de ganchopreexecpara ecoar uma string especificada antes de cada comando ser executado.

No bash, você pode usar o DEBUGtrap para configurar um gancho pré-executivo para fazer o mesmo.

Você definiria uma função preexec() mais ou menos assim:

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

Veja mais detalhes emO bash tem um gancho que é executado antes de executar um comando?

Não acho que isso funcione em todas as versões do bash. No meu antigo servidor Ubuntu, executando o bash 3.2.39(1), help trapdiz

Se um SIGNAL_SPEC for DEBUG, ARG será executadodepoiscada comando simples.

Em outro servidor, executando o bash 4.1.2(1), diz

Se um SIGNAL_SPEC for DEBUG, ARG será executadoantescada comando simples.

é disso que precisamos. Portanto, certifique-se de que na sua versão do bash help trapesteja escrito "antescada comando simples."

Responder2

Se estiver usando bash ou ksh para seu shell, você pode criar uma função em um de seus dotfiles (.profile, .bash_profile, etc) assim:

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

Em seguida, você pode anexá-lo aos comandos sempre que desejar esse separador usando &&ou ;como separadores de comando. Como em:

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

ou

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

Eu faço isso. Tenho uma segunda função que também imprime um separador mais grosso.

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

Costumo usar essas funções em scripts de shell para fornecer separação entre diferentes partes dos scripts, como hr2entre tarefas principais e hrentre itens em uma instrução de loop. Isso torna a leitura da saída do script muito mais fácil.

informação relacionada