Como usar pushd e popd no Linux

Uma janela de terminal em um desktop Linux no estilo Ubuntu.
Fatmawati Achmad Zaenuri / Shutterstock

Muitas pessoas do Linux nunca ouviram falar pushde popd, mas eles estão por aí desde sempre. Eles também podem acelerar drasticamente o processo de navegação em diretórios na linha de comando. Orientaremos você sobre como usá-los.

O que são pushd e popd?

Uma das inovações que  Bill Joy incorporou em seu C Shell de 1978   foi o conceito de pilha de diretório e os meios para manipulá-la:  pushde popd. A imitação sendo a forma mais sincera de elogio, a pilha de diretórios pushd, e popdlogo foram incorporados a outros shells (como o Bash) e até mesmo outros sistemas operacionais.

O conceito de pilha é simples. Os itens são colocados na pilha um de cada vez, com o item adicionado mais recentemente sempre ocupando a posição superior. Quando os itens são recuperados da pilha, eles são removidos, em ordem, de cima para baixo. Pilhas dessa natureza são frequentemente chamadas de filas Último a entrar, primeiro a sair (LIFO).

Na verdade, pushde popdsão um pouco mais flexíveis do que isso, mas este é um bom modelo para se manter em mente por enquanto.

Como estamos nos referindo a uma pilha de diretório, provavelmente não é nenhuma surpresa que o “d” em pushde popdsignifique “diretório”. Esses comandos permitem que você coloque diretórios ou retire-os da pilha de diretórios.

Mas como isso nos beneficia?

Como pushd preenche a pilha

Quando você usa pushd, as seguintes três coisas acontecem:

  • Você muda o diretório como se o tivesse usado cd.
  • O nome e o caminho do diretório são adicionados à pilha.
  • A pilha é exibida como uma lista de diretórios separados por espaço.
Recomendado:  Como transmitir jogos ao vivo no YouTube

Nos exemplos a seguir, observe como a pilha do diretório aumenta com cada novo pushdcomando. Observe também que o topo da pilha está à esquerda – é aqui que as novas entradas aparecem.

Após o primeiro pushdcomando, há duas entradas na pilha: o diretório que você deixou e aquele para o qual você se mudou.

Para nosso exemplo, digitamos o seguinte:

pushd ~ / Desktop
pushd ~ / Music
pushd ~ / Documentos
pushd ~ / imagens
pushd ~

Os comandos "pushd ~ / Desktop," "pushd ~ / Music," "pushd ~ / Documents," "pushd ~ / Pictures," e "pushd ~" em uma janela de terminal.

O último pushdcomando nos levou de volta ao nosso diretório inicial, portanto, a primeira e a última entrada na pilha são o til ( ~), que representa nosso diretório inicial. Isso mostra que, embora um diretório já esteja na pilha, ele será adicionado novamente para outros pushdcomandos.

Observe também que a entrada mais à esquerda na pilha, que é a entrada adicionada mais recentemente, é o seu diretório atual.

O Comando dirs

Você pode usar o dirscomando, conforme mostrado abaixo, para exibir a pilha de diretórios:

dirs

Os "dirs" em uma janela de terminal.

Não afeta a pilha, apenas a exibe. Algumas das opções que você pode usar pushdreferem-se à posição dos diretórios na pilha.

Se você quiser ver a posição numérica de cada diretório, você pode usar a -vopção (vertical) conforme mostrado abaixo:

dirs -v

O comando "dirs -v" em uma janela de terminal.

Se você preferir ver o caminho por extenso para o seu diretório inicial em vez do til ( ~), adicione a opção -l(formato longo), assim:

dirs -v -l

O comando "dirs -v -l" em uma janela de terminal.

Adicionando um diretório à pilha

Como vimos, quando você usa o pushdcomando, ele faz três coisas: muda seu diretório, adiciona o novo diretório à pilha e exibe a pilha para você. Você pode usar a opção -n(sem rotação) para adicionar um diretório à pilha sem alterar o diretório atual.

Aqui está nossa pilha de diretórios:

dirs -v -l

O comando "dirs -v -l" em uma janela de terminal.

Agora, usaremos o pushdcomando com a opção -n e pas no /home/davediretório como parâmetro. Em seguida, verificaremos a pilha de diretórios novamente.

Recomendado:  Instagram Personal, Business e Creator Accounts: Qual é a diferença?

Nós digitamos o seguinte:

pushd -n / home / dave
dirs -v -l

Os comandos "pushd -n / home / dave" e "dirs -v -l" em uma janela de terminal.

/home/dave diretório foi adicionado à pilha no slot 1, que é o segundo lugar na pilha. Ele não pode ocupar a posição superior porque o slot zero é sempre o diretório atual.

Não saímos do diretório atual  ~/Videos, então ele não foi girado para outra posição na pilha.

Mudança de diretório girando a pilha

Você pode usar parâmetros numéricos com pushdpara mover para qualquer diretório em uma pilha, e a pilha gira quando você faz isso. O diretório que você escolheu mover se torna a primeira entrada na pilha.

Você faz referência aos diretórios na pilha por seu número de posição. Você pode contar a partir do topo ou do final da pilha. Para números positivos, como +3, conte a partir do início; para números negativos, como -2, conte a partir da parte inferior.

O diretório / home / dave / Documents está na posição três. Podemos usar o seguinte comando para mover esse diretório:

pushd +3

O comando "pushd +3" em uma janela de terminal.

Os diretórios na pilha acima do diretório que escolhemos são movidos para o final da pilha. Nosso diretório escolhido agora ocupa a posição superior e somos movidos para esse diretório.

Se quisermos mudar para o diretório na parte inferior da pilha, podemos usar o seguinte comando:

pushd -0

O comando "pushd -0" em uma janela de terminal.

O último diretório é movido para o primeiro slot e todos os outros são movidos para baixo na pilha. Mudamos para o ~/Picturesdiretório.

O comando popd

Você pode usar o popdcomando para remover diretórios da pilha.

Se olharmos para a pilha de diretórios, podemos ver que o diretório na posição 1 é /home/dave. Para removê-lo da pilha, digitamos o seguinte para passar o número para popd:

dirs -v -l
popd +1

Os comandos "dirs -v -l" e "popd +1" em uma janela de terminal.

O /home/davediretório foi removido e aqueles que estavam abaixo dele na pilha foram movidos uma posição para cima.

Recomendado:  Você deve mudar para uma câmera sem espelho?

Da mesma forma que podemos pushd, podemos contar a partir do final da pilha com popd. Para remover o último diretório da pilha, digitamos:

popd -0

O comando "popd -0" em uma janela de terminal.

O ~/Musicdiretório é removido da última posição na pilha.

Para alterar o diretório, faça algo e depois volte para o diretório anterior, você pode usar pushde popdjunto.

Usaremos  pushdpara mover para um diretório diferente. Usaremos popdpara descartar o diretório superior da pilha e mover para o diretório na segunda posição. Este é o diretório do qual você acabou de sair, então você retornou ao diretório em que estava originalmente.

Nós digitamos o seguinte:

pushd ~
popd

Os comandos "pushd ~" e "popd" em uma janela de terminal.

Começamos no ~/Projectsdiretório,  pushdno diretório inicial e, em seguida, de popdvolta ao ~/Projectsdiretório.

Girando por toda a pilha

Vamos ilustrar como girar em uma pilha com alguns diretórios aninhados, mas você pode usar qualquer diretório em qualquer lugar no sistema de arquivos.

Nosso nível mais profundo de aninhamento é:

/ home / dave / Projetos / htg / artigos

Do diretório inicial, desceremos progressivamente por cada diretório até chegar ao diretório de artigos. Em seguida, veremos a pilha de diretórios.

Nós digitamos o seguinte:

pushd ~ / Projetos
pushd htg
artigos pushd
dirs -v -l

Os comandos "pushd ~ / Projects," "pushd htg," "pushd articles" e "dirs -v -l" em uma janela de terminal.

Quando você emite pushd +1comandos repetidamente  , pode circular continuamente pela pilha de diretórios. Se você fizer isso com frequência,  pushd +1seria um bom candidato para um alias .

Digite o seguinte:

pushd +1

O comando "pushd +1" em uma janela de terminal.

Estampagem sobre a pilha

É fácil voltar aos velhos hábitos e usar cdpara mudar de diretório. Se você fizer isso, irá marcar o primeiro diretório da pilha. Isso é inevitável, pois o primeiro slot é reservado para o diretório de trabalho atual – nenhum dos outros muda de posição.

Para fazer isso, digite o seguinte:

dirs -v -l
cd ~ / música
dirs -v -l

Os comandos "dirs -v -l," "cd ~ / Music" e "dirs -v -l" em uma janela de terminal.


Depois de se acostumar com os comandos pushde popd(e, talvez, usá-los para criar alguns aliases), você terá uma maneira super rápida de pular entre os diretórios.

É por isso que perdemos a linha de comando . A eficiência é demais, certo?