Você não está autenticado.

Anúncio

Arch Linux Brasil está precisando de sua colaboração para realizar o pagamento do domínio e do host, para colaborar, realizar doações via paypal.

Para mais informações: contato at archlinux-br.org.

#1 18/11/2010 18:24:37

estevao
Admin
De: Dublin, Irlanda
Registrado: 13/10/2009
Mensagens: 353

Scripts úteis: poste aqui os que você fez ou que utiliza

Crio este tópico para compartilharmos os scripts que usamos no dia a dia para facilitar a nossa vida. Para começar, vou postar um script que criei logo quando comecei a usar o Arch. A necessidade era deixar o meu Arch limpo, sem dependências desnecessárias.

Segue o script:

EDIT: script atualizado para suportar sudo.

#!/bin/sh
# undeps - This script lists and removes UNneeded DEPendencieS on Arch Linux
# Options: -l <list> | -r <remove> | -ra <remove all - recursive>
# Estêvão Valadão - [email protected]

loopflag=0

case "$1" in                      
  -l)
  echo ""
  echo "** UNNEEDED DEPENDENCIES **"
  echo "-> checking dependencies..."
  echo ""
  /usr/bin/pacman -Qdtq
  if [ "$?" = 1 ]; then
    echo "-> Your system doesn't have unneeded dependencies."
  fi 
  echo ""
  ;;
  -r)
  while [ "$loopflag" = 0 ]
  do
    echo ""
    echo "** UNNEEDED DEPENDENCIES **"
    echo "-> checking dependencies..."
    echo ""
    /usr/bin/pacman -Qdtq
    if [ "$?" = 0 ]; then
      echo ""
      echo -n "Do you want to remove these packages? [Y/n] "
      read option
      if [ "$option" = "y" ] || [ "$option" = "" ]; then
        if [ -f /usr/bin/sudo ]; then
          /usr/bin/sudo /usr/bin/pacman -Rn $(pacman -Qdtq)
          echo "-> Unneeded dependencie(s) sucessfully removed."
          echo ""
        else
          /usr/bin/pacman -Rn $(pacman -Qdtq)
          echo "-> Unneeded dependencie(s) sucessfully removed."
          echo ""
        fi
      elif [ "$option" = "n" ]; then
        exit 0
      fi  
    else
      loopflag=1
      echo "-> Your system doesn't have unneeded dependencies."
      echo ""
    fi
  done
  ;;
  -ra)
  /usr/bin/pacman -Qdtq > /dev/null
  if [ "$?" = 1 ]; then
    echo ""
    echo "** UNNEEDED DEPENDENCIES **"
    echo "-> checking dependencies..."
    echo ""
    echo "-> Your system doesn't have unneeded dependencies."
    echo ""
  else  
    echo ""
    echo "** UNNEEDED DEPENDENCIES - RECURSIVE **"
    echo -n "-> "
    if [ -f /usr/bin/sudo ]; then
       /usr/bin/sudo /usr/bin/pacman -Rsn $(pacman -Qdtq)
    else
       /usr/bin/pacman -Rsn $(pacman -Qdtq)
    fi
  fi
  ;;
  *)
    echo "Usage: $0 {-l <list> | -r <remove> | -ra <remove all - recursive>}"
    echo ""
esac
exit 0

Utilização:

undeps -l lista as dependências desnecessárias do sistema
undeps -r remove as dependências desnecessárias por etapas
undeps -ra remove todas as dependências desnecessárias de uma só vez (recursivamente) - sou viciado neste comando :-)

PS. Uma outra alternativa é criar aliases para os comandos do pacman, a desvantagem é que você deixa de ter as mensagens fornecidas pelo script.


Por favor coloque [RESOLVIDO] no título do tópico quando o seu problema for solucionado.

Offline

#2 18/11/2010 18:51:15

robsonpeixoto
Membro
De: Jequié, Bahia, Brasil
Registrado: 11/10/2009
Mensagens: 274
Website

Re: Scripts úteis: poste aqui os que você fez ou que utiliza

Eu sou um apaixonado pelo vim.
https://github.com/robsonpeixoto/vimrc
Aí está o meu vimrc e todos os scripts que eu uso.

big_smile


Twitter @rrspba
Blog http://blog.robsonpeixoto.com

7.1.2 – Ao sanar sua dúvida, edite o tópico e adicione a sintaxe '[RESOLVIDO]'.

Offline

#3 18/11/2010 21:01:42

countercraft
Membro
De: Aracaju, SE
Registrado: 07/01/2008
Mensagens: 283

Re: Scripts úteis: poste aqui os que você fez ou que utiliza

@robsonpeixoto
Eu tb sou fã do vim... mas não tenho tempo (leia-se: preguiça) de aprender mais comandos dele, etc. e tal. Só sei o básico. Vou dar uma olhada nesses que vc postou smile

@estevao
Também sou viciado em remover todas as dependências desnecessárias recursivamente de uma só vez tongue... mas fazia isso do jeito complicado:

pacman -Qtd | cut -f1 -d " " | xargs sudo pacman -Rscvn --noconfirm

Não sabia que dava pra fazer do jeito que vc fez, com o  $()...

Na minha vida de Linux só fiz dois scripts (uma vergonha tongue), ambos em Python. Um atualizava as pastas do svn do KDE na minha máquina e compilava (tinha uma porrada de bugs hehe); esse eu perdi. O outro fiz num breve momento que usei Debian; queria usar o axel pra baixar os pacotes do apt. Tinha achado o apt-fast, mas ele era chato pq n dava pra dar um Ctrl + C e continuar depois, e ele baixava direto sem perguntar. Aí fiz esse, baseado no apt-fast.sh mas com as mudanças que eu queria -> http://paste.archlinux-br.org/1594

Última edição por countercraft (18/11/2010 21:07:48)

Offline

#4 19/11/2010 11:12:03

fernandes
Membro
De: Petrolina - PE
Registrado: 18/11/2010
Mensagens: 10
Website

Re: Scripts úteis: poste aqui os que você fez ou que utiliza

@estevao

Seu script ficou muito bom, na verdade eu acho que deveria ser uma função já do próprio pacman fazer esse papel ...
Sei que não é uma super coisa, mas estou mandando ele traduzido em pt_BR, caso alguém queira usar seu script e tenha dificuldades com o inglês.

Link do undeps em pt_BR -> http://paste.archlinux-br.org/1595


Antonio Fernandes C. Neto
http://softwarelivre.org/fernandes

Offline

#5 19/11/2010 11:47:35

estevao
Admin
De: Dublin, Irlanda
Registrado: 13/10/2009
Mensagens: 353

Re: Scripts úteis: poste aqui os que você fez ou que utiliza

fernandes escreveu:

@estevao

Seu script ficou muito bom, na verdade eu acho que deveria ser uma função já do próprio pacman fazer esse papel ...
Sei que não é uma super coisa, mas estou mandando ele traduzido em pt_BR, caso alguém queira usar seu script e tenha dificuldades com o inglês.

Link do undeps em pt_BR -> http://paste.archlinux-br.org/1595

Muito legal a tradução fernandes, valeu :-)

EDIT: fiz uma nova versão do script com suporte ao sudo, se vc quiser traduzir essa também....

Última edição por estevao (19/11/2010 15:12:59)


Por favor coloque [RESOLVIDO] no título do tópico quando o seu problema for solucionado.

Offline

#6 22/11/2010 17:59:52

rae
Membro
Registrado: 10/11/2010
Mensagens: 4

Re: Scripts úteis: poste aqui os que você fez ou que utiliza

Poiseh. Tava aqui tentando fazer um script para lidar com meus pacotes instalados via AUR, pois não queria instalar outro gerenciador de pacotes além do pacman para fazer isso. Segue abaixo o que fiz até agora. Não tenho muito conhecimento de programação em shell, então talvez vocês tenham algumas dicas para melhorar esse script.
Resumindo, ele checa se seus pacotes instalados a partir do AUR estão atualizados e também instala novos pacotes do AUR automaticamente. A parte de limpar o cache não tá pronta, só lista os arquivos .pkg.tar.xz da pasta ~/.aur/ e checa se existem arquivos repetidos. Detalhe: guardo todos os meus pacotes (.pkg.tar.xz) do AUR no diretorio ~/.aur/ , portanto você precisa criar esse diretório para ele funcionar...

PS: melhorei um pouco o código...

#!/bin/bash
#
# pacrae - Instala, atualiza e limpa cache de pacotes do AUR
#
#  ATENÇÃO: altere a variável DIR_AUR para o diretório onde
#  você guarda seus pacotes do AUR. O diretório deve existir!!!
#
# ----------------------------------------------------------
#  Este programa utiliza o pacman do Arch Linux para gerenciar
#  pacotes do AUR. Ele compila e instala pacotes, procura por 
#  atualizações de pacotes instalados e remove pacotes não
#  instalados do cache. Ele é uma boa opção para quem instala
#  pacotes do AUR mas não quer ter outro gerenciador de pacotes
#  além do pacman.
#
#  Exemplo de uso:
#     $ pacrae -U                  <- Procura atualizações
#     $ pacrae -S stockfish        <- Instala pacote stockfish
#     $ pacrae -C                  <- Limpa cache
#     $ pacrae -h                  <- Mostra ajuda
#
#
# Autor: rae <[email protected]>
#
# Licença: WTFPL <http://sam.zoy.org/wtfpl/COPYING>
#

DIR_AUR="/home/rae/.aur/"

AJUDA="
Uso: $(basename "$0") [OPÇÕES]

OPÇÕES:
   -S <pacote>   Instala o pacote especificado a partir do AUR
   -U          Procura atualizações para pacotes instalados
   -C         Remove pacotes não instalados do cache
   -h         Mostra esta tela de ajuda e sai
"

instalar() {
   echo -n "Você deseja instalar o pacote $OPTARG? [S/n] " ; read inst_opcao
   if [ "$inst_opcao" = 'S' ]
   then
      wget -q http://aur.archlinux.org/packages/$OPTARG/$OPTARG.tar.gz
      if [ $? -eq 0 ]
      then
         tar -zxf $OPTARG.tar.gz -C $DIR_AUR
     rm $OPTARG.tar.gz
     cd $DIR_AUR/$OPTARG
     makepkg -s -i
     mv *.pkg.tar.xz $DIR_AUR
     rm -r $DIR_AUR/$OPTARG
      else
         echo "erro: não foi possível encontrar o pacote $OPTARG"
     exit 1
      fi
   else
      exit 1
   fi
   echo -e "\033[32;1mPacote instalado com sucesso\033[m"
   exit 0
}

atualizar() {
   local aux=0
   local pkg_aur=`pacman -Qmq`
   for i in $pkg_aur
   do
      wget -q http://aur.archlinux.org/packages/$i/$i/PKGBUILD
      if [ $? -eq 0 ]
      then
         local pkgver=$(awk -F'=' /^pkgver/'{print $NF}' PKGBUILD)
     local pkgrel=$(awk -F'=' /^pkgrel/'{print $NF}' PKGBUILD)
     local pkg_atual=$(echo $i $pkgver-$pkgrel)
     local pkg_inst=$(pacman -Q $i)
     local ult_atual=$(pacman -Qi $i | awk -F' : ' /^"Data da Instalação"/'{print $NF}')
     echo "Versão atual       : $pkg_atual"
     echo "Versão instalada   : $pkg_inst"
     echo -e "Última atualização : \033[33m$ult_atual\033[m"
     if [ "$pkg_atual" != "$pkg_inst" ]
     then
        echo -e "Status             : \033[31;1mDesatualizado\033[m"
        aux=$((aux + 1))
        local pkg_des="$pkg_des $i"
     else
        echo -e "Status             : \033[32;1mAtualizado\033[m"
     fi
     rm PKGBUILD
      else
         echo "erro: falha ao acessar http://aur.archlinux.org/"
     exit 1
      fi
   done
   if [ $aux -gt 0 ]
   then
      echo -e "\n\033[31;1mAtenção: $aux pacotes estão desatualizados:\033[m"
      echo "$pkg_des"
      echo -e "\n\033[33mUse pacrae -S <pacote> para atualizá-los (atualize apenas um por vez)\033[m"
   else
      echo -e "\n\033[32;1mTodos os pacotes estão atualizados\033[m"
   fi
   exit 0
}

while getopts ":hS:UC" opcao
do
   case "$opcao" in
      S) instalar ;;
      U) atualizar ;;
      C) limpar_cache ;;
      h) echo "$AJUDA"
           exit 0
      ;;
      \?) echo "Opção inválida: $OPTARG (use -h para obter ajuda)"
            exit 1
      ;;
      :) echo "Faltou o nome do pacote a ser instalado"
           exit 1
      ;;
   esac
done

echo "Nenhuma operação definida (use -h para obter ajuda)"
exit 0

Última edição por rae (23/11/2010 20:57:55)

Offline

#7 23/11/2010 20:59:27

estevao
Admin
De: Dublin, Irlanda
Registrado: 13/10/2009
Mensagens: 353

Re: Scripts úteis: poste aqui os que você fez ou que utiliza

rae escreveu:

Poiseh. Tava aqui tentando fazer um script para lidar com meus pacotes instalados via AUR, pois não queria instalar outro gerenciador de pacotes além do pacman para fazer isso. Segue abaixo o que fiz até agora. Não tenho muito conhecimento de programação em shell, então talvez vocês tenham algumas dicas para melhorar esse script.
Resumindo, ele checa se seus pacotes instalados a partir do AUR estão atualizados e também instala novos pacotes do AUR automaticamente. A parte de limpar o cache não tá pronta, só lista os arquivos .pkg.tar.xz da pasta ~/.aur/ e checa se existem arquivos repetidos. Detalhe: guardo todos os meus pacotes (.pkg.tar.xz) do AUR no diretorio ~/.aur/ , portanto você precisa criar esse diretório para ele funcionar...

PS: melhorei um pouco o código...

#!/bin/bash
#
# pacrae - Instala, atualiza e limpa cache de pacotes do AUR
#
#  ATENÇÃO: altere a variável DIR_AUR para o diretório onde
#  você guarda seus pacotes do AUR. O diretório deve existir!!!
#
# ----------------------------------------------------------
#  Este programa utiliza o pacman do Arch Linux para gerenciar
#  pacotes do AUR. Ele compila e instala pacotes, procura por 
#  atualizações de pacotes instalados e remove pacotes não
#  instalados do cache. Ele é uma boa opção para quem instala
#  pacotes do AUR mas não quer ter outro gerenciador de pacotes
#  além do pacman.
#
#  Exemplo de uso:
#     $ pacrae -U                  <- Procura atualizações
#     $ pacrae -S stockfish        <- Instala pacote stockfish
#     $ pacrae -C                  <- Limpa cache
#     $ pacrae -h                  <- Mostra ajuda
#
#
# Autor: rae <[email protected]>
#
# Licença: WTFPL <http://sam.zoy.org/wtfpl/COPYING>
#

DIR_AUR="/home/rae/.aur/"

AJUDA="
Uso: $(basename "$0") [OPÇÕES]

OPÇÕES:
   -S <pacote>   Instala o pacote especificado a partir do AUR
   -U          Procura atualizações para pacotes instalados
   -C         Remove pacotes não instalados do cache
   -h         Mostra esta tela de ajuda e sai
"

instalar() {
   echo -n "Você deseja instalar o pacote $OPTARG? [S/n] " ; read inst_opcao
   if [ "$inst_opcao" = 'S' ]
   then
      wget -q http://aur.archlinux.org/packages/$OPTARG/$OPTARG.tar.gz
      if [ $? -eq 0 ]
      then
         tar -zxf $OPTARG.tar.gz -C $DIR_AUR
     rm $OPTARG.tar.gz
     cd $DIR_AUR/$OPTARG
     makepkg -s -i
     mv *.pkg.tar.xz $DIR_AUR
     rm -r $DIR_AUR/$OPTARG
      else
         echo "erro: não foi possível encontrar o pacote $OPTARG"
     exit 1
      fi
   else
      exit 1
   fi
   echo -e "\033[32;1mPacote instalado com sucesso\033[m"
   exit 0
}

atualizar() {
   local aux=0
   local pkg_aur=`pacman -Qmq`
   for i in $pkg_aur
   do
      wget -q http://aur.archlinux.org/packages/$i/$i/PKGBUILD
      if [ $? -eq 0 ]
      then
         local pkgver=$(awk -F'=' /^pkgver/'{print $NF}' PKGBUILD)
     local pkgrel=$(awk -F'=' /^pkgrel/'{print $NF}' PKGBUILD)
     local pkg_atual=$(echo $i $pkgver-$pkgrel)
     local pkg_inst=$(pacman -Q $i)
     local ult_atual=$(pacman -Qi $i | awk -F' : ' /^"Data da Instalação"/'{print $NF}')
     echo "Versão atual       : $pkg_atual"
     echo "Versão instalada   : $pkg_inst"
     echo -e "Última atualização : \033[33m$ult_atual\033[m"
     if [ "$pkg_atual" != "$pkg_inst" ]
     then
        echo -e "Status             : \033[31;1mDesatualizado\033[m"
        aux=$((aux + 1))
        local pkg_des="$pkg_des $i"
     else
        echo -e "Status             : \033[32;1mAtualizado\033[m"
     fi
     rm PKGBUILD
      else
         echo "erro: falha ao acessar http://aur.archlinux.org/"
     exit 1
      fi
   done
   if [ $aux -gt 0 ]
   then
      echo -e "\n\033[31;1mAtenção: $aux pacotes estão desatualizados:\033[m"
      echo "$pkg_des"
      echo -e "\n\033[33mUse pacrae -S <pacote> para atualizá-los (atualize apenas um por vez)\033[m"
   else
      echo -e "\n\033[32;1mTodos os pacotes estão atualizados\033[m"
   fi
   exit 0
}

while getopts ":hS:UC" opcao
do
   case "$opcao" in
      S) instalar ;;
      U) atualizar ;;
      C) limpar_cache ;;
      h) echo "$AJUDA"
           exit 0
      ;;
      \?) echo "Opção inválida: $OPTARG (use -h para obter ajuda)"
            exit 1
      ;;
      :) echo "Faltou o nome do pacote a ser instalado"
           exit 1
      ;;
   esac
done

echo "Nenhuma operação definida (use -h para obter ajuda)"
exit 0

Não analisei a fundo o seu script, mas eu gostei do código. Às vezes as pessoas criticam quando alguém "reinventa a roda", pois você poderia usar perfeitamente o yaourt ou outro helper, mas eu acho essas iniciativas legais, principalmente se você se sente mais confortável em usar o seu próprio código. :-)


Por favor coloque [RESOLVIDO] no título do tópico quando o seu problema for solucionado.

Offline

#8 24/11/2010 09:50:31

fernandes
Membro
De: Petrolina - PE
Registrado: 18/11/2010
Mensagens: 10
Website

Re: Scripts úteis: poste aqui os que você fez ou que utiliza

estevao escreveu:
fernandes escreveu:

@estevao

Seu script ficou muito bom, na verdade eu acho que deveria ser uma função já do próprio pacman fazer esse papel ...
Sei que não é uma super coisa, mas estou mandando ele traduzido em pt_BR, caso alguém queira usar seu script e tenha dificuldades com o inglês.

Link do undeps em pt_BR -> http://paste.archlinux-br.org/1595

Muito legal a tradução fernandes, valeu :-)

EDIT: fiz uma nova versão do script com suporte ao sudo, se vc quiser traduzir essa também....


Manda o link do novo script que será um prazer traduzi-lo...

No aguardo! smile


Antonio Fernandes C. Neto
http://softwarelivre.org/fernandes

Offline

#9 24/11/2010 09:54:31

estevao
Admin
De: Dublin, Irlanda
Registrado: 13/10/2009
Mensagens: 353

Re: Scripts úteis: poste aqui os que você fez ou que utiliza

fernandes escreveu:
estevao escreveu:
fernandes escreveu:

@estevao

Seu script ficou muito bom, na verdade eu acho que deveria ser uma função já do próprio pacman fazer esse papel ...
Sei que não é uma super coisa, mas estou mandando ele traduzido em pt_BR, caso alguém queira usar seu script e tenha dificuldades com o inglês.

Link do undeps em pt_BR -> http://paste.archlinux-br.org/1595

Muito legal a tradução fernandes, valeu :-)

EDIT: fiz uma nova versão do script com suporte ao sudo, se vc quiser traduzir essa também....


Manda o link do novo script que será um prazer traduzi-lo...

No aguardo! smile

Oi fernandes, eu coloquei a nova versão no primeiro post deste tópico: http://forum.archlinux-br.org/viewtopic … 984#p17984.

Abraço.


Por favor coloque [RESOLVIDO] no título do tópico quando o seu problema for solucionado.

Offline

#10 24/11/2010 10:40:29

phillipe
Moderador
De: Novo Gama - GO
Registrado: 23/03/2008
Mensagens: 1.327
Website

Re: Scripts úteis: poste aqui os que você fez ou que utiliza

Estevao, dei uma olhada no seu script e tá bem bacana.
Agora só pra ficar melhor, dei uma otimizada no seu código conforme segue abaixo.
Retirei o excesso de "echo", adicionei uma variável PACMAN que armazena o caminho do pacman para quando você precisar executar o pacman é só chamar a variável $PACMAN ao invés do comando /usr/bin/pacman.  Acrescentei também uma opção mais viável de verificar se o script está sendo executado como root/sudo ou não.
Se não entender as modificações que fiz é só perguntar blz?! wink

#!/bin/sh
# undeps - This script lists and removes UNneeded DEPendencieS on Arch Linux
# Options: -l <list> | -r <remove> | -ra <remove all - recursive>
# Estêvão Valadão - [email protected]

loopflag=0
PACMAN=$(which pacman)

function VerficaPermissao() {
    if [ $(whoami) != 'root' ]; then
        echo -e "\r\n-> Erro! o script deve ser executado com privilégios administrativos. \n"
        exit 0
    fi
}

case "$1" in                      
  -l)
  echo -e "
  \r** DEPENDÊNCIAS DESNECESSÁRIAS  **
  \r-> Verificando dependências...
  "
  $PACMAN -Qdtq
  if [ "$?" = 1 ]; then
    echo -e "\n-> Seu sistema não possui dependências desnecessárias. \n"
  fi   
  ;;
  
  -r)
  VerficaPermissao
  
  while [ "$loopflag" = 0 ]
  do
    echo -e "
    \r** DEPENDÊNCIAS DESNECESSÁRIAS  **
    \r-> Verificando dependências...
    "
    $PACMAN -Qdtq
    if [ "$?" = 0 ]; then
      echo ""
      echo -n "Deseja remover esses pacotes? [Y/n] "
      read option
      if [ "$option" = "y" ] || [ "$option" = "" ]; then        
          $PACMAN -Rn $(pacman -Qdtq)
          echo -e "-> Dependência(s) desnecessária(s) removida(s) com sucesso!. \n"          
      elif [ "$option" = "n" ]; then
        exit 0
      fi  
    else
      loopflag=1
      echo -e "-> Seu sistema não possui dependências desnecessárias. \n"      
    fi
  done
  ;;
  
  -ra)
  VerficaPermissao
  $PACMAN -Qdtq > /dev/null
  if [ "$?" = 1 ]; then
    echo -e "
    \r** DEPENDÊNCIAS DESNECESSÁRIAS  **
    \r-> Verificando dependências...

    \r-> Seu sistema não possui dependências desnecessárias.
    "    
  else  
    echo -e "\n** DEPENDÊNCIAS DESNECESSÁRIAS - RECUSIVO **"
    echo -n "-> "    
    $PACMAN -Rsn $(pacman -Qdtq)    
  fi
  ;;
  *)
    echo "Uso: $0 {-l <list> | -r <remove> | -ra <remove all - recursive>}"
    echo ""
esac

exit 0

Última edição por phillipe (24/11/2010 10:42:52)


"NÃO HÁ NADA COMO A LIBERDADE." (Nelson Mandela)

Offline

#11 24/11/2010 10:49:47

estevao
Admin
De: Dublin, Irlanda
Registrado: 13/10/2009
Mensagens: 353

Re: Scripts úteis: poste aqui os que você fez ou que utiliza

phillipe escreveu:

Estevao, dei uma olhada no seu script e tá bem bacana.
Agora só pra ficar melhor, dei uma otimizada no seu código conforme segue abaixo.
Retirei o excesso de "echo", adicionei uma variável PACMAN que armazena o caminho do pacman para quando você precisar executar o pacman é só chamar a variável $PACMAN ao invés do comando /usr/bin/pacman.  Acrescentei também uma opção mais viável de verificar se o script está sendo executado como root/sudo ou não.
Se não entender as modificações que fiz é só perguntar blz?! wink

#!/bin/sh
# undeps - This script lists and removes UNneeded DEPendencieS on Arch Linux
# Options: -l <list> | -r <remove> | -ra <remove all - recursive>
# Estêvão Valadão - [email protected]

loopflag=0
PACMAN=$(which pacman)

function VerficaPermissao() {
    if [ $(whoami) != 'root' ]; then
        echo -e "\r\n-> Erro! o script deve ser executado com privilégios administrativos. \n"
        exit 0
    fi
}

case "$1" in                      
  -l)
  echo -e "
  \r** DEPENDÊNCIAS DESNECESSÁRIAS  **
  \r-> Verificando dependências...
  "
  $PACMAN -Qdtq
  if [ "$?" = 1 ]; then
    echo -e "\n-> Seu sistema não possui dependências desnecessárias. \n"
  fi   
  ;;
  
  -r)
  VerficaPermissao
  
  while [ "$loopflag" = 0 ]
  do
    echo -e "
    \r** DEPENDÊNCIAS DESNECESSÁRIAS  **
    \r-> Verificando dependências...
    "
    $PACMAN -Qdtq
    if [ "$?" = 0 ]; then
      echo ""
      echo -n "Deseja remover esses pacotes? [Y/n] "
      read option
      if [ "$option" = "y" ] || [ "$option" = "" ]; then        
          $PACMAN -Rn $(pacman -Qdtq)
          echo -e "-> Dependência(s) desnecessária(s) removida(s) com sucesso!. \n"          
      elif [ "$option" = "n" ]; then
        exit 0
      fi  
    else
      loopflag=1
      echo -e "-> Seu sistema não possui dependências desnecessárias. \n"      
    fi
  done
  ;;
  
  -ra)
  VerficaPermissao
  $PACMAN -Qdtq > /dev/null
  if [ "$?" = 1 ]; then
    echo -e "
    \r** DEPENDÊNCIAS DESNECESSÁRIAS  **
    \r-> Verificando dependências...

    \r-> Seu sistema não possui dependências desnecessárias.
    "    
  else  
    echo -e "\n** DEPENDÊNCIAS DESNECESSÁRIAS - RECUSIVO **"
    echo -n "-> "    
    $PACMAN -Rsn $(pacman -Qdtq)    
  fi
  ;;
  *)
    echo "Uso: $0 {-l <list> | -r <remove> | -ra <remove all - recursive>}"
    echo ""
esac

exit 0

Oi phillipe, gostei das alterações, principalmente da remoção do excesso de echo. Mas tem um problema, a verificação de root apenas avisa que o usuário precisa rodar o script com privilégios administrativos, mas ela não chama o sudo automaticamente caso o usuário tenha o sudo instalado no sistema. No meu caso se o sudo existir no sistema, ele usará o sudo automaticamente, do contrário ele mandará a mensagem de erro de falta de privilégio do próprio pacman.

Acho que os ajustes da variável $PACMAN e os do /n foram bem legais, e acredito que vai ficar legal se combinarmos aquela function VerificaPermissao com o sudo. :-)

Vou dar uma futucada hoje à noite e posto aqui pra vocês. Valeu pelas modificações :-)

PS. Fernandes, segura a tradução aí porque a galera tem colaborado sempre, então quando o script estiver mais maduro você manda bala. Valeu.


Por favor coloque [RESOLVIDO] no título do tópico quando o seu problema for solucionado.

Offline

#12 24/11/2010 11:02:02

phillipe
Moderador
De: Novo Gama - GO
Registrado: 23/03/2008
Mensagens: 1.327
Website

Re: Scripts úteis: poste aqui os que você fez ou que utiliza

Oi phillipe, gostei das alterações, principalmente da remoção do excesso de echo. Mas tem um problema, a verificação de root apenas avisa que o usuário precisa rodar o script com privilégios administrativos, mas ela não chama o sudo automaticamente caso o usuário tenha o sudo instalado no sistema. No meu caso se o sudo existir no sistema, ele usará o sudo automaticamente, do contrário ele mandará a mensagem de erro de falta de privilégio do próprio pacman.

Acho que os ajustes da variável $PACMAN e os do /n foram bem legais, e acredito que vai ficar legal se combinarmos aquela function VerificaPermissao com o sudo. :-)

Vou dar uma futucada hoje à noite e posto aqui pra vocês. Valeu pelas modificações :-)

Pronto amigão... Agora tá funcionando conforme você falou. wink

#!/bin/sh
# undeps - This script lists and removes UNneeded DEPendencieS on Arch Linux
# Options: -l <list> | -r <remove> | -ra <remove all - recursive>
# Estêvão Valadão - [email protected]

loopflag=0
PACMAN=$(which pacman 2> /dev/null) 
SUDO=$(which sudo 2> /dev/null) 

function VerficaPermissao() {
    if [ ! -z $SUDO ]; then
        PACMAN="sudo $(which pacman)"
    elif [ $(whoami) != 'root' ]; then
        echo -e "\r\n-> Erro! o script deve ser executado com privilégios administrativos. \n"
        exit 0
    fi    
}

case "$1" in                      
  -l)
  echo -e "
  \r** DEPENDÊNCIAS DESNECESSÁRIAS  **
  \r-> Verificando dependências...
  "
  $PACMAN -Qdtq
  if [ "$?" = 1 ]; then
    echo -e "\n-> Seu sistema não possui dependências desnecessárias. \n"
  fi   
  ;;
  
  -r)
  VerficaPermissao
  
  while [ "$loopflag" = 0 ]
  do
    echo -e "
    \r** DEPENDÊNCIAS DESNECESSÁRIAS  **
    \r-> Verificando dependências...
    "   
    $PACMAN -Qdtq
    if [ "$?" = 0 ]; then
      echo ""
      echo -n "Deseja remover esses pacotes? [Y/n] "
      read option
      if [ "$option" = "y" ] || [ "$option" = "" ]; then        
          $PACMAN -Rn $(pacman -Qdtq)
          echo -e "-> Dependência(s) desnecessária(s) removida(s) com sucesso!. \n"          
      elif [ "$option" = "n" ]; then
        exit 0
      fi  
    else
      loopflag=1
      echo -e "-> Seu sistema não possui dependências desnecessárias. \n"      
    fi
  done
  ;;
  
  -ra)
  VerficaPermissao
  $PACMAN -Qdtq > /dev/null
  if [ "$?" = 1 ]; then
    echo -e "
    \r** DEPENDÊNCIAS DESNECESSÁRIAS  **
    \r-> Verificando dependências...

    \r-> Seu sistema não possui dependências desnecessárias.
    "    
  else  
    echo -e "\n** DEPENDÊNCIAS DESNECESSÁRIAS - RECUSIVO **"
    echo -n "-> "    
    $PACMAN -Rsn $(pacman -Qdtq)    
  fi
  ;;
  *)
    echo "Uso: $0 {-l <list> | -r <remove> | -ra <remove all - recursive>}"
    echo ""
esac

exit 0

Última edição por phillipe (24/11/2010 11:02:40)


"NÃO HÁ NADA COMO A LIBERDADE." (Nelson Mandela)

Offline

#13 24/11/2010 11:06:34

estevao
Admin
De: Dublin, Irlanda
Registrado: 13/10/2009
Mensagens: 353

Re: Scripts úteis: poste aqui os que você fez ou que utiliza

phillipe escreveu:

Oi phillipe, gostei das alterações, principalmente da remoção do excesso de echo. Mas tem um problema, a verificação de root apenas avisa que o usuário precisa rodar o script com privilégios administrativos, mas ela não chama o sudo automaticamente caso o usuário tenha o sudo instalado no sistema. No meu caso se o sudo existir no sistema, ele usará o sudo automaticamente, do contrário ele mandará a mensagem de erro de falta de privilégio do próprio pacman.

Acho que os ajustes da variável $PACMAN e os do /n foram bem legais, e acredito que vai ficar legal se combinarmos aquela function VerificaPermissao com o sudo. :-)

Vou dar uma futucada hoje à noite e posto aqui pra vocês. Valeu pelas modificações :-)

Pronto amigão... Agora tá funcionando conforme você falou. wink

#!/bin/sh
# undeps - This script lists and removes UNneeded DEPendencieS on Arch Linux
# Options: -l <list> | -r <remove> | -ra <remove all - recursive>
# Estêvão Valadão - [email protected]

loopflag=0
PACMAN=$(which pacman 2> /dev/null) 
SUDO=$(which sudo 2> /dev/null) 

function VerficaPermissao() {
    if [ ! -z $SUDO ]; then
        PACMAN="sudo $(which pacman)"
    elif [ $(whoami) != 'root' ]; then
        echo -e "\r\n-> Erro! o script deve ser executado com privilégios administrativos. \n"
        exit 0
    fi    
}

case "$1" in                      
  -l)
  echo -e "
  \r** DEPENDÊNCIAS DESNECESSÁRIAS  **
  \r-> Verificando dependências...
  "
  $PACMAN -Qdtq
  if [ "$?" = 1 ]; then
    echo -e "\n-> Seu sistema não possui dependências desnecessárias. \n"
  fi   
  ;;
  
  -r)
  VerficaPermissao
  
  while [ "$loopflag" = 0 ]
  do
    echo -e "
    \r** DEPENDÊNCIAS DESNECESSÁRIAS  **
    \r-> Verificando dependências...
    "   
    $PACMAN -Qdtq
    if [ "$?" = 0 ]; then
      echo ""
      echo -n "Deseja remover esses pacotes? [Y/n] "
      read option
      if [ "$option" = "y" ] || [ "$option" = "" ]; then        
          $PACMAN -Rn $(pacman -Qdtq)
          echo -e "-> Dependência(s) desnecessária(s) removida(s) com sucesso!. \n"          
      elif [ "$option" = "n" ]; then
        exit 0
      fi  
    else
      loopflag=1
      echo -e "-> Seu sistema não possui dependências desnecessárias. \n"      
    fi
  done
  ;;
  
  -ra)
  VerficaPermissao
  $PACMAN -Qdtq > /dev/null
  if [ "$?" = 1 ]; then
    echo -e "
    \r** DEPENDÊNCIAS DESNECESSÁRIAS  **
    \r-> Verificando dependências...

    \r-> Seu sistema não possui dependências desnecessárias.
    "    
  else  
    echo -e "\n** DEPENDÊNCIAS DESNECESSÁRIAS - RECUSIVO **"
    echo -n "-> "    
    $PACMAN -Rsn $(pacman -Qdtq)    
  fi
  ;;
  *)
    echo "Uso: $0 {-l <list> | -r <remove> | -ra <remove all - recursive>}"
    echo ""
esac

exit 0

Agora sim, parece ter ficado show, vou testá-lo depois ;-)

Está usando aí no seu arch?


Por favor coloque [RESOLVIDO] no título do tópico quando o seu problema for solucionado.

Offline

#14 24/11/2010 11:08:23

phillipe
Moderador
De: Novo Gama - GO
Registrado: 23/03/2008
Mensagens: 1.327
Website

Re: Scripts úteis: poste aqui os que você fez ou que utiliza

estevao escreveu:

Agora sim, parece ter ficado show, vou testá-lo depois ;-)

Está usando aí no seu arch?

Estou sim! Muito bacana! big_smile
Parabéns pela iniciativa e precisando é só falar cum nóis! wink


"NÃO HÁ NADA COMO A LIBERDADE." (Nelson Mandela)

Offline

#15 24/11/2010 11:09:39

estevao
Admin
De: Dublin, Irlanda
Registrado: 13/10/2009
Mensagens: 353

Re: Scripts úteis: poste aqui os que você fez ou que utiliza

phillipe escreveu:
estevao escreveu:

Agora sim, parece ter ficado show, vou testá-lo depois ;-)

Está usando aí no seu arch?

Estou sim! Muito bacana! big_smile
Parabéns pela iniciativa e precisando é só falar cum nóis! wink

Valeu wink


Por favor coloque [RESOLVIDO] no título do tópico quando o seu problema for solucionado.

Offline

#16 24/11/2010 11:14:59

fernandes
Membro
De: Petrolina - PE
Registrado: 18/11/2010
Mensagens: 10
Website

Re: Scripts úteis: poste aqui os que você fez ou que utiliza

@estevao

Segue o script atualizado para usar o SUDO em pt_BR.

Link: http://paste.archlinux-br.org/1597

Valeus!


Antonio Fernandes C. Neto
http://softwarelivre.org/fernandes

Offline

#17 24/11/2010 11:20:54

estevao
Admin
De: Dublin, Irlanda
Registrado: 13/10/2009
Mensagens: 353

Re: Scripts úteis: poste aqui os que você fez ou que utiliza

fernandes escreveu:

@estevao

Segue o script atualizado para usar o SUDO em pt_BR.

Link: http://paste.archlinux-br.org/1597

Valeus!

Valeu fernandes. Eu vou acabar fazendo mais algumas modificações mas vou disponibilizar também uma versão pt_BR baseada na sua. Abraço.


Por favor coloque [RESOLVIDO] no título do tópico quando o seu problema for solucionado.

Offline

#18 05/05/2011 20:03:48

J~
Membro
Registrado: 02/04/2011
Mensagens: 5

Re: Scripts úteis: poste aqui os que você fez ou que utiliza

#!/bin/bash
# Autor: J

DIR=/var/log/

FILES=$(ls $DIR | cut -d '' -f1)

echo ":: Iniciando limpeza"

for FILE in $FILES
do
  if [ -f $DIR$FILE ]
  then
    if [ -s $DIR$FILE ]
    then
      cat /dev/null > $DIR$FILE
      echo ":: $FILE foi limpo"
    fi
  fi
done

Fiz esse script para limpar os logs.

Porque, antes, eu utilizava varios "cat /dev/null > ..." em um arquivo.

Última edição por J~ (05/05/2011 20:07:25)

Offline

#19 06/05/2011 05:30:24

alexcortes
Membro
Registrado: 25/12/2009
Mensagens: 135

Re: Scripts úteis: poste aqui os que você fez ou que utiliza

Boas!!!

Eu uso esse, não foi eu que fiz (o autor está no script), catei na wiki do Arch e funciona perfeitamente para mim. Depois vou testar o do Estevão.

#!/bin/bash
#-*- coding: utf-8 -*-

#### Limpador de cache, logs, pacotes desnecessários e arquivos de backup

##    Autor:    Renan Tomal Fernandes
##    E-mail: renan  arroba  kauamanga  ponto  com  ponto br
##     Última alteração:    2009-11-06
##     Depende de:
##            coreutils
##            pacman


. /etc/rc.conf
. /etc/rc.d/functions

function limpa_logs() {
    _logs_dir=/var/log
    log "Pasta de logs:" 1
    log "Antes:  $(du -sh "$_logs_dir")" 2

    find "$_logs_dir" |
        while read line; do
            if [ -f "$line" ]; then
                echo '' > "$line"
            fi
        done

    log "Depois: $(du -sh "$_logs_dir")" 2
    return 0
}

function limpa_pacotes_desnecessarios() {

    log "Pacotes desnecessários:" 1

    _packages=$(pacman -Qdtq)

    if [ -n "$_packages" ]; then
        (pacman -Rns $_packages && log "$(echo $_packages | wc -l) pacotes removidos($_packages)" 2) ||
        (log "Falha ao rodar o seguinte comando: pacman -Rns $_packages" 2 && return 1)
    else
        log "Nenhum pacote desnecessário encontrado" 2
    fi
    return 0
}

function limpa_cache_pacman(){

    log "Cache do pacman:" 1

    log "Antes:" 2 
    log "Tamanho: $(du -sh /var/cache/pacman/pkg/)" 3
    log "Número de arquivos: $(ls /var/cache/pacman/pkg | wc -l)" 3

    pacman -Sc --noconfirm >/dev/null 2>&1

    if [ $? != 0 ]; then
        log "Houve um erro ao executar: pacman -Sc --noconfirm" 2
        return 1
    fi

    log "Depois:" 2
    log "Tamanho: $(du -sh /var/cache/pacman/pkg/)" 3
    log "Número de arquivos: $(ls /var/cache/pacman/pkg | wc -l)" 3

    return 0

}

function limpa_yaourtbuild() {

    log "yaourt-build" 1

    if [ -d /var/abs/local/yaourtbuild/* ]; then
        log "Antes:  $(du -sh /var/abs/local/yaourtbuild/)" 2
        ls /var/abs/local/yaourtbuild/* |
            while read line; do
                if [ $INTERACTIVE == 1 ]; then
                    question "Apagar $line?"
                    if [ $question == 1 ]; then
                        rm -rf "$line"
                    fi
                else
                    rm -rf "$line"
                fi
            done
        log "Depois: $(du -sh /var/abs/local/yaourtbuild/)" 2
    else
        log "Nada encontrado" 2
    fi

    return 0
}

function limpa_yaourttmp(){

    log "yaourt-tmp" 1

    if [ -d /tmp/yaourt-tmp-* ]; then
        log "Antes:  $(du -sh /tmp)" 2
        rm -rf /tmp/yaourt-tmp-*
        log "Depois: $(du -sh /tmp)" 2
    else
        log "Nada encontrado" 2
    fi

    return 0

}

function limpa_backups(){
    log "Backups:" 1

    find / -iname "*~" -o -iname "*.bak" -o -iname "*.tmp" > /tmp/bkp_log
    count=0

    for i in $(seq 1 $(cat /tmp/bkp_log | wc -l )); do
        line=$(cat /tmp/bkp_log | head -n $i | tail -n 1)
        if [ $INTERACTIVE == 1 ]; then
            if [ -f "$line" ]; then
                question "Remover arquivo $line?"
            else
                question "Remover diretório $line?"
            fi

            if [ $question == 1 ]; then
                rm -rf "$line"
                count=$(expr $count + 1)
            fi
        else
            rm -rf "$line"
            count=$(expr $count + 1)
        fi
    done

    rm /tmp/bkp_log

    log "Arquivos removidos: $count" 2
    return 0
}

function add_bkp_file(){
    if [ ! -n "$arqs" ]; then
        arqs="$arqs\n"
    fi
    arqs="$arqs$1"
}

function pega_opcoes(){

    LIMPA_LOGS=1
    LIMPA_PACOTES=1
    LIMPA_CACHE=1
    LIMPA_YAOURTBUILD=1
    LIMPA_YAOURTTMP=1
    LIMPA_BACKUPS=0
    INTERACTIVE=0
    HELP=0
    VERSION=0.0.2

    until [ -f "$1" -o "$1" = "--" -o -z "$1" ]
    do
        case "$1" in
            --nologs | -l )
                LIMPA_LOGS=0
                ;;
            --nopackages | -p )
                LIMPA_PACOTES=0
                ;;
            --nocache | -c )
                LIMPA_CACHE=0
                ;;
            --noyaourtbuild | -b )
                LIMPA_YAOURTBUILD=0
                ;;
            --noyaourttmp | -t )
                LIMPA_YAOURTTMP=0
                ;;
            --clear-backups | -cb )
                LIMPA_BACKUPS=1
                ;;
            --interactive | -i )
                INTERACTIVE=1
                ;;
            --help | -h )
                usage
                exit 0
                ;;
            --version | -v )
                echo $VERSION
                exit 0
                ;;
            * )
                usage
                error "parâmetro desconhecido: $1" 1
                ;;
        esac
        shift
    done

}

function error(){
    echo -e "\e[1;31mERRO\e[0;31m: $1\e[m"
    exit $2
}

function log(){
    for((i=0;i<$2;i++)); do
        log="$log  "
    done
    log="$log $1\n"
}

function roda_comandos(){
    roda_funcao limpa_logs                   $LIMPA_LOGS        "Limpando logs"                                      "Limpar logs?"
    roda_funcao limpa_cache_pacman           $LIMPA_CACHE       "Limpando pacotes não instalados do cache do pacman" "Limpar pacotes não instalados do cache?"
    roda_funcao limpa_yaourtbuild            $LIMPA_YAOURTBUILD "Limpando yaourtbuild"                               "Limpar pasta de compilação do yaourt?"
    roda_funcao limpa_yaourttmp              $LIMPA_YAOURTTMP   "Limpando yaourt-tmp"                                "Limpar pasta temporária do yaourt?"
    roda_funcao limpa_pacotes_desnecessarios $LIMPA_PACOTES     "Removendo pacotes desnecessários"                   "Remover pacotes desnecessários(dependências inúteis)?"
    roda_funcao limpa_backups                $LIMPA_BACKUPS     "Limpando backups"                                   "Remover arquivos de backups?"
}

function roda_funcao(){
    if [ $2 == 1 ]; then

        if [ $INTERACTIVE == 1 ]; then
            question "$4"
            if [ $question == 0 ]; then
                return 1
            fi
        fi

        stat_busy "$3"
        $1
        if [ $? == 0 ]; then
            stat_done "$3"
        else
            stat_fail "$3"
        fi
    fi
}

function question(){
    printf "\e[1;33m?? \e[1;37m$1 \e[1;30m[\e[1;32mS\e[1;30m/\e[1;31mN\e[1;30m]:\e[m "
    read out

    case "$out" in
        's' | 'S' )
            resp=1
            ;;
        * )
            resp=0
            ;;
    esac

    if [ "x$2" == "xecho" ]; then
        echo $resp
    else
        question=$resp
    fi

    return 0
}

function usage(){
    echo "cleaner versão: $VERSION"
    echo "  Opções:"
    echo "    -h  | --help          : Mostra essa mensagem de ajuda e sai"
    echo "    -v  | --version       : Mostra a versão do programa e sai"
    echo "    -l  | --nologs        : Não esvazia os arquivos de log"
    echo "    -c  | --nocache       : Não limpa o cache do pacman"
    echo "    -p  | --nopackages    : Não remove os pacotes desnecessários(dependências que não são mais necessárias)"
    echo "    -b  | --noyaourtbuild : Não remove o conteudo de /var/abs/local/yaourtbuild"
    echo "    -t  | --noyaourttmp   : Não remove /tmp/yaourt-tmp-*"
    echo "    -cb | --clear-backups : Remove todos os *~ *.bak *.tmp de /"
    echo "    -i  | --interactive   : Modo interativo / não automático"
}

pega_opcoes [email protected]

if [ "$(whoami)" != "root" ]; then

    _s=$(which sudo 2>/dev/null)
    echo "É necessário rodar esse script como root. usando o seguinte comando:"

    if [ -n "$_s" ]; then
        echo "sudo '$0' [email protected]"
        sudo "$0" [email protected]
    else
        echo "su -c '\"$0\" [email protected]'"
        su -c "'$0' [email protected]"
    fi
    exit 0
fi

log "Informações" 0

roda_comandos
echo -e "$log"

## Sugestões:
##        autor:
##        data:
##        conteúdo:

Não leve a vida tão a sério, afinal ninguém sairá vivo dela!!!

Offline

#20 18/07/2011 20:52:28

zeroday
Membro
Registrado: 17/07/2010
Mensagens: 62

Re: Scripts úteis: poste aqui os que você fez ou que utiliza

estevao escreveu:

Crio este tópico para compartilharmos os scripts que usamos no dia a dia para facilitar a nossa vida. Para começar, vou postar um script que criei logo quando comecei a usar o Arch. A necessidade era deixar o meu Arch limpo, sem dependências desnecessárias.

Segue o script:

EDIT: script atualizado para suportar sudo.

#!/bin/sh
# undeps - This script lists and removes UNneeded DEPendencieS on Arch Linux
# Options: -l <list> | -r <remove> | -ra <remove all - recursive>
# Estêvão Valadão - [email protected]

loopflag=0

case "$1" in                      
  -l)
  echo ""
  echo "** UNNEEDED DEPENDENCIES **"
  echo "-> checking dependencies..."
  echo ""
  /usr/bin/pacman -Qdtq
  if [ "$?" = 1 ]; then
    echo "-> Your system doesn't have unneeded dependencies."
  fi 
  echo ""
  ;;
  -r)
  while [ "$loopflag" = 0 ]
  do
    echo ""
    echo "** UNNEEDED DEPENDENCIES **"
    echo "-> checking dependencies..."
    echo ""
    /usr/bin/pacman -Qdtq
    if [ "$?" = 0 ]; then
      echo ""
      echo -n "Do you want to remove these packages? [Y/n] "
      read option
      if [ "$option" = "y" ] || [ "$option" = "" ]; then
        if [ -f /usr/bin/sudo ]; then
          /usr/bin/sudo /usr/bin/pacman -Rn $(pacman -Qdtq)
          echo "-> Unneeded dependencie(s) sucessfully removed."
          echo ""
        else
          /usr/bin/pacman -Rn $(pacman -Qdtq)
          echo "-> Unneeded dependencie(s) sucessfully removed."
          echo ""
        fi
      elif [ "$option" = "n" ]; then
        exit 0
      fi  
    else
      loopflag=1
      echo "-> Your system doesn't have unneeded dependencies."
      echo ""
    fi
  done
  ;;
  -ra)
  /usr/bin/pacman -Qdtq > /dev/null
  if [ "$?" = 1 ]; then
    echo ""
    echo "** UNNEEDED DEPENDENCIES **"
    echo "-> checking dependencies..."
    echo ""
    echo "-> Your system doesn't have unneeded dependencies."
    echo ""
  else  
    echo ""
    echo "** UNNEEDED DEPENDENCIES - RECURSIVE **"
    echo -n "-> "
    if [ -f /usr/bin/sudo ]; then
       /usr/bin/sudo /usr/bin/pacman -Rsn $(pacman -Qdtq)
    else
       /usr/bin/pacman -Rsn $(pacman -Qdtq)
    fi
  fi
  ;;
  *)
    echo "Usage: $0 {-l <list> | -r <remove> | -ra <remove all - recursive>}"
    echo ""
esac
exit 0

Utilização:

undeps -l lista as dependências desnecessárias do sistema
undeps -r remove as dependências desnecessárias por etapas
undeps -ra remove todas as dependências desnecessárias de uma só vez (recursivamente) - sou viciado neste comando :-)

PS. Uma outra alternativa é criar aliases para os comandos do pacman, a desvantagem é que você deixa de ter as mensagens fornecidas pelo script.

Seu script eh uma mao na roda alex wink

Offline

Rodapé do site