Pausar Scripts com "Pressione Qualquer Tecla" no Bash, CMD, PowerShell e macOS
Pausa em qualquer tecla para Bash, CMD, PowerShell e macOS.
Arquivos em lote e scripts de shell frequentemente precisam de uma breve espera para que uma janela ativada com duplo-clique ou um log de instalação permaneça visível. O Windows CMD possui um comando dedicado pause. As shells Unix utilizam read.
O PowerShell fica no meio e precisa de um padrão explícito.
Esta página reúne fragmentos portáveis e as armadilhas habituais (redirecionamentos, SSH sem TTY, CI).

Para mais referências sobre shell, consulte a folha de atalhos do Bash e a folha de atalhos do PowerShell.
Para fluxos de trabalho mais amplos de ferramentas, visite Ferramentas de Desenvolvimento: O Guia Completo para Fluxos de Trabalho de Desenvolvimento Moderno.
Quando pausar (e quando não)
Use uma pausa quando um humano estiver observando um terminal interativo e você quiser evitar uma saída instantânea — por exemplo, após um arquivo .bat ser ativado com duplo-clique ou após um script de manutenção local imprimir um resumo.
Evite pausas em cron, serviços systemd, pipelines de CI e na maioria dos one-liners de SSH. Frequentemente não há teclado conectado e o stdin pode não ser um terminal, então esperar por entrada pode travar para sempre. No Bash e no POSIX sh, teste com [ -t 0 ] (ou test -t 0) antes de solicitar.
Windows CMD
O comando pause imprime uma linha localizada, como “Pressione qualquer tecla para continuar . . .” e aguarda uma tecla.
:: salve como pause-demo.bat
@echo off
echo Olá do CMD
pause
Se a saída for redirecionada, o comportamento pode diferir; para scripts que devem ser executados com registro em um arquivo, considere usar timeout /t N para um atraso temporizado em vez de uma pausa interativa.
O choice é útil quando você deseja uma espera temporizada ou teclas específicas (scripts de menu). É um tópico separado do pause, mas frequentemente aparece nos mesmos fluxos de trabalho em lote.
PowerShell
O PowerShell não possui um único alias pause que corresponda ao CMD em todos os hosts. Dois padrões comuns se seguem.
Aguardar apenas Enter
Simples e funciona em muitos hosts, incluindo alguns IDEs.
# pause-demo.ps1
Read-Host 'Pressione Enter para continuar'
Isso não é “qualquer tecla” — apenas Enter conta.
Aguardar qualquer tecla (console Windows)
No PowerShell Windows executado em um host de console normal, ReadKey aguarda uma tecla física:
# pause-any-key.ps1
Write-Host 'Pressione qualquer tecla para continuar...'
$null = $Host.UI.RawUI.ReadKey('NoEcho,IncludeKeyDown')
Se $Host.UI ou RawUI não estiverem disponíveis (alguns hosts não interativos, remota ou ambientes restritos), isso pode falhar. Envolva essas chamadas em try / catch ou detecte [Console]::KeyAvailable / capacidades do host quando precisar de robustez.
O PowerShell 7 em plataformas não Windows pode não oferecer a mesma experiência de ReadKey; prefira Read-Host ou o read nativo do shell nesses casos.
Bash (Linux e macOS)
Estilo clássico de “qualquer tecla” com um prompt visível e sem eco da tecla:
#!/usr/bin/env bash
read -r -n 1 -s -p $'Pressione qualquer tecla para continuar...\n'
-n 1— ler um caractere-s— silencioso (sem eco)-r— bruto (barra invertida não é especial)-p— string de prompt
Com uma guarda amigável para automação:
#!/usr/bin/env bash
if [ -t 0 ]; then
read -r -n 1 -s -p $'Pressione qualquer tecla para continuar...\n'
fi
Notas sobre macOS
O Terminal.app e o iTerm2 se comportam como outros terminais Unix para o Bash. O shell de login padrão da Apple é frequentemente o Zsh; para Zsh interativo, você pode usar read -k 1 em scripts executados explicitamente pelo Zsh. Para máxima portabilidade entre Linux e macOS, permaneça com o Bash ou documente #!/usr/bin/env bash no topo do script.
POSIX sh (portável “pressione Enter”)
O read POSIX não requer read -n, que não é POSIX. O padrão portável é “pressione Enter para continuar”:
#!/bin/sh
printf 'Pressione Enter para continuar... '
read -r _
Isso é amplamente suportado em sistemas baseados em dash, ksh e ash. O “qualquer tecla” de caractere único verdadeiro sem extensões do Bash é mais complicado; se você precisar disso em sh minimalista, documente o Bash ou use abordagens baseadas em stty com cuidado (estado do terminal, portabilidade).
Ramificação multiplataforma
Scripts de instalação às vezes bifurcam o sistema operacional:
- Windows CMD —
pause - PowerShell —
ReadKeyouRead-Host - Unix —
readcom guarda[ -t 0 ]
Em ambientes mistos, mantenha a guarda “apenas interativo” para que servidores e CI nunca fiquem bloqueados.
Leitura relacionada
- Folha de atalhos do Bash — referência geral de comandos
- Folha de atalhos do PowerShell — cmdlets e uso cotidiano
Links úteis
- Manual GNU Bash — Bash Builtins —
read - Microsoft Learn — Read-Host e APIs de console para hosts avançados