Fala pessoal tudo bem?
Eu já uso linux a um bom tempo mas nunca entrei muito na área de scripts (embora tenha o meu de pós instalação, e bem amador).
Nos últimos tempos tenho procurado criar um servidor de impressão, tenho usado o CUPS e funciona perfeitamente. Porém com diversas quedas de energia que tem acontecido acabei por ter de reinstalar o sistema várias vezes. Nessa história pensei em automatizar a instalação de programas e configurações, a primeira parte ok, mas quando fui procurar métodos para alterar as config_files do cups e do próprio sistema operacional acabei me embanando todo.
Alguém poderia me explicar como fazer um script que consegue alterar/adicionar/remover linhas de arquivos de texto? Vi um comando chamado sed, porém não entendi muito bem como ele funciona…
Enfim é entender um pouco como posso automatizar os processos de configurações
Agradeço a atenção desde já
Alguns exemplos de sed
relevantes para um caso relativamente direto como o seu estão nesse artigo:
Veja esse tópico, eu fiz um scripts que faz algumas edições em arquivos de configuração:
Uma dica para ver onde está um arquivo de configuração de uma opção em específico faça isso:
-
No terminal crie um arquivo com o nome ‘a’ qualquer
touch a
-
Faça a alteração/configuração desejada no sistema/programa
-
Execute esse comando
find ~ -type f -newer a
Será exibido caminho do arquivo que foi editado pela sua alteração, pois busca os arquivos mais recentes após a criação do aruqivo ‘a’.
PS: faça isso com o navegador fechado, pois senão vai mostrar varios arquivos de cache do navegador.
no Mint eu usava esse script para adicionar uma impressora do cups.Agora já esta automatizado na própria instalação
#Adiciona Impressora PDF se o cups pdf estiver instalado
if dpkg -s printer-driver-cups-pdf >/dev/null 2>&1 ; then
echo -e "\033[01;33m**** Adicionado impressora PDF e definindo como padrão\033[0m"
#Cria uma impressora PDF Genérica
lpadmin -p PDF-Printer -v cups-pdf:/ -D "Generic CUPS-PDF-Printer" -E -P /usr/share/ppd/cups-pdf/CUPS-PDF_noopt.ppd
#Define a impressora padrão
lpadmin -d PDF-Printer
echo -e "OK\n\033[01;32m==================\033[0m\n"
fi
####################################
aqui vou deixar algumas dicas (caminho das pedras) que eu usei para editar os arquivos de configurações diversos:
exemplos de uso do sed
Para subistiuir um texto em específico use o comando sed -i
sed -i 's/nactivate-numlock=false/nactivate-numlock=true/g' /etc/lightdm/slick-greeter.conf
Quando quiser substituir mais de uma linha use o sed -z e use o caracter ‘\n’ para quebra de linha:
Para escrever algo na ultima linha de um arquivo use o ‘echo’ assim
echo -e "[Greeter]\nactivate-numlock=true" >> /etc/lightdm/slick-greeter.conf
Para editar arquivos json por chave/valor precisa instalar o pacote ‘moreutils’ e o pacote ‘jq’
e usar o comando ‘jq’ para altera o json e o comando ‘sponge’ do moreutils para escrever a modificação no arquivo.
exemplo: substituir um número do json
jq '.["favbox-min-height"] |= (.value = 405.0)' ~/.cinnamon/configs/[email protected]/0.json | sponge ~/.cinnamon/configs/[email protected]/0.json
exemplo: substituir um texto do json
jq '.["menu"] |= (.title = "test")' ~/.cinnamon/configs/[email protected]/0.json | sponge ~/.cinnamon/configs/[email protected]/0.json
Para listar o conteúdo de um arquivo zip use o zipinfo
Para ler um valor em um arquivo .desktop ou outro qualquer que tem a estrutura assim:
Item=um_valor_qualquer
use essa dica:
Se usar interface gnome, com o pacote dconf-editor vc pode salvar algumas outras opções como configurações (config de programas nativos, papel de parede, temas, ícones …)
instale via:
$sudo apt install -y dconf-editor
para pegar as configurçãoes atuais do seu sistema, use o comando e salve esse arquivo(mint_config.dconf) em uma pasta de backup:
$dconf dump / > ~/mint_config.dconf
para aplicar as configurações que voçê salvou, com o comando acima, em um sistema novo:
$dconf load / < 'seu diretorio de backup/mint_config.dconf'
Use o redirecionamento para adicionar linhas em arquivo, em bash o maior é o redirecionador exemplo:
echo "teste" >> /arqueivo # este vai adicionar "teste" na ultima linha do arquivo.
echo "teste" > /arquivo # este vai criar ou sobrescrever um novo arquivo com somente "teste" dentro.
Muito obrigado pessoal!
Aprendi bastante e consegui criar o script!
O impressionante é que usei um pouco da postagem de cada um, agradeço kkssks
Muito obrigado pela atenção!
Este tópico foi fechado automaticamente 3 dias depois da última resposta. Novas respostas não são mais permitidas.