Refere-se a um item em 'dirs'

6

Eu uso pushd para trabalhar com vários diretórios em bash e zsh . Aliastei dirs para dirs -v para obter uma lista ordenada quando quiser ver o que está na pilha de diretórios:

chb$ dirs
0  /Volumes/banister/grosste_daever_gh/2013-03-27/reader
1  /tmp/20130618202713/Library/Internet Plug-Ins
2  ~/code/foo/view/static/css
3  ~/Downloads

Existe uma maneira (em bash ou zsh ) de me referir a um dos diretórios listados na linha de comando usando um alias para sua posição na pilha? Por exemplo, em vez de digitar:

chb$ cp ~/code/foo/view/static/css/baz.css ~/code/bar/view/static/css/

eu digitaria:

chb$ cp <2>baz.css ~/code/bar/view/static/css/

... ou algo como isso, talvez usando um cifrão e um nome de variável em vez de <n> .

    
por chb 26.06.2013 / 10:20

2 respostas

9

Bash expõe a pilha de diretórios no DIRSTACK variável . Você também pode usar o comando dirs +2 para se referir à segunda entrada na pilha.

Mais convenientemente, ~1 a ~9 referem-se às nove entradas mais importantes na pilha. Então, seu exemplo seria traduzido para

chb$ cp ~2/baz.css ~/code/bar/view/static/css/

Zsh tem a mesma ~ n instalação , e a pilha é exposta através de um array chamado dirstack . dirs +2 do Bash é print -r ~2 ou print -r $dirstack[2] do zsh.

    
por 26.06.2013 / 10:49
2

Sim, no bash:

cp $(dirs +2) ~/code/bar/view/static/css/

ou ainda mais simples:

cp ~2 ~/code/bar/view/static/css/
    
por 26.06.2013 / 10:41