Aide-mémoire Linux
Raccourcis claviers, options de commandes diverses, etc… Des choses que je ne veux pas oublier, ou qui pourraient m'être utiles un jour.
-
Insérer un caractère tel que ñ ou un espace insécable (non-breaking space)
Pour ñ :
- appuyer sur la touche de composition (dans XFCE, Paramètres > Clavier > Disposition > Touche composée)
- puis saisir ~
- suivi de n
Pour un espace insécable :
- appuyer sur la touche de composition
- puis saisir un espace
- suivi d'un deuxième espace
Pour un tiret long — :
- appuyer sur la touche de composition
- puis saisir trois tirets
Pour le caractère points de suspension … :
- appuyer sur la touche de composition
- puis saisir deux points
Pour le point médian, c'est plus simple : Alt Gr + :
Pour l'espace sans chasse (zero-width space) c'est plus compliqué : Maj + Ctrl + u puis saisir le numéro hexadécimal Unicode 200b puis espace (voir aussi cette liste de caractères Unicode, au besoin)
Dans Vim, on peut aussi insérer certains caractères avec Ctrl-k, par exemple pour ñ : Ctrl-k ~ n
-
Faire une archive tar en excluant un répertoire et son contenu :
tar --exclude=./répertoire
--exclude=./répertoire/ n'exclut que le répertoire, pas son contenu, et --exclude=./répertoire/* n'exclut que son contenu. On se fait facilement avoir à cause de l'auto-complétion de Bash qui ajoute le slash aux répertoires.
Autre piège : --exclude=répertoire exclut ./répertoire mais aussi ./foobar/répertoire -
Faire un tar de moins de 4 Go (4294967295 octets maximum) pour mettre sur un disque ou une clé USB FAT32 :
tar cvzf - répertoire/ | split -b 4294967295 - bidule.tgz.
va produire des fichiers bidule.tgz.aa, bidule.tgz.ab, etc. qu'on va détarer parcat bidule.tgz.* | tar xvzf -
-
Graver une image ISO sur une clé USB : trouver le device de la clé par
lsblk
, par exemple /dev/sdc, puis démonter la ou les partitions de la clé parsudo umount /dev/…
etc, puis lancersudo dd status=progress if=mon_image.iso of=/dev/…
-
Monter un disque LUKS en ligne de commande comme font les interfaces graphiques :
- Repérer le disque dans
lsblk
ou, s'il vient d'être branché, parsudo dmesg
par exemple /dev/sdc -
Déverrouiller et donner un nom * au conteneur par exemple
sudo cryptsetup luksOpen /dev/sdc MonDisque
* un nom qui n'est pas déjà utilisé dans /dev/mapper - Repérer le "label" du disque par
lsblk -o name,label /dev/sdc
par exemple Bidule250Go - Préparer le point de montage
sudo mkdir /media/herve/Bidule250Go
- Enfin monter le disque
sudo mount /dev/mapper/MonDisque /media/herve/Bidule250Go/
- Pour finir, démonter
sudo umount /media/herve/Bidule250Go/
- Et verrouiller le disque
sudo cryptsetup luksClose MonDisque
- Repérer le disque dans
-
Reprendre un dd interrompu (par exemple lancé trop tard dans la journée) : utiliser le paramètre seek
par exemplesudo dd status=progress if=/dev/zero of=… seek=123456789
où 123456789 est le nombre de blocs écrits au moment où on a interromptu dd -
Copier un répertoire sur un serveur distant avec rsync :
rsync -av répertoire_local/ utilisateur@serveur:répertoire_distant
Piège ! Ne pas oublier le / final du répertoire local, sinon ça crée répertoire_distant/répertoire_local sur le serveur -
Trouver les fichiers datés entre le 1er septembre (inclus) et le 9 septembre (inclus) :
find . -type f -newermt 2023-09-01 -not -newermt 2023-09-10
-
Trouver les fichiers qui matchent [0-9]+.jpg dans plein de sous-répertoires, par exemple
img/p/9/8/5/985.jpg
:find img/p/ -regex ".*/[0-9]+.jpg"
Le piège c'est qu'il faut .*/ sinon ça ne matche pas, find ajoute ^ et $ automatiquement à la regexp -
Trouver les fichiers dans lesquels le groupe ne peut pas écrire, sauf dans un certain répertoire :
find . -path ./.git -prune -or -not -perm -020 -ls
-
Trier la sortie de find sur la taille des fichiers :
find . -type f -ls | sort -b -n -k 7
-b pour ignorer les espaces
-n pour trier numériquement
-
Idem avec la taille des fichiers lisible pour un humain :
- Version très lente si beaucoup de fichiers :
find . -type f -exec ls -lh {} \; | sort -b -h -k 5
-
Version beaucoup plus rapide si beaucoup de fichiers :
find . -type f -print0 | xargs -0 ls -lh | sort -b -h -k 5
Demande à find de délimiter les lignes par caractère nul au lieu de \n pour éviter les problèmes avec les espaces dans les noms de fichiers.
(mais pasfind . -type f -print0 | xargs -0 ls -lSrh
parce que xargs fait des lots quand il y a beaucoup de fichiers)
- Version très lente si beaucoup de fichiers :
-
La sortie de find avec l'option -ls est illisible dès qu'il y a des accents ou des espaces dans les noms de fichiers. Pour contourner le problème, on peut utiliser l'option -printf, par exemple :
find . -type f -printf "%TF\t%s\t%P\n"
(%TF c'est la date de modification au format AAAA-MM-JJ, %s c'est la taille) -
Pour avoir la taille des fichies lisible par un humain avec -printf c'est un peu compliqué, il faut utiliser la commande numfmt :
find /run/user/1000/doc/by-app/ -type f -printf "%TF\t%s\t%P\n" | numfmt --field=2 --to=iec --padding=8 | sort
(dans cet exemple, j'ajoute un tri sur la date) -
Demander une confirmation à chaque -exec de la commande find
(ça vaut mieux pour un programme tel que gvimdiff !)
find . -type f -ok gvimdiff {} ../ailleurs/{} \;
-
Il est possible de se passer de la commande find en faisant dans Bash :
shopt -s globstar
puisfor fichier in **/*.xml; do …
-
Quand un fichier (ou un répertoire) a une permission avec un S majuscule, ça veut dire que le bit setuid (ou setgid) est positionné mais il manque la permission d'exécuter le fichier (ou la permission d'entrer dans le répertoire).
Pour régler le problème, il suffit de fairechmod u+x fichier
ouchmod g+x répertoire
ou bien retirer le bit setuid/setgid parchmod u-s fichier
ouchmod g-s répertoire
-
Trouver ce qui écrit sur le disque :
sudo iotop
-
Trouver ce qui écrit sur un disque en particulier, par exemple sda :
dstat -tdD /dev/sda --top-io
Note : cette commande écrit aussi une ligne pour chaque disque accédé, mais il ne calcule les lectures/écritures que pour le disque passé en paramètre (il laisse à zéro pour les autres disques) (astucieux, merci Ryan !) -
Voir quels processeurs travaillent :
htop
-
L'option de sort indispensable pour comprendre pourquoi je n'arrive pas à trier comme je veux :
sort --debug
-
Mieux que
du -sch *
:ncdu
avec affichage de la progression et navigation dans les sous-répertoires. -
Trouver ce qui remplit la partition montée sur
/
et uniquement cette partitionncdu -x /
- Fermer une connexion SSH gelée (en sortie de veille du PC, classiquement) : Entrée puis ~ puis .
-
Copier des fichiers depuis ou vers une machine A accessible seulement à travers une machine B :
On peut imaginer par exemple que A n'a pas d'adresse publique.- Établir un tunnel SSH sur B :
ssh -L 12345:A:22 moi@B
(garder ce shell ouvert ou bien ajouter-f -N
) - Copier depuis A :
scp -P 12345 moi@localhost:/chemin/du/fichier/sur/A /chemin/en/réception
-
Copier vers A :
scp -P 12345 /chemin/du/fichier/local moi@localhost:/chemin/du/fichier/sur/A
moi@localhost est en réalité moi@A donc il faut taper le mot de passe sur A, pas sur localhost 😉
- Établir un tunnel SSH sur B :
-
Faire passer les connexions de Firefox par une machine avec SSH :
ssh -D 43210 -f -C -q -N moi@monserveur
puis dansabout:preferences
Préférences réseau : Configuration manuelle, Hôte SOCKSlocalhost
Port43210
-
Faire passer les connexions vers un port spécifique par une autre interface, par exemple un smartphone 4G connecté en modem USB :
- Déclarer une nouvelle table de routage :
echo "2 ma-route" >> /etc/iproute2/rt_tables
(pas besoin de le faire à chaque fois, évidemment) - Prendre l'IP de passerelle de l'interface usb0 et la coller dans cette commande :
ip route add default via 192.168.xxx.yyy dev usb0 table ma-route
- Demander au noyau de faire passer le port 443 (par exemple) par cette route :
ip rule add iif lo ipproto tcp dport 443 lookup ma-route
- Pour arrêter de passer par là :
ip rule del iif lo ipproto tcp dport 443 lookup ma-route
- Déclarer une nouvelle table de routage :
-
Copier un fichier en local avec une barre de progression (cp ne peut pas le faire) :
rsync --progress fichier1 fichier2
Autre possibilité :pv fichier1 > fichier2
Mais pipe viewer est plus utile pour voir la progression de choses commepv fichier | gzip > fichier.gz
-
Ajouter un groupe à un utilisateur en ligne de commande :
sudo usermod -a -G nom_du_groupe nom_utilisateur
(ne surtout pas oublier ce -a sinon on se retrouve avec un seul group) (ça m'est arrivé trop souvent 😂) -
Ne pas demander de mot de passe pour les commandes
sudo ps axuf
etsudo iotop
:
Danssudo visudo
, ajouter la ligneherve ALL=(ALL) NOPASSWD: /usr/bin/ps axuf, /usr/sbin/iotop
(en dernier) -
Avoir un raccourci
ssh foo
au lieu de taperssh nom_super_long@nom_de_la_machine
, ajouter dans .ssh/config :
Host foo HostName nom_de_la_machine # éventuellement : Port 12345 User nom_super_long
-
Vérifier l'empreinte (fingerprint) d'un serveur :
SSH :ssh-keygen -l -f /etc/ssh/ssh_host_rsa_key.pub
Web :openssl x509 -noout -in /etc/pki/tls/certs/foobar.crt -fingerprint -sha1
(exemple sur un serveur CentOS) -
Voir le certificat TLS ("SSL") d'un serveur web :
openssl s_client -showcerts -servername herverenault.fr -connect herverenault.fr:443 </dev/null
Et voir sa date d'expiration : idem suivi de| openssl x509 -noout -dates
-
Idem en passant par une IPv6 :
openssl s_client -showcerts -servername client.helixo.fr -connect "[2001:4b98:dc0:43:216:3eff:fe1a:9ed0]:443" </dev/null
-
Se connecter à hostB en VNC à travers SSH :
userA@hostA:~$ ssh -L 5900:localhost:5900 userB@hostB
-
userB@hostB:~$ x11vnc
(c'est tout, pas besoin de mot de passe VNC) userA@hostA:~$ remmina vnc://localhost
- quand on ferme la fenêtre VNC (Remmina ou Vinagre), le serveur x11vnc de hostB se termine donc pas de serveur qui traine 👍
-
Quand lftp dit "Host key verification failed" sur un SFTP, il faut faire
ssh machin@bidule
juste pour accepter l'empreinte du serveur (pas besoin de taper le mot de passe). Ce qui arrive typiquement quand on réinstalle son poste client. -
Avoir des couleurs dans lftp quand le serveur FTP n'en envoie pas (par exemple en SFTP) : utiliser cls au lieu de ls ou bien remplacer carrément le ls du serveur par cls avec
alias ls command cls
dans~/.lftprc
-
Assigner une adresse IP temporaire à la carte Ethernet :
sudo ip addr add 192.168.1.2/24 dev enp34s0
(pour trouver le nom de l'interface :ip addr
tout simplement)
Pour retirer :sudo ip addr del 192.168.1.2/24 dev enp34s0
-
Voir le Wi-Fi en ligne de commande :
nmcli dev wifi
-
Voir le vrai serveur de nom qu'on est en train d'utiliser :
resolvectl status
(dans resolv.conf ce n'est plus qu'un cache) -
Voir la version mineure de Debian :
cat /etc/debian_version
parce quelsb_release -a
ne donne que la version majeure -
Chercher un fichier qui contient deux mots sur des lignes différentes :
grep -z 'foo.*bar'
Par défaut, grep ne cherche que ligne à ligne mais avec l'option -z on peut lui demander de considérer que les lignes sont terminées par le caractère nul (zéro) donc il traitera tout le fichier comme une seule grosse ligne. -
Afficher uniquement ce qui matche avec grep :
grep -o 'foobar[0-9]*'
(marche aussi s'il y a plusieurs correspondances sur une même ligne, par exemple foobar123 et foobar45678) -
Chercher dans tout un disque, y compris potentiellement dans des fichiers effacés (très utile s'ils viennent juste d'être effacés par erreur, par exemple) :
grep --text bidule /dev/sd…
-
Faire un grep récursif uniquement dans certains fichiers, par exemple .php :
grep -r foobar --exclude=* --include=*.php le/chemin/
-
Lire le résultat d'un grep en couleur dans less :
grep --color=always "aiguille" botte_de_foin.foo | less -R
C'est à grep qu'il faut dire d'envoyer de la couleur même si la sortie n'est pas dirigée vers un terminal.
Et il faut dire à less d'afficher les caractères bruts sinon il supprime les codes de couleurs. -
Copier la sortie d'une commande en couleur (comme ls, grep, tree, colordiff, etc.) :
ls --color=always | aha > /tmp/ls.html
. On peut ensuite ouvrir le fichier HTML dans Firefox, le copier dans Thunderbird, etc. (sudo apt-get install aha
) -
Produire du JSON à partir de paramètres en ligne de commande :
jo -p une_chaine="Aujourd'hui" un_nombre=123 un_booléen@1
-
Reformatter du JSON :
echo '{"foo":"bar","titi":{"toto":false,"tata":123}}' | jq
-
Enregistrer tout ce qu'on fait dans un terminal :
script
puis pour terminer :exit
(Ctrl-d). S'enchaîne très bien aveccat typescript | aha > /tmp/typescript.html
. -
Savoir facilement si on est en train d'enregistrer :
pstree $PPID
(taper $PP et Tab)
On verra le cas échéant :script───bash───pstree
-
Additionner la RAM de tous les processus apache2 :
ps -C apache2 -o rss | awk '{ t += $1 } END { print "TOTAL : " t }'
ou plus simple :smem -t -k -P apache2
et plus pratique :smem -t -k -P dovecot
(matche dovecot, dovecot/imap, dovecot/imap-login, etc...) -
Demander à Apache de ne pas lister un répertoire avec un .htaccess :
Options -Indexes
direct dans le fichier -
Une page de maintenance facile, sans extension WordPress à la noix : créer une page /maintenance.html à la racine du site avec tout dedans (styles, images SVG ou encodées Base64) et mettre dans le .htaccess
avec mon adresse IP xxx.xxx.xxx.xxx pour continuer à accéder au site pendant la maintenance.
RewriteEngine on RewriteCond %{REQUEST_URI} !/maintenance.html$ RewriteCond %{REMOTE_ADDR} !^xxx\.xxx\.xxx\.xxx RewriteRule $ /maintenance.html [R=302,L]
-
Afficher du 12e champ d'une ligne jusqu'à la fin de ligne
-
Avec awk :
awk 'BEGIN { ORS="" } { for (i=12; i<=NF; ++i) printf "%s ", $i; print "\n" }'
(par l'absence d'accolades, le printf est implicitement dans la boucle for mais pas le print) -
Avec cut :
cut -d" " -f 12-
Et s'il y a un nombre variable d'espaces qui séparent les champs :
tr -s " " | cut -d" " -f 12-
(-s pour squeeze)
-
Avec awk :
-
Par contre, si je veux afficher du 12e jusqu'à l'avant-dernier champ, par exemple, avec un nombre variable de champs
-
Avec awk :
awk 'BEGIN { ORS="" } { NF--; for (i=12; i<=NF; ++i) printf "%s ", $i; print "\n" }'
-
Avec cut :
cut -d" " -f 12- | rev | cut -d" " -f 2- | rev
-
Avec awk :
-
Supprimer la 3e colonne d'un fichier, par exemple un fichier séparé par tabulation
- Avec cut :
cut -d" " -f 1-2,4-
tabulation par Ctrl v Tab ou cut -d$'\t' - Avec sed :
sed 's/\t[^\t]*//2'
voir Only replace the numberth match of the regexp dans le manuel -
Avec awk :
awk 'BEGIN { FS="\t"; OFS="\t"}{ $3="" ; print }'
👎 vide le champ au lieu de le supprimer
- Avec cut :
-
Afficher les lignes impaires d'un fichier :
sed -n 'p;n'
oused 'n; d'
-
Afficher les lignes paires d'un fichier :
sed -n 'n;p'
oused '1d; n; d'
-
Décoder les entités HTML en ligne de commande :
recode HTML..UTF-8
- Afficher un fichier comme avec la commande cat, mais avec la coloration syntaxique de Vim : Vimcat.
-
Faire un diff en mot à mot, et en couleur :
wdiff fichierA fichierB | colordiff
-
Afficher seulement les lignes qui ont été supprimées de fichierA :
diff -y -W300 fichierA fichierB | sed -n '/ <$/{s///;p}'
-W300
pour des lignes de moins de 300 caractères de long, à adapter au fichier -
Convertir l'indentation par tabulations en 4 espaces :
expand -i -t 4 fichier > fichier2
-
Afficher toutes les lignes d'un fichier, CSV par exemple, sauf la première :
tail -n +2 fichier
oused '1d' fichier
-
Afficher la ligne 12345 d'un fichier :
tail -n +12345 fichier | head -1
oused -n '12345p' fichier
-
Produire le fichier .mo à partir d'un fichier .po (pour les traductions) :
msgfmt source.po -o destination.mo
(c'est le paquet gettext) -
Où vont les mails quand Postfix est arrêté ? dans
/var/spool/postfix/maildrop/
(et la commandemailq
ne fonctionne pas) -
Supprimer un mail bloqué dans la mailq de Postfix :
sudo postsuper -d AE0E010AE83
(où AE0E010AE83 est le Queue ID du mail affiché par la commandemailq
) -
Lire un mail bloqué dans la mailq de Postfix :
sudo postcat -q AE0E010AE83
(où AE0E010AE83 est le Queue ID du mail affiché par la commandemailq
) -
Lire un mail bloqué dans la mailq d'Exim :
sudo exim -Mvc 1ZIBTU-0006cB-Q3
(où 1ZIBTU-0006cB-Q3 est le Queue ID du mail affiché par la commandemailq
) -
Afficher un log jusqu'à un évènement précis :
tail -f /var/log/apache2/access.log | sed -n '/11:08/q;p'
(exemple simpliste) -
Afficher une notification quand il y a du nouveau dans un fichier de log :
f=/var/log/apache2/error.log ; while inotifywait -e modify $f ; do notify-send -t 2000 "Erreur" "dans $f" ; done
-
Lire les logs système du jour avec journalctl en évitant de parcourir plusieurs mois de logs, ce qui peut être lent quand les logs sont gros :
journalctl -S today
ou une date par exemplejournalctl -S 2023-07-11
ou mêmejournalctl -S '2023-07-11 08:02:54'
-
L'option format de la commande seq utilise un g et non un d comme printf :
seq -f '%02g' 31
affiche de 01 à 31 -
Déclencher une action lorsqu'un fichier est écrit dans un répertoire :
incrontab -e
ajouter une ligne telle que
/mon/rép/ertoire/ IN_CLOSE_WRITE /mon/pro/gramme.sh $@/$#
$@/$# permet d'avoir le nom de fichier en paramètre 1 dans le programme. -
Déclencher une action en shell uniquement si la sortie standard d'une commande est non vide (ou vide) :
un_programme_quelconque.sh | ifne mail -s "non vide" toto@exemple.fr
(ifne -n pour l'inverse) -
Lancer une tâche en crontab le deuxième samedi du mois à 4 heures du matin :
0 4 8-14 * * test $(date +\%u) -eq 6 && echo "Bonjour, on est le deuxième samedi du mois et il est 4 heures"
C'est tout simplement dans leman 5 crontab
mais je ne l'ai pas vu pendant très longtemps ! - Récupérer des fichiers effacés d'une carte SD : sudo photorec /dev/mmcblk0p1
-
Monter et récupérer les dernières photos d'un smartphone Android en ligne de commande plutôt que par l'interface graphique :
- Brancher le câble USB
- Accepter le transfert de fichiers sur le smartphone
- Trouver la valeur activation_root correspondante dans
gio mount -li
par exemple mtp://[usb:002,008]/
ou fairegio mount -o
puisgio mount -li | sed -n '/Android Phone/,/activation_root=/p' | tail -1
-
gio mount mtp://[usb:002,008]/
pour monter -
rsync --dry-run --checksum -av $XDG_RUNTIME_DIR/gvfs/mtp\:host=%5Busb%3A002%2C008%5D/Mémoire\ de\ stockage\ interne/DCIM/100MEDIA/ ~/Photos/
Notes :- $XDG_RUNTIME_DIR contient obligatoirement le bon répertoire sur un Linux récent
- Utiliser l'auto-complétion (tab) après mtp pour ne pas avoir à encoder ce qui suit
- --dry-run = vérification à blanc
- C'est très lent dès qu'on a plusieurs centaines de photos
- --checksum si gvfs ne préserve pas les dates (sur de vieilles versions d'Ubuntu), mais c'est encore plus lent
- Si tout semble OK, relancer la même commande sans --dry-run
-
gio mount -u mtp://[usb:002,008]/
pour démonter
Mais sur des répertoires qui contiennent beaucoup de fichiers (comme des photos), MTP est tellement lent qu'il vaut mieux utiliser ADB :
- Lister les fichiers
adb shell ls -ltr /storage/MA_CARTE_SD/DCIM/Camera/IMG_2023*
- Voir la taille totale
adb shell du -ch /storage/MA_CARTE_SD/DCIM/Camera/IMG_2023*
- Récupérer dans le répertoire courant
adb shell ls /storage/MA_CARTE_SD/DCIM/Camera/IMG_2023* | xargs -n1 adb pull
-
Supprimer une page d'un document PDF, par exemple la page 2 :
pdftk entrée.pdf cat 1 3-end output sortie.pdf
-
Savoir quel programme consomme quelle bande passante :
sudo nethogs
-
Voir combien de données réseau sont échangées par le PC :
sudo iftop -i usb0
(exemple, PC connecté par le smartphone) -
Limiter simplement la bande passante réseau consommée par un programme :
trickle -s -u 10 -d 10 firefox
pour 10 Ko/s en upload et en download (il y a aussi trickled, un démon pour limiter automatiquement tous les programmes) -
Limiter simplement la bande passante réseau consommée par la machine globalement (par exemple parce qu'elle utilise la connexion d'un smartphone avec un forfait limité) :
sudo wondershaper wlan0 1000 200
pour ~ 1 Mo/s en réception, 200 Ko/s en émission, sur interface Wi-Fi (trouvé sur SO) -
Vider le cache mémoire de Linux :
free && sudo sync && sudo sh -c 'echo 3 > /proc/sys/vm/drop_caches' && free
(adapté de unix.stackexchange.com/a/87909) -
Afficher les chaines de caractères en entier dans la sortie de la commande strace :
strace -s 256 …
par exemple pour afficher 256 caractères. Par défaut, c'est très court : 32 caractères. -
Afficher la différence entre un fichier de conf et la version originale du paquet, par exemple vsftpd :
mkdir /tmp/ORIG
cd /tmp/ORIG/
apt download vsftpd
dpkg-deb -X vsftpd_3.0.3-3ubuntu2_amd64.deb .
diff etc/vsftpd.conf /etc/vsftpd.conf
- Renvoyer un message en le modifiant au passage dans mutt : Esc e
-
Redimensionner une fenêtre au pixel près, par exemple 1366 x 768 :
-
wmctrl -l
pour lister les fenêtres et trouver l'identifiant de celle que je veux -
IDfenetre=0x02c00003
par exemple -
wmctrl -i -r $IDfenetre -b remove,fullscreen
sort du plein écran éventuel -
wmctrl -i -r $IDfenetre -b remove,maximized_vert,maximized_horz
"dé-maximise" wmctrl -i -r $IDfenetre -e 0,0,0,1366,768
-
-
Lancer Thunderbird et placer sa fenêtre au bon endroit sur XFCE (je ne sais pas pourquoi Thunderbird se place toujours en haut à gauche et ne mémorise pas sa dernière position comme Firefox) :
#!/usr/bin/env bash thunderbird & while [ -z "$( wmctrl -l | grep ' - Mozilla Thunderbird' )" ]; do echo "J'attends Thunderbird..." sleep .1 done wmctrl -r Thunderbird -e 0,776,1,-1,-1
- Ne rien afficher sur le "Bureau" de XFCE, parce que j'aime avoir un fond d'écran propre et parce que ce dossier ~/Bureau finit toujours par être un dépotoir : dans les réglages de XFCE, Bureau, onglet Icônes, Type d'icônes : Aucun.
-
Prendre des captures d'écran dans XFCE et ouvrir la capture automatiquement dans GIMP en version Snap (valable en 2020 en attendant cette solution) : lancer ce script via le raccourci clavier Impr écran dans les réglages de XFCE
#!/bin/bash FILE=/home/herve/tmp/capture-$( date +%Y-%m-%d_%X ).png xfce4-screenshooter --fullscreen --save $FILE gimp $FILE
-
Assigner des raccourcis claviers au terminal XFCE : depuis la version GTK3 de 2018, ça se passe dans le fichier
~/.config/xfce4/terminal/accels.scm
- Placer une fenêtre dans XFCE de manière à ce qu'elle occupe la moitié gauche de l'écran, ou la moitié droite, ou la moitié du haut, ou la moitié du bas, avec la touche Super (tu sais, cette touche du PC qui représente une fenêtre vue légèrement de côté) et les touches fléchées du pavé numérique : Super ◀ ou Super ▶ ou Super ▲ etc.
-
Redimensionner une fenêtre (par exemple Firefox) à une taille particulière, par exemple 1330 x 800, en une combinaison de touches, par exemple Super . : configurer dans les réglages de XFCE, onglet "Raccourcis d'applications", ce petit script
#!/bin/bash wmctrl -r ":ACTIVE:" -b remove,maximized_vert,maximized_horz wmctrl -r ":ACTIVE:" -e 0,0,0,1330,800
-
Diminuer la taille de la police de caractères de la liste des tâches de XFCE : ajouter dans
~/.config/gtk-3.0/gtk.css
(doc)
.xfce4-panel .tasklist .toggle { font-size: 11px; }
Puis recharger avecxfce4-panel -r
- Dans lnav, alterner entre l'affichage lignes pliées et non repliées : Ctrl w
-
Dans lnav, empêcher l'affichage de l'horloge en haut à gauche qui provoque le passage au rouge de l'onglet de terminal XFCE :
:config /ui/clock-format Lnav
(affiche "Lnav" en fixe) Sur les vieilles versions, il faut faire en plus:save-config
-
Ouvrir une fenêtre de terminal XFCE avec une couleur de fond particulière :
xfce4-terminal --color-bg=lightgreen
-
Amusant, changer l'icône du terminal pour distinguer la fenêtre dans une barre des tâches et/ou dans Alt+Tab :
xseticon -id "$WINDOWID" image.png
Par exemple dans ~/.bashrc :function irc { xseticon -id "$WINDOWID" ~/IRC.png irssi }
-
Lister les polices de caractères installées :
fc-list
-
Installer une police de caractères (ou seulement une «fonte», pourquoi pas) :
sudo cp bidule*.ttf /usr/local/share/fonts/
puisfc-cache -fv
(-f pour --force et -v pour --verbose). C'est devenu trop facile, Linux 😏 -
Le meilleur moyen de saisir des émojis en 2022 :
emote
(avec le raccourci clavier Super E parce que je n'ai pas la main assez souple pour le Ctrl Alt E par défaut) et installer le paquetfonts-noto-color-emoji
-
Convertir un lot de XLSX en TSV avec LibreOffice :
libreoffice --headless --convert-to csv:"Text - txt - csv (StarCalc)":9,0,0,1,1 --outdir CSV *.xlsx
(doc)
La syntaxe du paramètre --convert-to est horrible !- 9 pour séparer par tabulation (code ASCII de tabulation)
- 0 pour ne pas entourer les champs de guillemets ou autre
- le reste, ce sont les valeurs par défaut