====== aptecho un script pour afficher ses fichiers de sources et de preferences ======
* Objet : Une seule commande pour afficher les sources
* Niveau requis : {{tag>débutant}}
* Commentaires : //Pour les feignants qui préfèrent taper une seule commande au lieu de 4 //
* Débutant, à savoir : [[:doc:systeme:commandes:le_debianiste_qui_papillonne|Utiliser GNU/Linux en ligne de commande, tout commence là !.]] :-) Mais aussi [[doc:programmation:shell:path|le path ou comment Debian sait situer vos commandes]], et enfin [[doc:systeme:chmod|la commande chmod]]
===== Le script =====
#! /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 :-)