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!

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} "

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

Bom trabalho! Apenas algumas pequenas diferenças, mas estou feliz que você tenha descoberto uma maneira de isso funcionar com El Captain.
DrZoo
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.