Faça comandos do Terminal OS X, digite BOLD

11

Eu gostaria de fazer com que os comandos que eu digitei (entrada) no terminal se destacem de toda a saída.

Por exemplo:

imac: ~ buster $ chmod -R gw myfolder
imac: ~ buster $ cd myfolder
imac: myfolder buster $ ls -l
total 0
drwxr-xr-x 9 root admin 306 abr 20 2010 bin
drwxr-xr-x 7 root admin 238 abr 20 2010 incluem
drwxr-xr-x 73 administrador de raiz 2482 18 de maio de 17:16 lib
drwxr-xr-x 6 administrador de raiz 204 20 de abril de 2010 man
imac: myfolder buster $ echo Go Giants!
Vão os gigantes!

negrito salta à mente, mas eu aceitaria uma cor ou até mesmo destacaria toda a linha ...

Tenho certeza de que há uma maneira de fazer isso, mas não é óbvio para mim ...

obrigado!

Meltemi
fonte

Respostas:

9

Edite seu ~/.bash_profileou ~/.bashrc(consulte o comentário de Gilles abaixo) e adicione as seguintes linhas:

BOLD="\[\033[1m\]"
OFF="\[\033[m\]"
PS1="${OFF}\u@\h:\w \$${BOLD}"
PS2="> ${BOLD}"
trap 'echo -ne "${OFF}" > $(tty)' DEBUG

Mova a ${BOLD}volta para tornar parte do prompt também em negrito. Se o prompt em si não deve ser colorido, você precisa do ${OFF}prefixo PS1, caso contrário, linhas vazias (pressionar enter sem escrever nada) tornarão o prompt em negrito (créditos para @Jay, obrigado novamente!)

Isso adiciona uma interceptação de depuração para desativar o formato negrito, por isso é um hack. Créditos (funciona sem o grupo tty no OS X).

Isso é um pouco complicado, então use-o por sua conta e risco.

Somente definir seus PS1/ PS2prompts para negrito seria mais fácil e igualmente visível:

BOLD="\[\033[1m\]"
OFF="\[\033[m\]"
PS1="${BOLD}\u@\h:\w \$${OFF}"
PS2="${BOLD}>${OFF} "
Daniel Beck
fonte
1
Não ~/.bash_profile, mas ~/.bashrc(ou ambos, se você não for .bashrcde .bash_profile). Essas configurações precisam ser definidas para cada instância interativa do bash e .bash_profilesão lidas apenas por shells de login.
Gilles 'SO- stop be evil'
Obrigado, vou editar minha resposta. Eu não tenho bashrc, então usei o que estava lá.
Daniel Beck
2
Eu descobri, coloquei um $ {OFF} na frente: PS1 = "$ {OFF} \ u @ \ h: \ w \ $$ {BOLD}"
Jay
1
@ Daniel: Não deve haver um sublinhado no ~/.bashrc.
Pausado até novo aviso.
1
Se eu usar a seta para cima quatro vezes seguidas, para percorrer o histórico de comandos, os 3 primeiros caracteres do comando antigo se tornarão parte do prompt e não haverá como removê-los. Não consigo excluí-los com a tecla backspace.
Jay
2

Eu tive um pequeno problema com as soluções aqui enquanto usava o El Capitan (especialmente no iTerm2, mas também no terminal antigo). Eu tenho dois tipos de erros:

  1. A capacidade de excluir completamente meu prompt do bash pressionando apenas espaço e depois retroceder
  2. Caracteres indesejados que chegam à minha saída do bash, por exemplo, a entrada pwdresultaria em

    \[\]/Users/home/Directory

    ou em

    \e[0m/Users/home/Directory

Proponho a seguinte solução, que é realmente apenas a mesma coisa.

    BOLD="\033[1m"
    OFF="\033[m"
    PS1="${OFF}\u@\h :${BOLD}"
    PS2="> ${BOLD}"
    trap 'echo -ne "${OFF}" > $(tty)' DEBUG
stpasta
fonte
Bom trabalho! Apenas algumas pequenas diferenças, mas estou feliz que você tenha descoberto uma maneira de isso funcionar com El Captain.
DrZoo