Cria rapidamente e adiciona linha na linha de comando do Linux

0

Eu preciso verificar se um arquivo está no sistema, se ele está lá, preciso adicionar uma linha a ele. Eu tenho que fazer isso em um script, então eu quero que isso seja feito sem interrupções. A melhor maneira que posso pensar é assim:

sudo rm -rf /etc/apt/sources.list.d/docker.list
sudo touch /etc/apt/sources.list.d/docker.list
echo "deb https://apt.dockerproject.org/repo ubuntu-xenial main" | sudo tee -a /etc/apt/sources.list.d/docker.list

Eu estou querendo saber se há talvez uma maneira mais elegante de fazer isso. Eu conheço os trabalhos acima, mas só queria saber para ampliar meu conhecimento da linha de comando do Linux.

    
por Saif Bechan 09.10.2016 / 10:31

1 resposta

2

Seu exemplo é muito confuso. Não há verificações e comandos inúteis. Também não sei por que você diz "anexar" a um arquivo que acabou de excluir.

De qualquer forma, minha abordagem seria usar operadores de redirecionamento. Isso é > ou >> da seguinte forma:

Para sobrescrever (ou escrever um novo arquivo se o arquivo estiver faltando):

echo "string for file" > "/path/to/file"

Para anexar a um arquivo (também criará um novo arquivo se ausente):

echo "string to append to file" >> "/path/to/file"

Se você quiser verificar se um arquivo no sistema você pode usar:

locate "filename"

ou em um script que você poderia fazer:

#!/bin/sh
if [ -f "/path/to/filename" ]
then
    echo "found filename"
else
    echo "filename is missing"
fi

Sugiro que você verifique man [ e man sh (ou man bash ) para mais exemplos.

    
por 09.10.2016 / 12:35