Les commandes pratiques sous Linux
Pour éviter de les conserver trop longtemps dans un historique et risquer de les perdre et par là même en faire profiter les autres.
- Les commandes pratiques sous Linux
- APT
- Supprimer le contenu d'un fichier
- GNU Privacy Guard
- manipulation image
- manipulation vidéo
- Manipulation des PostScript et des pdf
- Changer le fuseau horaire de l'horloge de sa machine
- Sed
- Racheter de la RAM
APT
Faire un peu de nettoyage
Via "dpkg -l"
dpkg --purge $(COLUMNS=200 dpkg -l | grep "^rc" | tr -s ' ' | cut -d ' ' -f 2)
Via "dpkg --get-selections"
aptitude purge $(dpkg --get-selections | grep deinstall | awk '{print $1}')
Divers
On peut aimer aussi :
aptitude clean aptitude autoclean apt-get autoremove aptitude remove `deborphan`
Forcer le fonctionnement de dpkg
Parfois, les outils traditionnels de gestion de paquets ne fonctionnent plus à cause de paquets problématiques. Les options force de dpkg sont alors les bienvenues. En premier lieu, prendre un peu de temps pour lire le manuel.
dpkg --force-help
Puis on peut essayer graduellement :
dpkg --force-remove-reinstreq -P nom_du_paquet dpkg --force-overwrite -i emplacement_du_paquet.deb dpkg --force-all -P nom_du_paquet dpkg --force-all -i emplacement_du_paquet.deb
Aptitude : Motifs de recherche
Après avoir installé le paquet aptitude-doc-fr, tout se trouve ici : /usr/share/doc/aptitude/html/fr/ch02s03.html
Toutes les spécificités du format d'affichage se trouvent ici /usr/share/doc/aptitude/html/fr/ch02s04s01.html#secDisplayFormat
Application 1 : Revenir à Ubuntu après avoir voulu tester Kubuntu
L'intersection entre les dépendances des méta-paquets ubuntu-desktop et kubuntu-desktop n'étant pas nulle.
Il faut donc garder 1 et 2 et désintaller uniquement 3. Le filtre de recherche est :
aptitude search ~i~R"kubuntu-desktop"!~R"^ubuntu-desktop"
En fonction du shell utilisé, il faut déspécialiser le point d'exclamation et le tilde avec un anti-slash.
Ensuite on purge avec :
sudo aptitute purge `filtre_ci_dessus`
Application 2 : Faire du ménage
aptitude purge ~c
Application 3 : mettre à jour coûte que coûte
parfois, lors de gros bug comme celui-ci #192992 qui a tout de même 50 duplicates et qui paralyse complètement APT, on aime
sudo aptitude clean # vider le cache d'APT sudo aptitude -d safe-upgarde # -d seulement télécharger sudo dpkg -i /var/cache/apt/archives/*.deb # installer à la main
C'est sensé être une application aux motifs de recherche mais la commande initiale aptitude download "~U" ne fonctionne pas.
Retraiter une mbox avec procmail
Il faut utiliser formail pour découper la mbox en mails individuels et les renvoyer dans procmail avec la commande :
cat /ta/mbox | formail -s procmail
- ou encore :
formail -s procmail < /ta/mbox
Envoyer des mails
avec exim4
Sur debian/ubuntu, il vous faut les paquets exim4 et mailx. A l'installation d'exim4, il faut spécifier qu'on veut juste envoyer des mails sans serveur de mail en local, puis préciser son nom de machine et le serveur smtp à utliser.
Pour reconfigurer exim4 si nécessaire :
dpkg-reconfigure -plow exim4-config
Ensuite, il suffit de taper :
mail -s titre_du_message adresse_email < corps_du_message
corps_du_message est un fichier texte enregistré dans votre home.
Si un mail reste dans la file d'attente mailq, on peut taper pour en savoir plus:
exim4 -Mvl <msgid>
avec ssmtp
sSmtp n'a plus l'air maintenu depuis longtemps, et a plein de limitations désagréables.
Sur debian/ubuntu, il vous faut les paquets ssmtp et mailx. A l'installation, rien n'est demandé mais il faut éditer le fichier /etc/ssmtp/ssmtp.conf et renseigner les champs :
#Spécifie a quelle adresse doit être envoyé les mails destiné à root root=nom@domaine.qqch mailhub=smtp.crans.org # rewriteDomain=toto.net hostname=nom_de_machine FromLineOverride=YES
Une option est en commentaire (pour les décommenter, enlever le dièse en début de ligne). L'option rewriteDomain permet de spécifier le nom de domaine par défaut des expéditeurs. Par exemple, s'il est mis à crans.org, les mails générés par le système sembleront venir de <root AT crans DOT org>. De même, si un mail est envoyé à "machin", sans spécifié le domaine, ssmtp écrira automatiquement le domaine par celui spécifié par rewriteDomain : machin@toto.net. Donc si le tout ne donne pas une adresse mail valide, le mail n'arrivera jamais...
A priori, cela n'a pas besoin d'être un vrai nom de domaine, mais la plupart des "vrais" serveurs smtp demandent un nom de domaine valide s'il s'agit de relayer du courrier vers d'autres domaines. La valeur par défaut est la valeur de hostname (ce qui est tout à fait convenable). L'option FromLineOverride=YES sert à utiliser les options comme 'From:' dans la commande mail (je crois, je suis presque sur)
Il faut aussi éditer le fichier /etc/ssmtp/revaliases, qui permet de personnaliser le champ {{From:}} d'un mail suivant l'utilisateur.
root:toto@toto.net:smtp.toto.net
Ici, tous les mails de l'utilisateur root seront en fait envoyés avec {{From: toto@toto.net}} en utilisant le serveur smtp.toto.net.
Pour envoyer les mails, les mêmes commandes qu'avec exim4 marchent.
Exemples :
echo "Mail simple"|mail -s "Test 1" adresse_mail
echo "Mail avec From"|mail -s "Test 2" adresse_mail -a 'From:adresse_mail@expediteur.org'
echo "Mail avec Reply"|mail -s "Test 3" adresse_mail -a 'From: On_peut_mettre_un_nom <adresse_mail@expediteur.org>' -a 'Reply-To: Un_Nom <adresse_mail@reply.org>'
Supprimer le contenu d'un fichier
Pour supprimer le contenu d'un fichier, par exemple un fichier de journal, on peut au choix :
effacer le fichier avec rm file-to-be-cleared puis le recréer
taper la commande :>file-to-be-cleared
La deuxième solution est préférable, car dans le premier cas, si un programme tente d'accéder au fichier avant qu'on l'ait recréé, ça peut aller mal.
GNU Privacy Guard
Générer son graph de confiance
gpg --list-sigs | sig2dot | neato -Tpng | display
Si on veut n'avoir que les gens qui nous ont signé (ça fait un peu de ménage) :
gpg --list-sigs $( gpg --list-sigs mon_login@mon_domaine.com | grep ^sig | cut -b 14-22 | sort | uniq | tr '\n' ' ' ) | sig2dot | neato -Tpng | display
- le 1er script donne la liste des signatures
- le 2eme le transforme en texte schématique
- le 3eme tranforme un texte schématique en image
- le 4eme affiche l'image
et ça donne ça :
|
|
Nécéssite les paquets sig2dot & springgraph (pour l'utilitaire neato)
manipulation image
Renommer des photos en masse
Une fois dans le bon dossier, taper :
format="nom_%0$(($(/bin/ls | wc -l | wc -c)-1))i.extension" I=1 for f in *.extension do mv "$f" "$(printf $format $I)" I=$((I+1)) done
Tous les fichiers du dossier seront de la forme nom_XXX.extension où XXX varie entre 0[..]01 et le nombre total de fichiers.
réduire images en masse
Les appareils photos actuels ont de grandes résolutions, pas forcément très utiles. Pour réduire un ensemble de photos, utilisez ce petit script. Il faut installer le package imagemagick.
On peut utiliser une boucle for dans un script
#!/bin/sh
COMMAND="convert -quality 60 -size 1024x768"
mkdir dest
for i in *.JPG *.jpg; do
${COMMAND} "$i" "dest/$i"
done
C'est aussi faisable simplement avec find dont la syntaxe générale est
find [Répertoire à rechercher] -name [Fichiers à rechercher] -exec [Commande] {} \;
On peut d'ailleurs avoir un script avec deux arguments : mettez le contenu ci-dessous dans un fichier exécutable appelé redimensionne (dans votre path, /usr/local/bin par exemple), et si vous tapez redimensionne /chemin/de/source /chemin/de/destination, cela fera ce à quoi vous vous attendez. Si vous avez des espaces dans vos noms de répertoires, pensez à les entourer de guillemets.
#!/bin/bash
COMMAND="convert -quality 60 -size 1024x768"
# (syntaxe bash) Si on a moins de deux arguments, on quitte
[ $# -ne 2 ] && echo 'J'\''ai besoin de deux arguments !' && exit 1
# (syntaxe bash) Si le répertoire source n'existe pas, on quitte
[ ! -d "$1" ] && echo 'J'\''ai besoin d'un répertoire de source valide !' && exit 1
SOURCE="$1"
DEST="$2"
# (syntaxe bash) Si et seulement si le répertoire de destination existe, on le crée
# avec éventuellement les répertoires parents qui vont bien
[ ! -d "$DEST" ] && mkdir -p "$DEST"
# Ça marche avec les .jpg .jpeg .png .JPG .JPEG .PNG
# - les ( ) entourent l'ensemble des conditions pour que -exec s'applique à toutes
# - execdir renvoie "./fichier.jpg" plutôt que "/chemin/vers/fichier.jpg" et
# exécute la commande dans le répertoire où se trouve le fichier
find "$SOURCE" \( -iname "*.jpg" -o iname "*.jpeg" -o iname "*.png" \) -execdir $COMMAND {} "$DEST"/{} \;
Dans tous les cas décrits ici, les images réduites sont dans le répertoire dest, créé dans le répertoire où sont les photos.
manipulation vidéo
On peut aller voir ici WikiInformatique/AviDemux
Convertir un .mov en .avi
mencoder fichieroriginal.mov -oac mp3lame -lameopts cbr:br=128 -ovc xvid -xvidencopts bitrate=800:pass=2 -vop scale -zoom -xy 512 -sws 2 -o fichierdesortie.avi
Convertir un .wma en .wav .mp3 ou .ogg
On utilise mplayer. Ensuite, on pourra convertir le .wav en .ogg ou mp3
mplayer file.wma -ao pcm -aofile file.wav
Plus simple, une ligne de commande qui convertit vos .wma en .ogg
for i in *.wma ;do mplayer -ao pcm -aofile "${i%.wma}.wav" "$i"; oggenc "${i%.wma}.wav"; rm "${i%.wma}.wav"; done
Manipulation des PostScript et des pdf
Sélection de pages dans un fichier postscript
On utilise psselect :
psselect -p 3,5,9,12 fichier.ps fichier_sortie.ps
Fusionner des pdf
Il y a plusieurs utilitaires différents:
pdftk
On utilise la fonction cat de pdftk:
pdftk fichier1.pdf fichier2.pdf fichier3.pdf cat output fichier.pdf
Ou si on veut prendre que certaines pages des différents pdf
pdftk A=fichier1.pdf B=fichier2.pdf C=fichier3.pdf cat A1-2 B5 C output fichier.pdf
Dans cet exemple, on prend les pages 1 à 2 du pdf A la 5eme du pdf B et tout le pdf C
pdfjam
On peut aussi utiliser l'utilitaire pdfjoin du toolkit pdfjam
pdfjoin --outfile output.pdf pdf1.pdf pdf2.pdf ...
Changer le nombre de pages par feuilles de papier
Pour cela, pdfnup du toolkit pdfjam est très agréable
pdfnup --nup 3x3 --outfile merged.pdf to_merge.pdf
Pivoter des pdf
On utilise la fonction cat de pdftk.
pdftk A=entree.pdf cat A-W output sortie.pdf
Pour désigner la rotation a effectuer on utilise la première lettre du point cardinal en anglais:
- North : 0°
- East : 90°
- South : 180°
- West : 270°
Extraire les images d'un fichier pdf
Avec pdfimages compris dans le paquet xpdf : les images sont stockées dans MesImages-000.jpg etc :
pdfimages -j MonFichier.pdf MesImages
Convertir un pdf en png
convert Monfichier.pdf Monfichier.png
Cela fonctionne également dans l'autre sens, mais dans certains cas, les résultats sont inacceptables et l'on a meilleur compte à utiliser alors gimp.
Faire un pdf à partir de jpgs
Le script suivant, basé sur les packages ImageMagik et pdftk permet de créer un unique pdf à partir d'une série de jpg (des feuilles scannées). [
#!/bin/bash
prefix=$1
for i in $prefix*.jpg
do
i=${i%.jpg} #on vire l'extension
list="$list $i"
z="mogrify -page A4+0+0 -quality 50 -resize 50x50% -format pdf $i.jpg"
echo $z
$z
done
z="pdftk $(for i in $list ; do echo $i.pdf ; done) cat output $prefix.pdf"
echo $z
$z
inline:jpgs2pdf.sh] Si on a deux pages fichier1.jpg et fichier2.jpg, on crée fichier.pdf avec
./jpgs2pdf.sh fichier
dans le bon répertoire
Remarques :
-resize 50x50% divise la résolution par 4, à adapter
-quality 50 augmente la compression jpg qui est de 75% par défaut
-page A4+0+0 n'est pas documenté dans le cas de la conversion pdf, mais c'est cela qui fait que le pdf s'imprimera avec une feuille sur une page A4. Si vous faite un pdf de pochettes cd, je ne sais pas ce que ça donnera lors de l'impression.
Changer le fuseau horaire de l'horloge de sa machine
Ça peut être utile par exemple lors de stages à l'étranger
.
On peut utiliser, en root, l'utilitaire en ligne de commandes tzconfig.
Sed
Retirer la Nième ligne d'un fichier.
sed -i 'Nd' fichier
Racheter de la RAM
Pour en savoir plus sur le modèle de votre RAM
sudo dmidecode -t memory
Plus généralement dmidecode permet d'afficher les informations du Desktop_Management_Interface








