1001Ferramentas
🐚Dev

Escapador de Argumentos Shell

Escapa um argumento para uso seguro em comandos bash/sh, envolvendo em aspas simples e tratando aspas internas.

Saída segura para shell (aspas simples):


  

Escapar argumento para o shell com aspas simples

Cole o texto e a página devolve a forma segura de passá-lo como um único argumento no shell. A técnica é envolver tudo em aspas simples e tratar a própria aspa simples de um jeito específico: fechar a citação, emitir uma aspa escapada com barra invertida, e reabrir. É feio de ler e é a maneira correta.

O motivo de escolher aspas simples é que dentro delas o shell POSIX não interpreta nada — nem variável, nem substituição de comando, nem sequer a barra invertida. Não existe escape dentro de aspas simples, e é essa ausência que torna a citação previsível: qualquer byte, incluindo quebra de linha, dólar, crase e ponto e vírgula, passa literal.

A comparação com aspas duplas explica o resto. Dentro delas, dólar, crase e barra invertida continuam ativos, então texto vindo de fora pode executar comando. É a diferença entre passar um nome de arquivo esquisito e abrir uma injeção de shell. Quando o texto vem de usuário, log ou banco, aspas simples com esse escape é o padrão a seguir.

Perguntas frequentes

Por que não usar barra invertida em cada caractere especial?
Porque a lista de caracteres especiais depende do shell e do contexto, e esquecer um basta para abrir problema. Aspas simples invertem o ônus: em vez de enumerar o que é perigoso, você declara que nada é interpretado. Só a própria aspa precisa de tratamento, e ela é um caso único e conhecido.
Existe byte que não dá para passar?
Apenas o byte zero, e não por limitação da citação: o sistema usa o zero para marcar o fim de cada argumento, então ele não pode aparecer dentro de um. Quebra de linha, tabulação e caractere de controle passam sem problema dentro de aspas simples.
Isso vale para PowerShell e cmd?
Não. As regras de citação do Windows são outras, e o cmd tem particularidades bem diferentes com aspas e circunflexo. Esta forma vale para shell POSIX — sh, bash, zsh, dash. Ao gerar linha de comando para outra plataforma, use a citação daquela plataforma.

Ferramentas Relacionadas