Seja mais produtivo com Linux #1
Tags: linux, produtividade, terminal, bash
Published: 2020-05-05 19:01:57

---
title: Seja mais produtivo com Linux #1
published: true
description: 
tags: linux, produtividade, terminal, bash
cover_image: https://dev-to-uploads.s3.amazonaws.com/i/5odvac9yyq35pbmw6rwo.png
---


## `pushd`, `popd` e `dirs`

Esses três comandos servem para facilitar a sua navegação entre diretórios. Normalmente, usamos o comando `cd [caminho_do_diretorio]`, porém com os comandos `pushd`, `popd` e `dirs` podem agilizar e muito a navegação entre diretórios, pois cria um registro dos diretórios em forma de uma pilha _(stack)_.

Basicamente, os comandos funcionam da seguinte maneira: o comando `pushd` adiciona um diretório à pilha de diretórios. O comando `popd` remove o último diretório adicionado da pilha de diretórios, navegando até o diretório que estava posterior na pilha. Por último, o comando `dirs` mostra todos os diretórios na pilha.

## Exemplo

1. Navegue até o diretório `/tmp` e crie alguns diretórios para o exemplo:
    ```bash
    $ cd /tmp

    $ mkdir diretorio{0,1,2,3,4} ~> esse comando criará 5 diretórios
    ```

2. Veja quais diretórios estão na pilha usando o comandodirs e depois navegue até o `diretorio0` com o comando `pushd diretorio0`:
    ```bash
    $ dirs
    output: /tmp
    
    $ pushd diretorio0
    output: /tmp/diretorio0 /tmp
    ```

    > Note que toda vez que você adiciona ou remove um diretório da pilha, será mostrado o novo estado da pilha na tela.

3. Agora temos dois diretórios na pilha, se quisermos navegar até o `diretório1`, usamos novamente o comando `pushd` com o caminho (relativo ou absoluto):
    ```bash
    $ pushd /tmp/diretorio1
    output: /tmp/diretorio1 /tmp/diretorio0 /tmp
    ```

4. Para retornar ao `diretorio0` basta usarmos o comando `popd` e remover o diretorio1 da pilha:
    ```bash
    $ popd
    output: /tmp/diretorio0 /tmp
    ```

5. Para pular para um diretório específico da pilha sem remover nenhum, fazemos como abaixo:
    ```bash
    $ pushd /tmp/diretorio0
    output: /tmp/diretorio0 /tmp

    $ pushd /tmp/diretorio1
    output: /tmp/diretorio1 /tmp/diretorio0 /tmp

    $ pushd /tmp/diretorio2
    /tmp/diretorio2 /tmp/diretorio1 /tmp/diretorio0 /tmp
    ```

6. Se queremos pular do diretório atual (`diretorio2`) para o `diretorio0` temos que andar duas posições na pilha. Então utilizamos o comando `pushd` conforme abaixo:
    ```bash
    $ pushd +2
    output: /tmp/diretorio0 /tmp /tmp/diretorio2 /tmp/diretorio1
    ```

Caso você use o comando `pushd` sem o argumento `+2`, você será direcionado para o último diretório antes desse, ou seja, você pode usar o comando `pushd` para revezar entre dois diretórios _(como se fosse um `alt + tab` entre diretórios)_.

> Note que, ao caminhar pelas posições na pilha, os diretórios que antecediam o diretório de destino foram para o final da pilha. Isso pode fazer que a navegação se torne confuso se a pilha está muito grande. Porém, sempre se pode limpar a pilha utilizando o comando `dirs -c`.

Com o tempo e costume isso ajuda muito na navegação, principalmente quando se tem que ficar indo de um lado pro outro em diretórios de configuração.