Entenda para que serve pushd, popd e dirs

Neste artigo vamos te ajudar a entender para que serve e como utilizar na prática os comandos pushd, popd e dirs.

Se você utiliza Linux ou Mac em algum momento precisou navegar entre os diretórios via terminal. O comando cd funciona perfeitamente para esta tarefa, ainda mais quando usado com argumentos que facilitam a navegação como cd .., cd -, cd ~, etc.

Embora este comando atenda a necessidade dos usuários, quando utilizado em um script pode causar confusão. Imagine que seu script precisa navegar em diversos diretórios, executar comandos e retornar aos diretórios anteriores. É possível usar o cd para isso? Sim. É a melhor alternativa? Vamos descobrir.

Teoria

Começando com a teoria, pushd, popd e dirs servem para manipular pilha de diretórios, mas relaxa, mais pra frente vai ficar mais claro.

  • pushd: Adiciona diretórios na pilha
  • popd: Remove diretórios da pilha
  • dirs: Lista diretórios da pilha

O pushd substitui o comando cd, deste modo, para trocar de diretório usa-se pushd <diretorio> e cada vez que este comando for executado o diretório será adicionado na pilha.

Por outro lado, o popd serve para fazer o oposto, ou seja, ele remove da pilha e acessa o diretório.

O dirs serve para mostrar quais diretórios estão na pilha.

Prática

Para começar abra o terminal e vá para /tmp, então crie 4 diretórios: dir-a, dir-a/dir-a1, dir-b, dir-b1

mkdir dir-a dir-a/dir-a1 dir-b dir-b/dir-b1

Agora vamos ao que interessa.

  1. Navegue pelos diretórios usando pushd:
pushd dir-a
pushd ../dir-b/dir-b1
pushd ../../dir-a/dir-a1
pushd ../../dir-b
  • Note que a cada comando pushd é exibido a pilha de diretórios atual e a pilha segue exatamente a mesma sequencia de navegação
  1. Liste a pilha de diretórios usando o comando dirs:
dirs

Ou seja, seguimos esta navegação, do último ao primeiro:

/tmp/dir-b <= Estamos aqui (último diretório acessado)

/tmp/dir-a/dir-a1

/tmp/dir-b/dir-b1

/tmp/dir-a

/tmp <= Diretórios inicial

  1. Agora vamos retornar nos diretórios navegados usando o popd:
popd

O último diretório foi removido da pilha e voltamos para o anterior:

/tmp/dir-a/dir-a1 <= Estamos aqui

/tmp/dir-b/dir-b1

/tmp/dir-a

/tmp <= Diretórios inicial

  1. A cada comando popd executado, um item é removido da fila e o diretório anterior é acessado. Faça isso até chegar em /tmp.
  1. Ao listar a pilha de diretórios verá que possui somente o diretório atual:

E se tentar executar o popd receberá mensagem informando que a pilhar de diretórios está vazia:

Utilizar o pushd e popd na linha de comando não é tão comum, entretanto utiliza-los em scripts é uma boa prática para evitar erros durante a execução. Quer saber mais? Confira nesta documentação.

Deixe um comentário

O seu endereço de e-mail não será publicado.