Pilha de Diretórios (comandos pushd, popd e dirs)

A Pilha de Diretórios é um recurso do GNU Bash voltado para facilitar a navegação e manipulação de diretórios. É um recurso onde o usuário pode criar "atalhos" dentro de uma pequena base de diretórios que podem ser facilmente acessados ou referenciados dentro de uma seção do shell. Devido a grande popularidade do GNU Bash vale a pena conhecer esse recurso.

[ Hits: 20.438 ]

Por: Jeremias Alves Queiroz em 07/01/2016


A pilha de diretório e as Expansões do Shell



Além de servir para a movimentação do cursor a pilha de diretórios pode ser utilizada em conjunto com o recurso de expansões do shell, mais especificamente nas Expansões de Til.

No uso padrão do til ele sempre expandirá para o diretório /home do usuário corrente, porém ao adicionar um sinal de +N ou -N o til irá expandir para o elemento correspondente na pilha de diretórios em qualquer comando onde seja necessário passar um caminho de diretório como argumento.

Tome como exemplo a seguinte pilha de diretórios

Ex.:

user@linux:/etc$ dirs
/etc /usr/share/doc /var/log /etc ~

Vamos tentar criar um arquivo no elemento +2.

Ex.:

user@linux:/etc$ touch ~+2/teste
touch: não foi possível tocar "/var/log/teste": Permissão negada

Note que o comando tentou criar um arquivo exatamente no segundo elemento a pilha de diretórios, só não o fez devido a falta de permissão de escrita para o usuário.

Nesse próximo exemplo vamos listar o conteúdo do diretório que consta no elemento -3.

Ex.:

user@linux:/etc$ ls -d ~-3/*/
/usr/share/doc/aac-enc/
/usr/share/doc/abntex/
/usr/share/doc/account-plugin-google/
/usr/share/doc/accountsservice/
/usr/share/doc/acl/
/usr/share/doc/acpid/

Outro ponto interessante é que é possível omitir o sinal de "+" (como na matemática) quando utilizamos a expansão por til. Assim os comandos utilizando a forma positiva de posicionamento ficam mais simples.

Ex.:

user@linux:/etc$ cd ~2
user@linux:/var/log$

Interessante notar pelo comando acima que através da expansão de til é possível utilizar também o comando interno "cd" para navegar entre os diretórios da pilha.

Página anterior     Próxima página

Páginas do artigo
   1. Introdução
   2. A pilha de diretórios e seus comandos - pushd
   3. A pilha de diretórios e seus comandos - dirs
   4. A pilha de diretórios e seus comandos - popd
   5. A pilha de diretório e as Expansões do Shell
   6. Conclusão
Outros artigos deste autor

Mais desempenho no GNU Emacs com o YASnippet

Leitura recomendada

Guia pós-instalação do Slackware - edição 2013

Porque se aventurar no Linux

Introdução ao Linux: Instalação do Xubuntu

MOVIX: a fantástica mini-distribuição Multimídia

Usando direcionadores de fluxo

  
Comentários
[1] Comentário enviado por fabio em 07/01/2016 - 07:53h

Excelente artigo, favoritado! Já estou inclusive usando. Fiz assim no meu ~/.bashrc:

#definindo pilha - diretorios mais usados
pushd dir1
pushd dir2
...
pushd dir8
cd

Daí quando abro um terminal já tenho a pilha definida com meus principais diretórios e a partir de agora passarei a navegar com "cd ~[numero]". Show de bola!

[2] Comentário enviado por danniel-lara em 07/01/2016 - 09:54h

Parabéns muito bom mesmo

[3] Comentário enviado por azk em 07/01/2016 - 14:45h

excelente artigo, de fato!
como o Fabio fez, tbm estou fazendo....

[4] Comentário enviado por Arthur_Hoch em 07/01/2016 - 23:21h

Estou usando.
Valeu!!!

Para criar arquivos é melhor utilizar " $ >" do que "$ touch":
[arthurhoch@halt ~]$ time > oi
real 0m0.000s
user 0m0.000s
sys 0m0.000s
[arthurhoch@halt ~]$ rm oi
[arthurhoch@halt ~]$ time touch oi
real 0m0.047s
user 0m0.000s
sys 0m0.000s

[5] Comentário enviado por luiztux em 08/01/2016 - 13:09h

Excelente!
Parabéns pelo ótimo artigo. Carecíamos de informações assim.


[6] Comentário enviado por removido em 13/01/2016 - 23:45h

Parabéns. Realmente há poucas fontes e faz um tempo que queria aprender isto.

----------------------------------------------------------------------------------------------------------------
http://24.media.tumblr.com/tumblr_m62bwpSi291qdlh1io1_250.gif

# apt-get purge systemd

Encryption works. Properly implemented strong crypto systems are one of the few things that you can rely on. Unfortunately, endpoint security is so terrifically weak that NSA can frequently find ways around it. — Edward Snowden


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts