Compare dois arquivos e imprima os resultados para um novo arquivo de texto

0

Eu quero comparar a lista de pacotes em um computador com uma lista autorizada que eu tenho. Como eu faria isso? O seguinte trabalho?

cd /home
touch authorizedlist.txt
(list contents) >> authorizedllist.txt
touch currentlist.txt
dpkg -l | cut -d ' ' -f3 | less >> currentlist.txt
touch difflist.txt
diff authorizedlist.txt currentlist.txt >> difflist.txt

Existe uma maneira de criar um novo arquivo de texto e adicionar conteúdo a ele em um comando, em vez de tocar e depois inserir o texto? Além disso, existe uma maneira de imprimir apenas o que é desnecessário na lista atual e não o que está faltando nele?

    
por suomynonA 21.01.2018 / 18:21

1 resposta

2

Sim.

  • touch define o registro de data e hora de modificação de um determinado arquivo como "now". Se o arquivo fornecido ainda não existir, ele será criado. Esta é uma maneira comum de criar arquivos vazios.

  • O redirecionamento >> anexa a saída a um determinado arquivo. Semelhante a touch cria o arquivo, se ainda não existir. Mas tenha em mente que ele anexa dados a um arquivo existente.

  • O redirecionamento > sobrescreve um determinado arquivo com a saída do comando anterior. Se o arquivo ainda não existir, ele será criado. Se ele já existir, será truncado (isto é: limpo ou esvaziado) e, em seguida, a saída será gravada nele.

  • less é o chamado pager . Ou seja: destina-se ao uso interativo para que você possa navegar por arquivos maiores e usar espaço e b (além de outros) para avançar e retroceder em um arquivo ou saída de comando . Se você redirecionar a saída de um comando para um arquivo, você pode (e deve) omitir a chamada less .

Coloque juntos:

cd /home
(list contents) > authorizedlist.txt
dpkg -l | cut -d ' ' -f3 > currentlist.txt
diff authorizedlist.txt currentlist.txt > difflist.txt
    
por PerlDuck 21.01.2018 / 18:43