Ed (editor de texto)
ed (pronunciado como letras distintas) é um editor de linha para sistemas operacionais Unix e semelhantes a Unix. Foi uma das primeiras partes do sistema operacional Unix a ser desenvolvida, em agosto de 1969. Ele continua a fazer parte dos padrões POSIX e Open Group para sistemas operacionais baseados em Unix, juntamente com o editor de tela cheia mais sofisticado vi.
História e influência
O editor de texto ed foi um dos três primeiros elementos-chave do sistema operacional Unix—assembler, editor e shell—desenvolvido por Ken Thompson em agosto de 1969 em um PDP-7 no AT&T Bell Labs. Muitos recursos do ed vieram do editor de texto qed desenvolvido na alma mater de Thompson, Universidade da Califórnia, Berkeley. Thompson estava muito familiarizado com o qed e o havia reimplementado nos sistemas CTSS e Multics. As versões de qed de Thompson foram notáveis como as primeiras a implementar expressões regulares. Expressões regulares também são implementadas em ed, embora sua implementação seja consideravelmente menos geral do que em qed.
Dennis M. Ritchie produziu o que Doug McIlroy mais tarde descreveu como o filme "definitivo" ed, e aspectos de ed passaram a influenciar ex, que por sua vez gerou vi. O comando grep não interativo do Unix foi inspirado por um uso especial comum de qed e posteriormente ed, onde o comando g/re/p
significa procurar globalmente pela expressão regular re
e imprima as linhas que o contêm. O editor de fluxo do Unix, sed, implementou muitos dos recursos de script do qed que não eram suportados pelo ed no Unix.
Recursos
Os recursos do ed incluem:
- disponível em essencialmente todos os sistemas Unix (e obrigatório em sistemas em conformidade com a Especificação Unix Único).
- suporte para expressões regulares
- automação poderosa pode ser alcançada através da alimentação de comandos de entrada padrão
(In)famoso por sua concisão, ed quase não fornece feedback visual e foi chamado (por Peter H. Salus) de "o editor mais hostil ao usuário já criado", mesmo quando comparado ao contemporâneo (e notoriamente complexo) TECO. Por exemplo, a mensagem que ed produzirá em caso de erro, e quando quiser ter certeza de que o usuário deseja sair sem salvar, é "?". Ele não informa o nome do arquivo atual ou o número da linha, nem exibe os resultados de uma alteração no texto, a menos que seja solicitado. As versões mais antigas (c. 1981) nem pediam confirmação quando um comando de saída era emitido sem que o usuário salvasse as alterações. Essa concisão era apropriada nas primeiras versões do Unix, quando os consoles eram teletipos, os modems eram lentos e a memória era preciosa. À medida que a tecnologia de computador melhorou e essas restrições foram afrouxadas, editores com mais feedback visual se tornaram a norma.
Na prática atual, ed raramente é usado de forma interativa, mas encontra uso em alguns scripts de shell. Para uso interativo, ed foi incorporado pelos editores sam, vi e Emacs na década de 1980. ed pode ser encontrado em praticamente todas as versões do Unix e Linux disponíveis e, como tal, é útil para pessoas que precisam trabalhar com várias versões do Unix. Em sistemas operacionais baseados em Unix, alguns utilitários como o SQL*Plus são executados como o editor se as variáveis de ambiente EDITOR e VISUAL não estiverem definidas. Se algo der errado, às vezes ed é o único editor disponível. Muitas vezes, esse é o único momento em que é usado de forma interativa.
A versão do ed fornecida pelo GNU possui algumas opções para aprimorar o feedback. Usar ed -v -p:
fornece um prompt simples e permite mensagens de feedback mais úteis. A opção -p
é definida em POSIX desde XPG2 (1987).
Os comandos ed são frequentemente imitados em outros editores baseados em linha. Por exemplo, EDLIN em versões anteriores do MS-DOS e versões de 32 bits do Windows NT tem uma sintaxe um tanto semelhante, e editores de texto em muitos MUDs (LPMud e descendentes, por exemplo) usam sintaxe semelhante a ed. Esses editores, no entanto, são tipicamente mais limitados em função.
Exemplo
Aqui está um exemplo de transcrição de uma sessão de educação. Para maior clareza, os comandos e o texto digitado pelo usuário estão no formato normal e a saída de ed é enfatizada.
um
ed é o editor de texto Unix padrão.
Esta é a linha número dois.
.
2
.
,
ed é o editor de texto Unix padrão.$$Esta é a linha número dois. $3s/two/three/
,
ed é o editor de texto Unix padrão.$$Esta é a linha número três.$texto
65q
O resultado final é um arquivo de texto simples contendo o seguinte texto:
ed é o editor de texto Unix padrão. Esta é a linha número três.
Iniciado com um arquivo vazio, o comando a
acrescenta texto (todos os comandos ed são letras únicas). O comando coloca ed no modo de inserção, inserindo os caracteres que seguem e termina com um único ponto em uma linha. As duas linhas inseridas antes do ponto acabam no buffer de arquivo. O comando 2i
também entra no modo de inserção e inserirá o texto digitado (uma única linha vazia em nosso caso) antes da linha dois. Todos os comandos podem ser prefixados por um número de linha para operar nessa linha.
Na linha ,l
, o L minúsculo representa o comando list. O comando é prefixado por um intervalo, neste caso ,
que é um atalho para 1,$
. Um intervalo são dois números de linha separados por uma vírgula ($
significa a última linha). Em troca, ed lista todas as linhas, da primeira à última. Essas linhas terminam com cifrões, de modo que o espaço em branco no final das linhas seja claramente visível.
Uma vez que a linha vazia é inserida na linha 2, a linha onde se lê "Esta é a linha número dois." agora é, na verdade, a terceira linha. Este erro é corrigido com 3s/dois /três/
, uma substituição comando. O 3
irá aplicá-lo à linha correta; após o comando está o texto a ser substituído e, em seguida, a substituição. Listando todas as linhas com ,l
a linha é mostrada agora como correta.
w text
grava o buffer no arquivo "text" fazendo ed responder com 65, o número de caracteres gravados no arquivo. q
encerrará uma sessão de edição.
Referências culturais
O projeto GNU tem inúmeras piadas sobre ed hospedadas em seu site. Além disso, a documentação glibc observa um código de erro chamado ED
com sua descrição (errorstr) apenas um único ponto de interrogação, observando "o usuário experiente saberá o que está errado."
Contenido relacionado
Computador Atanasoff-Berry
Detecção e correção de erros
Código Baudot
Arquivo de computador
Sistema operacional de disco