Pular para o conteúdo
Relicário do Shell

/static/relicario/conceito/

Menu

O conceito, em uma página só

A preguiça e o ponto de exclamação

De onde vêm estes símbolos, por que quase ninguém os chama, e por que eles continuam em todo shell que você abrir hoje.

A expansão de histórico nasceu no csh de Bill Joy, nos anos setenta, e o bash e o zsh a carregam até hoje: um ponto de exclamação que, no começo de uma palavra, deixa de ser pontuação e vira um pedido — traga de volta aquela linha, aquela palavra, aquele pedaço.

O artigo Your shell and the lazy exclamation mark, que serviu de expedição de coleta para este relicário, argumenta que isso é o princípio de não se repetir aplicado ao terminal: se o argumento já foi digitado uma vez, digitá-lo de novo é desperdício de teclado.

A gramática, em uma linha

Toda expressão tem até três partes: um evento (qual linha do histórico), uma palavra (qual pedaço dela) e modificadores (o que fazer com o pedaço), separados por dois-pontos. !ssh:1:h lê-se: da última linha que começou com ssh, a primeira palavra, só o diretório.

Quase tudo aceita abreviação — !!:$ vira !$, !!:1 vira !^ — e é nas abreviações que a coleção encosta no dia a dia: o artigo sugere levar para casa quatro peças, !$, !:0, !$:h e !$:t.

Por que quase ninguém chama

Porque executa sem mostrar. Ctrl+R e Alt+. venceram o costume justamente por deixarem a linha à vista antes do Enter — e por isso moram aqui na gaveta de ferramentas vizinhas, não como rivais, mas como parentes. O modificador :p é a ponte: imprime sem executar.

E há quem prefira aposentar tudo: a gaveta de contenção guarda o interruptor que desliga a expansão de histórico por completo.

Por que muitas páginas pequenas

Pelo mesmo motivo do herbário: cada relíquia, cada gaveta, cada ordenação e este próprio texto são arquivos HTML separados, ligados por links, escritos por um gerador de algumas centenas de linhas. Estado vira endereço; o navegador cuida do resto.