Linux : ramassis d'astuces diverses

J’utilise une distribution Ubuntu avec Xfce comme environnement graphique et bash comme shell, mais ce n’a sans doute pas trop d’influence sur ce qui suit.

Connaitre de nombre de CPU

$ cpus=$(getconf _NPROCESSORS_ONLN)

Connaitre son adresse IP (interne)

$ /sbin/ifconfig et trouver inet adr: dans la section eth0.

Parallélisation

Voir GNUparallel

Convertir l’encodage

Pour passer de latin1 à utf8 on fait par exemple :

iconv -f latin1 -t utf8 fichier1 > fichier2

Ca peut aussi être utile de le faire dans l’autre sens, pour utiliser a2ps par exemple :

$ iconv -f utf8 -t latin1 f.t2t \
  | a2ps -o f.pdf -1 --no-header --right-footer="%a" \
         --left-title=%F --center-title="Mon titre" --right-title='$p./$p#'

Pour formater les titres, voir Meta sequences dans la doc.

Montage manuel d’une clé USB

Il arrive parfois que les clés USB ne se montent pas automatiquement. Dans ce cas :

$ ll /dev/sd*

permet avec la date de retrouver le bon.

Pour le monter :

$ sudo mount /dev/sdb1 /media/cleusb

ou parfois il demande le type :

$ sudo mount /dev/sdb1 /media/cleusb -t vfat

Attention, il faut que le point de montage existe. Eventuellement le créer :

$ sudo mkdir /media/cleusb
$ sudo chmod 777 /media/cleusb

Puis, pour terminer proprement :

$ sudo umount /media/cleusb/

Scripts pour extraire des lignes d’un fichier

On sait que head permet de voir les premières lignes d’un fichier, et tail les dernières, mais il peut être pratique de voir :

  • une ligne quelconque à partir de son numéro, et d’y ajouter un peu de contexte si besoin. C’est ce que fait ce script.
  • un intervalle de lignes entre deux numéros. C’est ce que fait ce script.

Par exemple :

$ ctxline -b 3 -a 5 f.c 10

montre la ligne 10 de f.c avec 2 lignes avant et 5 lignes après. Les options -b (before) et ``-a (after) sont optionnelles. Par défaut, seule la ligne spécifiée est montrée.

$ showlines f.c 10-20

montre les lignes 10 à 20 (comprises) de f.c.

Notification

On lance parfois une commande qui prend beaucoup de temps… et on oublie d’aller voir quand c’est fini. Avec zenity, on peut par exemple faire :

$ ma_commande_qui_prend_longtemps ; zenity --notification --text "Commande terminée"

Ainsi, on peut aller faire autre chose dans un autre terminal et être prévenu quand c’est fini.

Voir aussi cette note au sujet de zenity.

Xmodmap : changer une touche du clavier

Il y a des touches que je n’utilise vraiment jamais, sauf par mégarde… Autant les redéfinir ! Pour voir la configuration actuelle :

$ xmodmap -pke

Pour connaître le keycode d’une touche, utiliser la commande xev.

Pour connaître les keysyms que l’on peut associer à une touche, voir le fichier :

$ vim /usr/include/X11/keysymdef.h

(ôter le préfixe XK_ pour obtenir le nom à utiliser).

Pour redéfinir une touche, éditer le fichier .xmodmap (le créer s’il n’existe pas), et ajouter une ligne pour associer un keysym à un keycode, comme par exemple :

keycode 49 = Escape

On peut aussi avoir plusieurs keysym pour un keycode, comme par exemple :

keycode  31 = i I icircumflex Icircumflex

Les keysym correspondent respectivement à touche, Shift+touche, AltGr+touche et Shift + AltGr+touche.

Pour charger le fichier :

$ xmodmap .xmodmaprc

Pour avoir plus d’information :

$ man xmodmap

Et hop !

Màj 2019-07-04 : le fichier automatiquement chargé par Xfce est .Xmodmap, il faut donc renommer .xmodmap en .Xmodmap pour qu’il soit pris en compte.

Génération de mot de passe

J’ai bien cru que je ne (re)trouverais jamais une petite commande toute simple, non intégrée dans une usine à gaz… Finalement, je ne sais plus si c’est celle-là que je connaissais, mais c’est exactement ce que je cherchais : pwgen. Il y a même une option (-y ou --symbols) pour intégrer des caractères spéciaux.

rehash sous bash

La commande rehash n’existe pas sous bash. Mais il ne faut pas croire les gens qui disent que c’est parce qu’elle ne sert à rien ! car voilà ce qui m’est arrivé l’autre jour :

$ which make
/usr/local/bin/make
$ make --version
GNU Make 3.80
$ /usr/local/bin/make --version
GNU Make 3.81

En fait, en cas de besoin, on peut utiliser hash -r, et on peut aussi utiliser cette commande pour faire plus de choses :

hash [-r] [-p fichier] [nom]

    Pour chaque nom fourni, le  chemin  d'accès  complet  de  la commande
    est déterminé,  en  examinant   les   répertoires   de   $PATH   et mémorisé.
    Si l'option -p est fournie, aucune  recherche  de  chemin d'accès n'a lieu,
    et le  fichier  est  utilisé  comme  chemin   complet pour  la  commande.
    L'option -r force le shell  à  oublier  tous  les  emplacements mémorisés.
    Sans arguments, hash affiche des informations sur les commandes mémorisées.

Voir aussi :