lalahop

Quelques commandes GNU/Linux

Table des matières

Un mois que je n'ai rien posté ... Un mois de folie pendant lequel je n'ai eu que de rares moments à moi. Il est temps de se mettre à jour. Et en parlant de mise à jour : j'ai mis à jour ce blog, sans accrocs (ou en tout cas ils ne sont pas encore visibles).

Maintenant, je souhaite revenir sur des commandes disponibles sous GNU/Linux qui m'ont été utiles ces derniers temps. Ce ne sont pas des commandes inédites, elles sont facilement trouvables sur le web mais les mettre une fois de plus ne fait pas de mal et me cela me permettra de les retrouver facilement si besoin est.

Monter/démonter une iso

Pas besoin d'un logiciel tiers comme Deamon Tools, un simple montage suffit.

sudo mkdir /media/iso
sudo mount -o loop /chemin/vers/iso /media/iso

Pour démonter l'iso après usage :

sudo umount /media/iso

Et si on ne compte pas se resservir du dossier /media/iso pour remonter une autre iso :

sudo rmdir /media/iso

Copier le contenu d'un CD/DVD (non protégé) dans un fichier iso

Pour un CD :

dd if=/dev/cdrom of=/chemin/vers/iso/a/creer.iso

Pour un DVD :

dd if=/dev/dvd of=/chemin/vers/iso/a/creer.iso

ÉDIT 27/02/2011 18h45 :
Pour les DVD du commerce, qui sont protégés, dd ne suffit pas. Voir : Copier un DVD du commerce (protégé).

Avant de retirer une disquette

Après avoir écrit sur une disquette, pensez à la démonter avant de la retirer du lecteur. Si vous ne le faites pas, vous n'êtes pas sûr que l'écriture a bien eu lieu et vous pouvez donc perdre des données.

umount /dev/floppy

Créer une archive au format 7z

Il faut avoir installé le paquet p7zip-full. Le paquet p7zip ne permet pas de créer une archive, juste de la décompresser.

7z a -mx=9 nom_de_archive.7z dossier_a_compresser/

Le paramètre "x" permet de définir le taux de compression sur une échelle de 0 à 9. 0 désignant aucune compression et 9 désignant la compression maximale.

Décompresser une archive au format 7z en ligne de commande

Au cas où vous n'auriez pas trouvé depuis tout ce temps 😉 :

7z x archive.7z

Effacer un DVD RW

J'ai désinstallé k3b et Brasero depuis longtemps à cause de leur instabilité. Xfburn me dit que le DVD est déjà vierge. La commande growisofs ne m'apporte pas plus satisfaction. Finalement, la commande qui a résolu mon problème :

cdrdao blank --speed 2

Obtenir des informations sur une vidéo

Si vous voulez connaitre des informations de base (container, codecs, nombres de flux, résolution, aspect, fps, etc.) sur une vidéo, vous pouvez utiliser ffmpeg de la manière suivante :

ffmpeg -i video.mkv

Vous pouvez aussi utiliser mplayer, et ça, je ne le savais pas avant d'être tombé dessus au détour d'une recherche.

Pour avoir un peu plus d'informations (bit rate du/des flux, paramètres d'encodage, informations très détaillées sur les flux, etc. ), je reste fan de mediainfo. Même si je trouve la CLI bien plus lisible, sachez qu'une GUI est disponible (mediainfo-gui). Voici un ppa pour installer facilement mediainfo/mediainfo-gui avec apt-get.

Réaliser des traitements par lot sur des images

Pour cela, il faut utiliser ImageMagick. Voici 1 ligne de commandes qui permet de convertir les images jpeg du répertoire courant (et de ses sous-dossiers) en images png :

find ./ -name "*.jpg" -exec bash -c "convert -quality 100 {} {}.png && rename 's/\.jpg.png$/\.png/' {}.png && rm {}" \;

Find trouve les fichiers qui ont l'extension .jpg. Pour chaque fichier trouvé, find lance la commande qui se trouve après "-exec" et avant "\;".

Bash permet de lancer un nouveau shell. L'option -c permet de passer les commandes à exécuter, en tant que paramètre, sous la forme d'une chaine de caractères.

Convert {} {}.png créer une image png a partir de l'image jpg. Cette nouvelle image porte le nom de l'ancienne suivie de ".png". L'option -quality 100 permet de spécifier le taux de compression sur une échelle allant de 0 à 100 où 100 indique le plus fort taux de compression.

Rename 's/\.jpg.png$/\.png/' {}.png change l'extension .jpg.png du fichier en .png.

rm {} supprime l'image original (celle au format jpeg).

ÉDIT 03/07/2011 23h55 :
La commande ci-dessus peut aussi s'écrire :

find ./ -name "*.jpg" -exec convert -quality 100 {} {}.png \; -exec rename 's/\.jpg.png$/\.png/' {}.png \; -exec rm {} \;

A vous d'adapter ces lignes pour faire d'autres transformations par lot sur vos images grâce à ImageMagick.

Générer un mot de passe aléatoire en ligne de commande

Je ne souhaite pas utiliser un logiciel supplémentaire tel pwgen que je connais déjà. Tout est dit sur ce site : Générer des mots de passe aléatoires sous Linux - Tux-planet.

Découper un fichier

La méthode classique

7z a -mx=0 -v500m archive.7z fichier_à_découper

"-mx = 0" permet de définir un taux de compression minimale. A vous d'adapter ce taux en fonction du fichier que vous voulez découper : si vous découpez une vidéo déjà compressée grâce à théora/vorbis ou VP8/vorbis (;)), alors, la compresser ne servira à rien (le temps de compression/décompression sera disproportionné par rapport au gain obtenu en terme de place). A l'inverse, si vous découper une archive tar contenant des fichiers php/html, alors vous avez tout intérêt à compresser les fichiers pendant le découpage.

"-v" permet de définir la taille de chaque morceau du fichier. "b" permet de définir la taille du morceau en octets, "k" en kilos, "m" en mégas, "g" en gigas.

Pour recomposer le fichier, là encore, c'est du classique, on demande la décompression du premier morceau et 7z s'occupe du reste :

7z x archive.7z.001

La méthode split

split -d -b500m fichier_a_découper nom_des_morceaux.

Il y a bien un "." à la fin de la commande.
"-d" permet de dire que le compteur de fichiers sera numérique au lieu d'alphabétique, "-b" permet de définir la taille des morceaux . A ce sujet, je vous copie un morceau du man :

SIZE may be (or may be an integer optionally followed by) one of following: KB 1000, K 1024, MB 1000*1000, M 1024*1024, and so on for G, T, P, E, Z, Y.

Pour recomposer le fichier :
Sous UNIX :

cat nom_des_morceaux.* > fichier_final

Sous Windows :

type nom_des_morceaux.* > fichier_final

Split ou 7z ?

En utilisant un taux de compression 0 avec 7z, split et 7z sont à égalité lors du temps mis pour découper un même fichier, à plus ou moins une seconde d'écart. Ce qui fera la différence entre l'usage de l'un ou de l'autre, c'est de savoir si vous avez besoin de compresser le fichier, comme évoqué plus haut.

Voici le blog qui m'a inspiré pour split : Le blog du Gentil Démon.

Détacher un programme d'une console

J'utilisais la commande nohup jusqu'à ce que je lise ceci : [resolu] Détacher une appli de la console après l'avoir lancée sur ubuntu-fr.org.

Après, cela dépend de l'usage : si faire un commande & exit sur un shell local fonctionne très bien si l'on ne souhaite pas réutiliser le shell pour une autre commande, faire cette commande sur un shell distant (via SSH par exemple) provoquera la fermeture du shell. Dans ce cas, mieux vaut un nohup commande &.

Quand vous avez un problème d'affichage (KDE)

Quand des artefacts graphiques apparaissent sur votre écran ou quand KDE semble figé à l'ouverture de votre session, il suffit d'ouvrir un terminal (ctrl + alt + f1 par exemple) et de balancer un :

sudo service kdm restart

Vous retournerez sur l'écran de connexion et tout vos programmes graphiques seront perdus mais les problèmes graphiques cesseront.

Supprimer un dépôt

Ubuntu-Tweak et ppa-purge permettent de nettoyer les dépôts utilisés. Mais parfois, ils échouent.

Dans ce cas, il suffit de rechercher un(des) fichier(s) portant le nom du dépôt que vous voulez supprimer, dans le dossier /etc/apt/sources.list.d puis de supprimer le fichier concerné. Il faut ensuite chercher à savoir si le dépôt a une clé GPG. Pour cela, on utilise la commande apt-key list, en root. Si le dépôt a une clé, on la supprime : apt-key del clé en root. Enfin, on met à jour la liste des paquets avec apt-get update.

Par exemple, pour supprimer le dépôt medibuntu à la main :

~$ ls /etc/apt/sources.list.d/medibuntu*
medibuntu.list
medibuntu.list.save
~$ sudo rm /etc/apt/sources.list.d/medibuntu.list /etc/apt/sources.list.d/medibuntu.list.save
~$ sudo apt-key list

[...]
pub   1024D/0C5A2783 2006-11-23
uid                  Medibuntu Packaging Team <admin@lists.medibuntu.org>
uid                  The Medibuntu Team <medibuntu@sos-sts.com>
sub   2048g/16C7105A 2006-11-23

~$ sudo apt-key del 0C5A2783
OK
~$ sudo apt-get update