Skip to content

Instantly share code, notes, and snippets.

@luizomf
Created November 13, 2025 14:45
Show Gist options
  • Select an option

  • Save luizomf/e1d0b6aca5d812ae06001751ad03586f to your computer and use it in GitHub Desktop.

Select an option

Save luizomf/e1d0b6aca5d812ae06001751ad03586f to your computer and use it in GitHub Desktop.
Comandos de navegação no terminal: cd, dirs, pushd, popd, autopushd, pushdminus, pushdignoredups, pushdsilent

Comandos de navegação no terminal

#
# NAVEGAÇÃO DE DIRETÓRIOS — ZSH / BASH / KSH
# Cheatsheet completo, comentado.

#-------------------------------------------------------------------------------
# CD - NAVEGAÇÃO BÁSICA (change directory)
#-------------------------------------------------------------------------------

cd DIR
# Entra no diretório DIR.
# Não mexe na pilha de diretórios (a menos que autopushd esteja ativo).

cd -
# Volta para o último diretório visitado
# Isso é interessante, porque se você precisar ficar indo e vindo entre dois
# diretórios, `cd -` ajuda bastante.

cd -N
# Vai para o diretório de índice N mostrado pelo comando `dirs -v`.
# Ele rotaciona a pilha (eu estou chamando isso de pilha, mas não me parece pilha)

cd -q DIR
# (ZSH) Entra no diretório DIR sem mexer na pilha,
# mesmo que autopushd esteja ligado ("quiet mode").

#-------------------------------------------------------------------------------
# DIRS - VISUALIZAR PILHA / HISTÓRICO
#-------------------------------------------------------------------------------

dirs
# Mostra a pilha/histórico atual numa linha.

dirs -v
# Mostra a pilha com índices (forma mais útil).

dirs -p
# Mostra cada diretório em uma linha.

dirs -l
# Expande ~ para caminho completo.
# Exemplo: /Users/seu_usuario ao invés de ~/.

dirs -c
# Limpa completamente a pilha de diretórios.

#-------------------------------------------------------------------------------
# PUSHD - EMPILHAR + NAVEGAR
#-------------------------------------------------------------------------------

pushd PATH
# Empilha o diretório atual e navega para PATH.
# Isso é literalmente um "push" de pilha (LIFO).

pushd
# Troca o diretório atual com o anterior na pilha.

pushd +N
# Rotaciona a pilha trazendo o índice N para o topo,
# mudando o diretório atual para aquele.
# Ex: pushd +2
# [0, 1, 2, 3] # 2 e 3 serão movidos para o topo, 0 e 1 terão que se adequar
# [2, 3, 0, 1] # outro exemplo a partir daqui: pushd +3 (índice 3 se torna 0)
# [1, 2, 3, 0] # 1 foi da última posição para a primeira, os outros se adequaram

pushd -N
# Rotaciona a pilha no sentido inverso (para mim, mais confuso)
# Ex: se eu pegar a lista como deixei acima [1, 2, 3, 0] e quero reorganizar.
# Perceba que já temos uma certa ordem em 1, 2, 3, *0 (o zero é quem está fora)
# Para fazer isso com positivo, faríamos pushd +3
#
# Para fazer isso com negativo, basta inverter, portanto -0 (no índice invertido)
# pushd -0 # voltamos para [0, 1, 2, 3]
#
# Atual: [0, 1, 2, 3]
# Ex: pushd -2 (-2 é o 1 agora, basta contar índices de trás para frente)
# [1, 2, 3, 0] # É a mesma ideia, move o 1 para o topo, o resto se adequa
# pushd -1 (invertido, 3 é o -1, o zero segue a frente dele)
# [3, 0, 1, 2] # Os números a frete do índice acompanham, os outros se adequam

# -------------------------
# POPD - DESEMPILHAR + VOLTAR
# -------------------------

popd
# Desempilha o diretório do topo e navega para o próximo.
# Igual a "pop" real de stack. + conta normal, - conta invertido a partir do 0.

popd +N
# Expliquei o positivo e negativo com pushd, só que aqui estamos removendo itens

popd -N
# Expliquei o positivo e negativo com pushd, só que aqui estamos removendo itens

#-------------------------------------------------------------------------------
# OPÇÕES DO ZSH (BOAS PARA CONFIG)
#-------------------------------------------------------------------------------

setopt autopushd
# Ativa o modo onde TODO cd vira pushd automaticamente.
# Não recomendado para quem quer pilha limpa (eu uso, não sei se vou manter).

setopt no_autopushd
# Desativa o autopushd.
# cd NÃO entra na pilha — controle total por pushd/popd.
# RECOMENDADO para a pilha não ficar muito confusa.

setopt pushdminus
# Permite usar "cd -" como "pushd -1" (comportamento alternativo).
# Raramente útil.

setopt pushdignoredups
# Evita adicionar diretórios duplicados na pilha.

setopt pushdsilent
# Silencia a saída do pushd/popd.

setopt pushdtohome
# pushd sem argumentos -> vai para ~ automaticamente.

#-------------------------------------------------------------------------------
# ALIASES ÚTEIS (OPCIONAL)
#-------------------------------------------------------------------------------

alias pd='pushd'
# Alias curto para empilhar e navegar.

alias po='popd'
# Alias curto para sair da pilha.

alias dl='dirs -v'
# Ver a pilha numerada rapidamente.

alias ..='cd ..'
alias ...='cd ../..'
alias ....='cd ../../..'
# Navegação rápida de ancestrais.

#-------------------------------------------------------------------------------
# TRUQUES EXTRAS
#-------------------------------------------------------------------------------

pwd
# Mostra o diretório atual.

cd ~
# Volta para o home.

cd /tmp
# Vai para o /tmp rapidamente.

cd !$
# Usa o último argumento do comando anterior como argumento do cd.

cd -- -
# Se "-" ficar ambíguo com opções, força interpretar como diretório "-".

# ZSH: navegação tipo browser (voltar/avançar diretórios)
setopt auto_cd
# Permite digitar só o nome do diretório para entrar (sem escrever cd).

# Navegação por histórico com Alt+Left / Alt+Right (dependente do terminal)
# (não é comando, mas comportamento da keymap do zsh)

#-------------------------------------------------------------------------------
# LIMPEZA / RESET
#-------------------------------------------------------------------------------

dirs -c
# Limpa toda a pilha.

unsetopt autopushd
# Desativa cd bagunçando sua pilha.

# -------------------------
# END
# -------------------------
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment