O que você está mostrando é ed
sendo usado em conjunto com um script de edição.
O script de edição (uma série de comandos ed
) está sendo passado para ed
como um documento aqui. Um aqui-documento é um pedaço de texto possivelmente em várias linhas redirecionado para a entrada padrão de um utilitário. O aqui-documento é o que está entre o primeiro e o último END
marcadores. O \
na frente do primeiro marcador END
significa que o documento está entre aspas, o que significa que o shell não tentará expandir as variáveis, etc. Também poderia ter sido escrito como <<'END'
. Nesta instância específica, o \
pode ser removido, pois o script de edição não contém nada para o shell expandir.
Esta é uma maneira comum de usar ed
para edição não interativa mais simples, embora ed
deva ser usado com sua opção -s
ao usá-lo dessa maneira.
O comando é equivalente ao uso de sed
com
sed '10,20/^/#/' /etc/passwd
(O script ed
fará as alterações no arquivo e exibirá o arquivo no terminal antes de sair sem salvar as alterações, o que é mais ou menos o script acima de sed
está fazendo numa linha por linha).
Não é uma boa maneira de editar o arquivo /etc/passwd
(o que o script ed
não está fazendo, felizmente, já que ele não salva suas alterações). Para isso, ferramentas como vipw
ou comandos específicos feitos para modificar este arquivo (como useradd
etc.) devem ser usados. Isso ocorre porque o arquivo, em muitos sistemas Unix, precisa estar em sincronia com um ou vários outros arquivos ou bancos de dados, e editá-lo também requer atualização (por exemplo, vipw
faz automaticamente).