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
-
Convertir les noms de fichiers du Mac avec des caractères accentués sur 3 octets en 2 octets, en ligne de commande :
uconv -x any-nfc
Exemple :
echo û | od -c
va afficher u 314 202 c'est-à-dire u combiné avec ^
echo û | uconv -x any-nfc | od -c
va afficher 303 273 c'est-à-dire û
Note : j'en parle aussi dans mon aide-mémoire PHP -
Renommer simplement des fichiers en masse :
mmv
ourename
ou dans Thunar, sélectionner les fichiers puis F2 (menu Édition ▶ Renommer) -
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 -
Utiliser rsync avec un serveur distant dont le "démon" SSH écoute sur un port non-standard :
rsync -av -e 'ssh -p 12345' source destination
-
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
Par exemple, pour trier les fichiers de logs "rotatés" par leur valeur numérique :
ls /var/log/apache2/access.log*gz | sort --debug -h -t . -k 3
Ce qui va donner :sort: text ordering performed using ‘C.UTF-8’ sorting rules sort: key 1 is numeric and spans multiple fields /var/log/apache2/access.log.1.gz __ ________________________________ /var/log/apache2/access.log.2.gz __ ________________________________ /var/log/apache2/access.log.3.gz __ ________________________________ /var/log/apache2/access.log.4.gz __ ________________________________ /var/log/apache2/access.log.5.gz __ ________________________________ /var/log/apache2/access.log.6.gz __ ________________________________ /var/log/apache2/access.log.7.gz __ ________________________________ /var/log/apache2/access.log.8.gz __ ________________________________ /var/log/apache2/access.log.9.gz __ ________________________________ /var/log/apache2/access.log.10.gz ___ _________________________________ /var/log/apache2/access.log.11.gz ___ etc...
Et non 1, 10, … 2, 20 … -
On ne peut pas demander à sort de trier sur le dernier champ avec une option du style "sort -k -1" qui n'existe pas. Mais on peut compenser en faisant
| rev | sort | rev
-
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 /
-
Mettre le PC en veille :
systemctl suspend
c'est moderne, même plus besoin de pm-suspend (et pas besoin de sudo non plus) - 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
-
Mettre mon PC en partage de connexion Wi-Fi (un "point d'accès") dans XFCE :
- La configuration à faire une seule fois dans l'applet Network Manager : Modifier les connexions, Créer une connexion, de type Wi-Fi, saisir un SSID, mode Hotspot, saisir un mot de passe dans l'onglet Sécurité en WPA & WPA2 personnel, puis dans l'onglet Paramètres, choisir la méthode Partager avec d'autres ordinateurs. Enregistrer.
- Ensuite, pour activer/désactiver le "partage de co", il faut faire comme si on connectait le PC à ce SSID caché donc choisir Se connecter à un réseau Wi-Fi invisible dans l'applet Network Manager. (ça semble inversé mais c'est comme ça…)
- Pour voir qui est connecté à ce partage, il y a deux commandes possibles (au moins deux) :
- la bonne vieille
arp -an
- et
ip neighbour show
(taper ip neiTab)
- la bonne vieille
resolvectl status
(dans resolv.conf ce n'est plus qu'un cache)
cat /etc/debian_version
parce que lsb_release -a
ne donne que la version majeure
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.
grep -o 'foobar[0-9]*'
(marche aussi s'il y a plusieurs correspondances sur une même ligne, par exemple foobar123 et foobar45678)
grep --text bidule /dev/sd…
grep -r foobar --exclude=* --include=*.php le/chemin/
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.
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
)
rg --no-ignore aiguille
jo -p une_chaine="Aujourd'hui" un_nombre=123 un_booléen@1
echo '{"foo":"bar","titi":{"toto":false,"tata":123}}' | jq
ps ax | grep erm
qui va afficher des trucs sans rapport comme "whiskermenu" ou le grep lui-même, utiliser pgrep -a erm
qui va afficher xdg-permission-store et xfce4-terminal
killall -v sleep
(nom exact) ou pkill -e eep
(une partie du nom)
pkill -P numéro_du_processus
cat /proc/sys/kernel/sysrq
affiche une valeur qui comprend 64. Par défaut sur mon PC, j'avais 176 (128 + 32 + 16) donc j'ai mis 240 dans /etc/sysctl.d/10-magic-sysrq.conf
script
puis pour terminer : exit
(Ctrl-d). S'enchaîne très bien avec cat typescript | aha > /tmp/typescript.html
.
pstree $PPID
(taper $PP et Tab)On verra le cas échéant :
script───bash───pstree
pstree $( sudo pidof cron )
(sudo parce que sur mon PC je cache les processus qui n'appartiennent pas à l'utilisateur et le démon cron tourne en tant que root)
Note :
pstree $( pidof bidule )
va afficher tous les processus si bidule ne tourne pas actuellement. C'est une sorte de réponse négative verbeuse 😅
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...)
Options -Indexes
direct dans le fichier
RewriteEngine on RewriteCond %{REQUEST_URI} !/maintenance.html$ RewriteCond %{REMOTE_ADDR} !^xxx\.xxx\.xxx\.xxx RewriteRule $ /maintenance.html [R=302,L]
-
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 :
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 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
sed -n 'p;n'
ou sed 'n; d'
sed -n 'n;p'
ou sed '1d; n; d'
recode HTML..UTF-8
wdiff fichierA fichierB | colordiff
diff -y -W300 fichierA fichierB | sed -n '/ <$/{s///;p}'
-W300
pour des lignes de moins de 300 caractères de long, à adapter au fichier
expand -i -t 4 fichier > fichier2
tail -n +2 fichier
ou sed '1d' fichier
tail -n +12345 fichier | head -1
ou sed -n '12345p' fichier
msgfmt source.po -o destination.mo
(c'est le paquet gettext)
/var/spool/postfix/maildrop/
(et la commande
mailq
ne fonctionne pas)
sudo postsuper -d AE0E010AE83
(où AE0E010AE83 est le Queue ID du mail affiché par la commande
mailq
)
sudo postcat -q AE0E010AE83
(où AE0E010AE83 est le Queue ID du mail affiché par la commande
mailq
)
sudo exim -Mvc 1ZIBTU-0006cB-Q3
(où 1ZIBTU-0006cB-Q3 est le Queue ID du mail affiché par la commande
mailq
)
tail -f /var/log/apache2/access.log | sed -n '/11:08/q;p'
(exemple simpliste)
FORCE_COLOR=1 npm start | xargs -I{} date +'%Y-%m-%d %H:%M:%S » {}'
(FORCE_COLOR=1 n'est pas obligatoire mais demande évidemment à Node.js de conserver la couleur)
f=/var/log/apache2/error.log ; while inotifywait -e modify $f ; do notify-send -t 2000 "Erreur" "dans $f" ; done
journalctl -S today
ou une date par exemple journalctl -S 2023-07-11
ou même journalctl -S '2023-07-11 08:02:54'
ou depuis le dernier démarrage (boot) journalctl -b
voir aussi journalctl --list-boots
seq -f '%02g' 31
affiche de 01 à 31.Dans Bash, il y a plus simple que seq :
echo {01..31}
(affiche sur la même ligne, alors que seq c'est sur plusieurs lignes)
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.
un_programme_quelconque.sh | ifne mail -s "non vide" toto@exemple.fr
(ifne -n pour l'inverse)
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 le
man 5 crontab
mais je ne l'ai pas vu pendant très longtemps !
@hourly
ou par une étoile dans l'heure ou la minute. Par exemple une tâche telle que 53 12
pour 12h53 ou 53 1-23/2
pour la 53e minute des heures impaires. C'est écrit dans la section NOTES de man cron
:
Special considerations exist when the clock is changed by less than 3 hours, for example at the beginning and end of daylight savings time. If the time has moved forwards, those jobs which would have run in the time that was skipped will be run soon after the change. Conversely, if the time has moved backwards by less than 3 hours, those jobs that fall into the repeated time will not be re-run. Only jobs that run at a particular time (not specified as @hourly, nor with '*' in the hour or minute specifier) are affected. Jobs which are specified with wildcards are run based on the new time immediately. Clock changes of more than 3 hours are considered to be corrections to the clock, and the new time is used immediately.
- 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
pdftk entrée.pdf cat 1 3-end output sortie.pdf
sudo nethogs
sudo iftop -i usb0
(exemple, PC connecté par le smartphone)
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)
sudo wondershaper wlan0 1000 200
pour ~ 1 Mo/s en réception, 200 Ko/s en émission, sur interface Wi-Fi (trouvé sur SO)
free && sudo sync && sudo sh -c 'echo 3 > /proc/sys/vm/drop_caches' && free
(adapté de unix.stackexchange.com/a/87909)
strace -s 256 …
par exemple pour afficher 256 caractères. Par défaut, c'est très court : 32 caractères.
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
set date_format="%d/%m/%Y" set index_format="%4C %Z %D %-15.15L (%4l) %s"%D référence le date_format
ou
set sort="date"
-
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
#!/bin/bash FILE=/home/herve/tmp/capture-$( date +%Y-%m-%d_%X ).png xfce4-screenshooter --fullscreen --save "$FILE" gimp "$FILE"
~/.config/xfce4/terminal/accels.scm
#!/bin/bash wmctrl -r ":ACTIVE:" -b remove,maximized_vert,maximized_horz wmctrl -r ":ACTIVE:" -e 0,0,0,1330,800
~/.config/gtk-3.0/gtk.css
(doc).xfce4-panel .tasklist .toggle { font-size: 11px; }Puis recharger avec
xfce4-panel -r
:config /ui/clock-format Lnav
(affiche "Lnav" en fixe) Sur les vieilles versions, il faut faire en plus :save-config
xfce4-terminal --color-bg=lightgreen
xseticon -id "$WINDOWID" image.png
Par exemple dans ~/.bashrc :
function irc { xseticon -id "$WINDOWID" ~/IRC.png irssi }
fc-list
sudo cp bidule*.ttf /usr/local/share/fonts/
puis fc-cache -fv
(-f pour --force et -v pour --verbose). C'est devenu trop facile, Linux 😏
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 paquet fonts-noto-color-emoji
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