Table des matières

aptecho un script pour afficher ses fichiers de sources et de preferences

Le script

aptecho
#! /bin/bash
 
#  This program is free software; you can redistribute it and/or modify
#  it under the terms of the GNU General Public License as published by
#  the Free Software Foundation; either version 2 of the License, or
#  (at your option) any later version.
#  
#  This program is distributed in the hope that it will be useful,
#  but WITHOUT ANY WARRANTY; without even the implied warranty of
#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#  GNU General Public License for more details.
#  
#  You should have received a copy of the GNU General Public License
#  along with this program; if not, write to the Free Software
#  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
#  MA 02110-1301, USA.
#  
#  
 
# Liste des fichier du sossier /etc/apt/sources.list.d avec l'extension .list
liste_sources=$(find /etc/apt/sources.list.d -type f -name *.list)
# Liste des fichiers de preference du dossier /etc/apt/preferences.d
list_pref=$(find /etc/apt/preferences.d -type f)
 
function usage () {
 
echo "-s affichage sur la sortie standard"
echo "-b sortie bbcode adapté à la coloration syntaxique avec geshi"
 
}
 
function sortie_std () {
 
# Test pour savoir si pygmentize existe
# La commande de concatenation sera cat si elle n'est pas disponible, et pygmentize sinon
! pygmentize -V >  /dev/null 2>&1
if [ $? -eq  0 ]
 then
    echo Ce script peut utiliser pygmentize pour colorer la sortie standard
    echo -e "Pour bénéficier de cette fonctionalité \n installer python-pygments avec apt-get install python-pygments"
    echo "Le script utilisera cat sans coloration pour l'instant"
    comCat="cat"
  else
    comCat="pygmentize -g"
fi
 
# Encadre le nom des fichiers par des dièses
function pagination() {
  function hashtags () {
  echo -en "\033[1;33m"
  for((rc=0;rc<=$1+3;rc++))
    do
      echo -en "#"
    done
  echo -e "\033[m"
}
  function hashspaces () {
    echo -en "\033[1;33m"
    echo -en "#"
    for((nc=0;nc<$1+2;nc++))
    do
      echo -en " "
    done
    echo -e "#\033[m"
}
  #nbcar=$(echo -n $1 | wc -m) equivalent à la ligne suivante, merci Hypathie ;)
  nbcar=${#1}
  hashtags $nbcar
  hashspaces $nbcar
  echo -en "\033[1;33m# "
  echo -n $1
  echo -e " #\033[m"
  hashspaces $nbcar
  hashtags $nbcar
 
}
pagination "Contenu de /etc/apt/sources.list"
$comCat /etc/apt/sources.list
 
#Saute 2 lignes
for((rc=0;rc<=3;rc++))
do
  echo
done
 
 
#Affichage du contenu du dossier /etc/apt/sources.list.d
for ligne in $liste_sources
do
  if [ -s $ligne ]
    then
      pagination "Contenu de $ligne"
      $comCat $ligne
      echo
  fi
done
 
# Affichage du fichier principal de preferences
if [ -s /etc/apt/preferences ]
    then
      pagination "Contenu de /etc/apt/preferences"
      $comCat /etc/apt/preferences
fi
 
#Affichage des fichiers de /etc/apt/prefrences.d
for ligne in $list_pref
do
  if [ -s $ligne ]
    then
      pagination "Contenu de $ligne"
      $comCat $ligne
  fi
done
 
}
 
 
function bbcode {
 
#Définitiopn des balises bbcode
bal_src="[code=apt_sources]"
bal_pref="[code=apt_preferences]"
bal_close="[/code]"
 
 
#Sources.list principal
echo "/etc/apt/sources.list"
echo $bal_src
cat /etc/apt/sources.list
echo $bal_close
 
# Fichiers de /etc/apt/sources.list.d
for ligne in $liste_sources
do
  if [ -s $ligne ]
    then
      echo $ligne
      echo $bal_src
      cat $ligne
      echo $bal_close
      echo
  fi
done
 
# preferences principal
if [ -s /etc/apt/preferences ]
    then
      echo "/etc/apt/preferences"
      echo $bal_pref
      cat /etc/apt/preferences
      echo $bal_close
fi
 
# preferences de /etc/apt/prefrences.d
for ligne in $list_pref
do
  if [ -s $ligne ]
    then
      echo "$ligne"
      echo $bal_pref
      cat $ligne
      echo $bal_close
  fi
done
 
}
 
 
#Verification d'au moins une option
# Par défaut sortie standard
if [ $# -eq 0 ]
then
   sortie_std
fi
 
# Choix des options
while getopts sb option
do
  case $option in
  s) sortie_std ;;
  b) bbcode ;;
  ?) echo usage ;;
  esac
done

Installation

Télécharger le script et le rendre exécutable avec

chmod a+x aptecho

Le placer dans ~/.local/bin/ S'assurer que ce dossier est bien dans votre PATH avec

echo $PATH

Si c'est le cas, tout roule, sinon, ajouter dans votre fichier ~/.bashrc

export PATH=$PATH:~/.local/bin

Utilisation

Pour un affichage en couleur des fichiers à l'écran (nécessite la présence de la commande pygmentize du paquet ''python-pygments'

aptecho #ou
aptecho -s

Pour un affichage avec les balises bbcode prêtes à l’emploi pour le forum DF

aptecho -b

Enjoy :-)