Executando verificação de segurança...
2

Esse script é viável ou não? Estudando Bash!

Atualmente estudando bash e ainda sou extremamente novo no mundo Linux, apesar de já usar faz um tempo. Gostaria de saber se esse meu script faz sentido dentro do que preciso para meu dia a dia.

Basicamente, tenho mania de quando remover/desinstalar um programa, apagar tudo referente a ele, pasta, arquivos, etc. Então, para diminuir esse “processo”, eu criei um script chamado rtp (remove this program). A ideia era só agilizar meu tempo e ter um retorno mais claro do que estou fazendo, além de, claro, estudar mais sobre scripts.

Aqui uma breve explicação que fiz para mim mesmo, durante sua criação:

Explicando o rtp (remove this program)

Verifica se o usuário passou um pacote

if [ -z "$1" ]; then
    echo "Uso: rtp <pkg>"
    exit 1
fi

Traduzindo:

SE [ a váriavel não existir ]; ENTÃO
    echo "Uso: rtp <pkg>"
    SAIR COM FALHA
FIM (FI)

Definindo a váriavel

PKG=$1

Etapas de funcionamento

echo "==> Removendo $PKG com dnf"
sudo dnf remove "$PKG" # Removendo o pacote

echo "==> Limpando dependências órfãs"
sudo dnf autoremove -y # Limpando qualquer dependência do pacote ou órfão

echo "==> Limpando cache do dnf"
sudo dnf clean all # Limpando todo o cache do sistema

Resíduos

echo "==> Procurando por resíduos em ~"
RESIDUOS=$(find ~ -type d -iname "*$PKG*" 2>/dev/null) # Procurando resíduos que o pacote tenha deixado dentro da pasta $HOME

Traduzindo:

RESIDUOS = PROCURAR EM $HOME {
    TIPO: apenas diretórios
    NOME: que contenha "*$PKG*" (maiúsculas/minúsculas ignoradas)
    ERROS: jogar fora (não mostrar)
}
if [ -n "$RESIDUOS" ]; then
    echo "Foram encontrados os seguintes diretórios possivelmente relacionados a $PKG:"
    echo "$RESIDUOS"
    echo
    read -p "Deseja removê-los? (y/n) " resp
    if [ "$resp" = "y" ]; then
        echo "$RESIDUOS" | xargs rm -rf
        echo "Resíduos removidos!"
    else
        echo "Resíduos mantidos."
    fi
else
    echo "Nenhum resíduo encontrado."
fi

Traduzindo:

SE [ variável RESIDUOS não está vazia ]; ENTÃO
    ESCREVER "Foram encontrados os seguintes diretórios possivelmente relacionados a $PKG:"
    ESCREVER "$RESIDUOS"
    ESCREVER linha vazia
    
    LER resposta do usuário: "Deseja removê-los? (y/n) "
    
    SE [ resposta == "y" ]; ENTÃO
        PEGAR cada linha de $RESIDUOS E EXECUTAR: rm -rf
        ESCREVER "Resíduos removidos!"
    SENÃO
        ESCREVER "Resíduos mantidos."
    FIM-SE
    
SENÃO
    ESCREVER "Nenhum resíduo encontrado."
FIM-SE

Finalização

echo "==> Finalizado: $PKG removido"

Carregando publicação patrocinada...
2

Meus 2 cents,

Tenho duvidas se o "find" vai fazer o que voce pretende - nem sempre os "residuos" estao em um diretorio a partir do home do usuario (ou pode ate mesmo ocorrer uma coisa bem ruim, apagar arquivos sem relacao com o pacote mas com nome semelhante, ainda mais pelo uso do "*blabla*")

Uma alternativa:

rpm -ql "$PKG"

Vai retornar uma lista de arquivos que fazem parte do pacote.

No debian:

dpkg -L "$PKG"

Se bem que quando voce fazer o remove ja deve fazer isso, entao o find nao tem muito sentido (ok, ate pode ter, mas nao dessa forma aplicada)

Se voce tem problemas com "residuos" da uma olhada no "flatpak" - pode ser uma alternativa interessante para o teu dia-a-dia.

Saude e Sucesso !

1

na verdade, foi bem esclarecedor amigo. vou tentar fazer uma adaptação ou revisão mesmo sobre o find.

obrigado pela resposta e ajuda, desejo saúde e sucesso igualmente!