Dernier message de la page précédente :
Merci cyrille pour ces précisions enrichissantes.Concernant la commande « sort » : après quelques recherches, j'ai trouvé la solution avec l'option « -V ». Doublé de l'option « -r », les noyaux sont triés correctement même au passage à la centaine.
Concernant les fichiers temporaires, je les garde car j'en ai besoin pour la suite de mon script.
En fait, c'est toutes les sorties éventuelles après les deux premières qui m'intéressent pour le unhold.Pour le unhold, utilise tail (c'est la dernière sortie qui t'interesse). Un exemple
Voilà donc ce que donne mon script après corrections :
Code : Tout sélectionner
#!/bin/bash
if [ "$EUID" -ne 0 ]
then
echo "Lancer ce script en mode administrateur."
exit
fi
PREFIX=/tmp/
dpkg -l | grep 'linux-image-[0-9]' | grep generic | cut -d ' ' -f 3 | sort -V -r > ${PREFIX}tmp1.sh
dpkg -l | grep 'linux-image-[0-9]' | grep lowlatency | cut -d ' ' -f 3 | sort -V -r > ${PREFIX}tmp2.sh
sed -i -e '1,2s/^/sudo apt-mark hold /' ${PREFIX}tmp1.sh ${PREFIX}tmp2.sh
sed -i -e '3,$s/^/sudo apt-mark unhold /' ${PREFIX}tmp1.sh ${PREFIX}tmp2.sh
sed -i '1i \#!/bin/bash' ${PREFIX}tmp1.sh ${PREFIX}tmp2.sh
chmod 755 ${PREFIX}tmp1.sh ${PREFIX}tmp2.sh
echo -e "\ncontenu de tmp1.sh :\n********************\n"
cat ${PREFIX}tmp1.sh
echo -e "\ncontenu de tmp2.sh :\n********************\n"
cat ${PREFIX}tmp2.sh
menu()
{
echo -e "\n***************************************************"
echo "***************************************************"
echo "*** Exécuter et effacer tmp1.sh et tmp2.sh : 1 ***"
echo "*** Exécuter et garder tmp1.sh et tmp2.sh : 2 ***"
echo "*** Quitter et effacer tmp1.sh et tmp2.sh : 3 ***"
echo "*** Quitter et garder tmp1.sh et tmp2.sh : 4 ***"
echo "***************************************************"
echo -e "***************************************************\n"
read menu
case $menu in
1)
${PREFIX}tmp1.sh
${PREFIX}tmp2.sh
rm ${PREFIX}tmp1.sh ${PREFIX}tmp2.sh
;;
2)
${PREFIX}tmp1.sh
${PREFIX}tmp2.sh
echo -e "\nLes fichiers tmp1.sh et tmp2.sh sont dans le dossier ${PREFIX}.\n"
;;
3)
rm ${PREFIX}tmp1.sh ${PREFIX}tmp2.sh
;;
4)
echo -e "\nLes fichiers tmp1.sh et tmp2.sh sont dans le dossier ${PREFIX}.\n"
;;
*)
echo -e "\nChoix inexistant. Veuillez recommencer.\n"
menu
;;
esac
}
menu
menu2()
{
echo -e "\n********************************"
echo "********************************"
echo "*** Exécuter autoremove : 1 ***"
echo "*** Quitter : 2 ***"
echo "********************************"
echo -e "********************************\n"
read menu2
case $menu2 in
1)
apt-get autoremove
exit
;;
2)
exit
;;
*)
echo -e "\nChoix inexistant. Veuillez recommencer.\n"
menu2
;;
esac
}
menu2