Como posso obter o Terminal.app no OS X para exibir o diretório atual em sua janela ou título da guia?
Estou usando o shell bash.
macos
bash
terminal
terminal.app
kareman
fonte
fonte
Respostas:
Depende do seu shell.
Este artigo exibe vários métodos.
Pessoalmente, uso o zsh, que possui uma conveniente função precmd (), que é executada antes de cada prompt.
Embora as outras perguntas listem métodos bash, eles também apelidam de cd. O Bash fornece um método inerente que encadeia apenas o prompt.
fonte
~/.profile
arquivo (ou equivalente) na máquina remota.Copie e cole no arquivo ~ / .profile:
PROMPT_COMMAND="echo -ne \"\033]0;${PWD##*/}\007\"; $PROMPT_COMMAND"
Isso definirá o título da guia atual do terminal com o nome da pasta em que você está (NÃO o caminho inteiro).
Então ...
Developer/Applications/Utilities/Bluetooth/
torna-se =>Bluetooth
fonte
No Mac OS X Lion 10.7, o Terminal possui uma seqüência de escape explícita para definir o diretório de trabalho, que o Terminal exibe usando o ícone "proxy" da janela padrão. Isso permite que você clique com a tecla Command pressionada para ver o caminho, revelar no Finder ou arrastá-lo como qualquer outra pasta. Além disso, o Terminal pode usar isso para criar outro terminal no mesmo diretório e restaurar o diretório de trabalho ao sair / reiniciar o Terminal (quando Continuar estiver ativado). Também permite restaurar diretórios para grupos de janelas.
É a mesma sequência de escape OSC (Comando do Sistema Operacional) dos títulos da janela e da guia, mas com o primeiro parâmetro definido como 7. O valor deve ser um URL "file:", que permite caracteres especiais de codificação percentual para que ele possa manipular todos os nomes de caminho válidos. Você também deve incluir o nome do host para que o Terminal possa determinar se é um diretório local; O Terminal evitará usá-lo como o diretório de trabalho atual, se for de um host diferente.
Em uma nota relacionada, o Terminal também suporta a configuração do "arquivo representado" usando a sequência de escape OSC com um parâmetro 6. Se definido, o ícone do proxy exibirá isso em vez do diretório de trabalho. Por exemplo, eu tenho o emacs e menos configurado para refletir o arquivo / buffer atualmente exibido no ícone do proxy. Isso permite que esses programas baseados em tty sejam mais integrados ao sistema operacional circundante.
Os comportamentos do diretório de trabalho são ativados por padrão para o bash (o shell padrão no Mac OS X). Veja / etc / bashrc para o código relevante.
Também vale a pena mencionar que o Lion Terminal agora suporta a configuração do título da guia independentemente do título da janela usando a sequência de escape do OSC.
fonte
update_terminal_cwd
função definirá o ícone do proxy para o diretório de trabalho atual. Por padrão$PROMPT_COMMAND
éupdate_terminal_cwd
.Além de recomendar o uso da sequência de escape de comando do sistema operacional específica do Apple Terminal:
ESC ] Ps ; Pt BEL
ondePs
é7
ePt
é umfile:
URL; vale a pena acrescentando que no Mac OS X 10.11 (e provavelmente desde 10,7) há um arquivo/etc/bashrc_Apple_Terminal
(não editável sob 10.11) que define o convenienteupdate_terminal_cwd()
como (sem os comentários):Você também pode usar isso em suas caixas remotas, caso esteja pensando em fazê-lo e depois coçando a cabeça para codificar corretamente o URL do arquivo no bash.
E se você mudar
PROMPT_COMMAND
por conta própria.bash_profile
ou.bashrc
se esquecer de ligar para isso. No mesmo arquivo, eles mostram um exemplo de encadeamento um pouco melhor com:Pessoalmente,
.bash_profile
eu queria adicionar o prompt do git, então fiz isso:fonte
As soluções Bash que envolvem PS1 e PROMPT_COMMAND falham se o diretório tiver caracteres Unicode (pelo menos no Snow Leopard). A melhor solução que eu consegui foi fazer o equivalente a
Infelizmente, isso não funciona diretamente, então, em vez disso, defini uma função shell para fazer a
tr
chamada:Isso funciona bem para acentos latinos, que estarão no Unicode NFD (os acentos desaparecerão, mas o caractere latino subjacente permanecerá).
Infelizmente, falhará completamente em coisas como o chinês.
fonte
Supondo que você esteja usando o Terminal MAC padrão, você pode usar o seguinte no .profile, já que "set_prompt" por si só pode enviar você para a pasta raiz quando você abre uma nova guia:
fonte
Digite isso no seu arquivo ~ / .profile ou equivalente:
A primeira linha contém dois caracteres especiais que não podem ser copiados / colados, mas você pode fazer o download do texto aqui: http://blog.nottoobadsoftware.com/files/setterminaltitle.sh .
fonte
echo
useprintf
, que permite expressar esses caracteres (ESC e BEL / Control-G) com seqüências de escape:printf '\e]0;$@\a"