Alias para “cd” que mostra o diretório atual toda vez que eu mudo de diretórios?

1

No tcsh, eu gostaria de um alias para pwd depois de eu cd em um diretório diferente.

Anteriormente, usei o alias abaixo para isso, mas também alterou o prompt do shell para [current directory]> . Devido às necessidades do projeto, eu não posso fazer com que o prompt do shell mude mais, mas eu ainda quero que o caminho atual seja mostrado toda vez que eu cd .

alias cd 'cd \!* ; set cwd='pwd';pwd;set prompt=$cwd:t\ \!\>\ '

Eu tentei mexer no alias acima para remover o set prompt , mas não consegui que ele funcionasse (não entendo a sintaxe).

    
por dboatrig 12.08.2016 / 23:12

3 respostas

3

O seguinte funciona para mim:

alias cd 'cd \!*; set cwd='pwd'; pwd'

Isso substitui cd por um alias que executa três comandos:

cd \!*

que altera o diretório

set cwd='pwd'

que armazena o resultado de pwd na variável cwd e, finalmente,

pwd

que imprime o diretório atual.

O segundo comando não é mais útil porque o prompt não precisa dele, então você pode simplificar isso para

alias cd 'cd \!*; pwd'

ou melhor ainda,

alias cd 'cd -p \!*'

que usa a opção -p para imprimir o diretório resultante.

(Observe que, em tcsh , você pode especificar %/ ou %~ no prompt para obter o diretório de trabalho atual, em vez de armazená-lo em uma variável. %/ fornece o caminho completo em todos os casos, %~ simplifica usando ~ quando possível.

    
por 12.08.2016 / 23:25
2

Em tcsh , você pode definir o alias especial cwdcmd gancho que é invocado toda vez que o diretório de trabalho atual é alterado:

alias cwdcmd pwd

zsh copiou esse conceito (usando uma função hook ao invés de alias ( tcsh não tem função)):

chpwd() pwd

Em qualquer caso, se você quiser que seu prompt tenha o componente à direita do diretório de trabalho atual, você não precisa de nada parecido.

set prompt='%c !> '

seria o suficiente. Observe também que tcsh já define a variável $cwd sozinha, não é preciso configurá-la manualmente em% al_de% alias.

    
por 13.08.2016 / 17:49
0

Outra alternativa pode ser usar rprompt , isso funciona exatamente como o prompt, mas no lado correto :

por exemplo. com set rprompt="%~" :

% cd /usr/local/bin/                                       ~
% echo Hello                                               /usr/local/bin
Hello
%                                                          /usr/local/bin

Você também pode usar seu alias - qualquer coisa que funcione para prompt deve funcionar para rprompt .

Não sei se isso satisfaz suas "necessidades de projeto", que impedem que você altere o prompt normal, mas talvez seja uma opção.

    
por 13.08.2016 / 23:38

Tags