tr a A </ etc / hosts | classifique -r | pr -d> / etc / hosts

9

Nesta linha:

tr a A < /etc/hosts | sort -r |pr -d > /etc/hosts 

qual seria o resultado esperado? Eu sei que 'a' minúsculo mudaria para 'A' maiúsculo, mas o que vem a seguir? O arquivo original seria substituído, já que o redirecionamento tem o mesmo nome de arquivo?

tdharrison
fonte
Você deve receber um bash: /etc/hosts: Permission deniederro (assumindo que seu shell seja bash), a menos que esteja executando isso como root. /etc/hostsnormalmente é gravável apenas pela raiz. Se você está executando isso como root(o que você realmente não deveria), ficaria vazio, /etc/hostscomo Michael Homer explicou.
Arielf

Respostas:

17

O resultado esperado é um /etc/hostsarquivo em branco .

O redirecionamento > /etc/hostsocorre e trunca o arquivo antes que os programas comecem a ser executados e trcomeça a ler o arquivo.

Para gravar a saída /etc/hosts, você pode trabalhar com uma cópia do arquivo (ou mover seu arquivo de saída posteriormente) ou usar o spongecomando de moreutils , que absorverá a entrada padrão e gravará em um arquivo:

tr a A < /etc/hosts | sort -r | pr -d | sponge /etc/hosts

Nesse caso, cada "a" in /etc/hostsserá substituído por "A", todas as linhas serão classificadas no sentido inverso de acordo com a sua localidade , uma linha em branco será inserida entre cada linha e o resultado será inserido /etc/hosts.


Você também pode achar útil:

Michael Homer
fonte
1
Muito obrigado por esclarecer o que devo esperar com a forma como foi escrito e como poderia ser escrito para obter o resultado esperado.
Tdharrison
moreutils é uma ferramenta realmente grande de banho
Robert Riedl