Como usar pushd e popd no Linux

Conteúdo

Uma janela de terminal em um desktop Linux estilo Ubuntu.

Muitas pessoas do Linux nunca ouviram falar pushd e popd, mas eles estão por aí desde sempre. Eles também podem acelerar drasticamente o procedimento de navegação do diretório da linha de comando.. Vamos mostrar a você como usá-los.

O que são pushd e popd?

Uma das inovações Bill Joy construído em seu 1978 C Shell era o conceito de uma pilha de diretório e os meios para manipulá-la: pushd e popd. Imitação é a mais sincera forma de elogio, a pilha de diretórios, pushd, e popd logo eles foram incorporados a outras conchas (como Bash) e até mesmo para outros sistemas operacionais.

O conceito de pilha é simples. Os itens são colocados na pilha um ao mesmo tempo, e o item adicionado mais recentemente sempre ocupa a primeira posição. Quando os itens são recuperados da pilha, são eliminados, uma ordem, de cima até embaixo. Pilhas desta natureza são frequentemente chamadas de Ultimo a entrar primeiro a sair (UEPS) colas.

Verdadeiramente, pushd e popd eles são um pouco mais flexíveis do que isso, mas este é um bom modelo para prestar atenção agora.

Como nos referimos a uma pilha de diretório, probablemente no sorprenda que la “d” sobre pushd e popd Isso significa “diretório”. Estes comandos permitem inserir diretórios ou removê-los 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 tivesse usado cd.
  • O nome do diretório e o caminho são adicionados à pilha.
  • A pilha é exibida como uma lista de diretórios separados por espaço.

Nos exemplos a seguir, observe a pilha de diretórios crescer a cada novo pushd comando. Observe também que o topo da pilha está à esquerda; é aqui que as novas entradas aparecem.

Depois do primeiro pushd comando, existem duas entradas na pilha: o diretório que você deixou e o que mudou.

Para nosso exemplo, nós escrevemos o seguinte:

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

O último pushd O comando nos levou de volta ao nosso diretório inicial, então a primeira e a última entrada na pilha são o til (~), que representa nosso diretório home. Isto mostra que, mesmo que um diretório já esteja na pilha, será adicionado novamente para outros pushd comandos.

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

O comando dirs

Você pode usar o dirs comando, como é mostrado a seguir, para exibir a pilha de diretórios:

dirs

Não afeta a pilha, apenas a amostra. Algumas das alternativas que você pode usar com pushd verifique a posição dos diretórios na pilha.

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

dirs -v

Se você preferir ver o caminho escrito para o seu diretório pessoal em vez do til (~), Adicione o -l (formato longo) opção, Então:

dirs -v -l

Adicione um diretório à pilha

Como nós vimos, quando você usa o pushd comando, faz três coisas: mude seu diretório, adicione o novo diretório à pilha e mostre a pilha para você. Você pode usar o -n (sem rotação) adicionar um diretório à pilha sem alterar o diretório atual.

Aqui está nossa pilha de diretórios:

dirs -v -l

Agora, nós vamos usar o pushd comando com a opção -n e pas no /home/dave diretório como parâmetro. Depois de, vamos verificar a pilha de diretórios novamente.

Nós escrevemos o seguinte:

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

a /home/dave O diretório foi adicionado à pilha no slot 1, qual é o segundo lugar na pilha. Não pode estar na posição superior porque o slot zero é sempre o diretório atual.

Não saímos do diretório atual, ~/Videos, então 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 pushd para mover para qualquer diretório em uma pilha, e a pilha gira quando isso acontece. O diretório que você escolheu para mover torna-se a primeira entrada na pilha.

Refere-se aos diretórios na pilha por seu número de posição. Pode contar a partir do topo ou da base da pilha. Para números positivos, O que +3, conte de cima; para números negativos, O que -2, contagem regressiva.

Diretório / casa / Dave / Documentos está na posição três. Podemos usar o seguinte comando para mover esse diretório:

pushd +3

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 primeira posição e nos movemos para esse diretório.

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

pushd -0

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

O comando popd

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

Se olharmos para a pilha de diretórios, podemos ver que o diretório na posição 1 isto é /home/dave. Para limpar isso da pilha, escrevemos o seguinte para passar o número para popd:

dirs -v -l
popd +1

a /home/dave diretório foi removido, e aqueles que estavam abaixo dele na pilha subiram um lugar.

Da mesma forma que podemos com pushd, podemos contar do fundo da pilha com popd. Para deletar o último diretório da pilha, nós escrevemos:

popd -0

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

Para mudar o diretório, faça algo e depois volte para o diretório anterior, você pode usar pushd e popd juntos.

Usaremos pushd para mover para um diretório diferente. Usaremos popd para soltar o diretório superior da pilha e mover para o diretório na segunda posição. Este é o diretório de onde você acabou de sair, então você retorna ao diretório em que estava originalmente.

Nós escrevemos o seguinte:

pushd ~
popd

Começamos no ~/Projects diretório, pushd para o diretório inicial, e posteriormente popd de volta a ~/Projects diretório.

Percorra 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 do sistema de arquivos.

Nosso nível mais profundo de aninhamento é:

/home / dave / Projetos / htg / artigos

Do diretório inicial, iremos descer progressivamente através de cada diretório até chegarmos ao diretório de posts. Depois de, veremos a pilha de diretórios.

Nós escrevemos o seguinte:

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

Quando é transmitido repetidamente pushd +1 comandos, pode fazer um loop indefinidamente na pilha de diretórios. Se você fizer isso frequentemente, pushd +1 seria um bom candidato para um apelido.

Escreva o seguinte:

pushd +1

RELACIONADO: Como criar aliases e funções de shell no Linux

Estampado na pilha

É fácil voltar aos velhos hábitos e usar cd mudar de diretório. Se isso acontecer, irá selar o primeiro diretório na pilha. Isso é inevitável, uma vez que o primeiro espaço é reservado para o diretório de trabalho atual; nenhum dos outros muda de posição.

Para fazer isso, escreva o seguinte:

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


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

É por isso que permanecemos na linha de comando. Rochas de eficiência, verdade?

RELACIONADO: 37 Comandos importantes do Linux que você deve conhecer

Assine a nossa newsletter

Nós não enviaremos SPAM para você. Nós odiamos isso tanto quanto você.