Table des matières
Fichiers
Trier les fichiers .CHK
Quand Windows fait une réparation d'un système de fichier (notamment FAT) on peut y trouver à sa racine un ou plusieurs dossiers FOUND.000 FOUND.001 etc… J'ai alors mis au point une petite syntaxe pour trier les fichiers en fonction du type MIME détecté avec file sous linux :
# Accéder à la racine du volume et copier le dossier en lieu sur (disque interne/externe autre que le disque source) cp -r /media/volume_réparé/FOUND.000 /media/disk/ cd /media/disk/FOUND.000 # Création du dossier de destination pour le tri mkdir RECUP # Récup ASF for file in ./*.CHK; do type=$(file -b $file | cut -d\ -f2); if [[ "$type" = "ASF" ]]; then mv "$file" "./RECUP/${file%.*}.ASF"; echo "$file --> ./RECUP/${file%.*}.ASF"; fi; done # Récup FLV for file in ./*.CHK; do type=$(file -b -i $file | cut -d\; -f1); if [[ "$type" = "video/x-flv" ]]; then mv "$file" "./RECUP/${file%.*}.FLV"; echo "$file --> ./RECUP/${file%.*}.FLV"; fi; done # Récup JPG for file in ./*.CHK; do type=$(file -b $file | cut -d\ -f1); if [[ "$type" = "JPEG" ]]; then mv "$file" "./RECUP/${file%.*}.JPG"; echo "$file --> ./RECUP/${file%.*}.JPG"; fi; done # Récup MP4 for file in ./*.CHK; do type=$(file -b $file | cut -d\ -f3); if [[ "$type" = "MP4" ]]; then mv "$file" "./RECUP/${file%.*}.MP4"; echo "$file --> ./RECUP/${file%.*}.MP4"; fi; done # Récup MS DOC for file in ./*.CHK; do file -b $file | grep "Name of Creating Application: Microsoft Office Word"; if [[ "$?" -eq "0" ]]; then mv "$file" "./RECUP/${file%.*}.DOC"; echo "$file --> ./RECUP/${file%.*}.DOC"; fi; done # Récup MS DOCX for file in ./*.CHK; do type=$(file -b $file); if [[ "$type" = "Microsoft Word 2007+" ]]; then mv "$file" "./RECUP/${file%.*}.DOCX"; echo "$file --> ./RECUP/${file%.*}.DOCX"; fi; done # Récup MS PPT for file in ./*.CHK; do file -b $file | grep "Name of Creating Application: Microsoft Office PowerPoint"; if [[ "$?" -eq "0" ]]; then mv "$file" "./RECUP/${file%.*}.PPT"; echo "$file --> ./RECUP/${file%.*}.PPT"; fi; done # Récup MS PPTX for file in ./*.CHK; do type=$(file -b $file); if [[ "$type" = "Microsoft PowerPoint 2007+" ]]; then mv "$file" "./RECUP/${file%.*}.PPTX"; echo "$file --> ./RECUP/${file%.*}.PPTX"; fi; done # Récup MS XLS for file in ./*.CHK; do file -b $file | grep "Name of Creating Application: Microsoft Excel"; if [[ "$?" -eq "0" ]]; then mv "$file" "./RECUP/${file%.*}.XLS"; echo "$file --> ./RECUP/${file%.*}.XLS"; fi; done # Récup MS XLSX for file in ./*.CHK; do type=$(file -b $file); if [[ "$type" = "Microsoft Excel 2007+" ]]; then mv "$file" "./RECUP/${file%.*}.XLSX"; echo "$file --> ./RECUP/${file%.*}.XLSX"; fi; done # Récup ODP for file in ./*.CHK; do type=$(file -b $file); if [[ "$type" = "OpenDocument Presentation" ]]; then mv "$file" "./RECUP/${file%.*}.ODP"; echo "$file --> ./RECUP/${file%.*}.ODP"; fi; done # Récup ODS for file in ./*.CHK; do type=$(file -b $file); if [[ "$type" = "OpenDocument Spreadsheet" ]]; then mv "$file" "./RECUP/${file%.*}.ODS"; echo "$file --> ./RECUP/${file%.*}.ODS"; fi; done # Récup ODT for file in ./*.CHK; do type=$(file -b $file); if [[ "$type" = "OpenDocument Text" ]]; then mv "$file" "./RECUP/${file%.*}.ODT"; echo "$file --> ./RECUP/${file%.*}.ODT"; fi; done # Récup PDF for file in ./*.CHK; do type=$(file -b $file | cut -d\ -f1); if [[ "$type" = "PDF" ]]; then mv "$file" "./RECUP/${file%.*}.PDF"; echo "$file --> ./RECUP/${file%.*}.PDF"; fi; done # Récup ZIP for file in ./*.CHK; do type=$(file -b $file | cut -d\ -f1); if [[ "$type" = "Zip" ]]; then mv "$file" "./RECUP/${file%.*}.ZIP"; echo "$file --> ./RECUP/${file%.*}.ZIP"; fi; done
Find (recherche)
Find est un petit outil assez puissant qui permet de chercher à peu près tout et n'importe quoi dans votre système ou point de montage.
Syntaxe
Avec le commutateur -exec on peut exécuter toutes sortes d'opérations sur les fichiers, les déplacer, les supprimer, les renommer, etc… dans l'exemple ci-dessous on les déplace.
# rechercher tous les fichiers .jpg (dossier courant) find . -name "*.jpg" # rechercher tous les fichiers .jpg dans /usr/bin/ find /usr/bin/ -name "*.jpg" # rechercher tous les fichiers .jpg et .png dans /usr/bin/ find /usr/bin/ \( -name "*.jpg" -o -name "*.png" \) # déplacer tous les fichiers .jpg présents dans /usr/bin dans /media/storage/ find /usr/bin/ -name "*.jpg" -exec mv "{}" /media/storage/ \;
Droits
Les droits sous linux fonctionnent selon 2 notions : le propriétaire, et les droits d'accès. Le propriétaire s'exprime sous la forme user:group. Par exemple atelier:users ou root:root. les droits d'accès s'expriment avec un nombre ou avec des lettres, comme ceci : 755 ou rwxr-xr-x. Le 1er chiffre correspond au niveau d'accès de l'utilisateur propriétaire. Le 2nd chiffre correspond au niveau d'accès de du groupe propriétaire. Et le 3eme correspond au niveau d'accès de tous les autres, ou invités. Chaque chiffre a une valeur correspondant à un bête codage binaire des lettres RWX selon le tableau suivant :
R | W | X |
4 | 2 | 1 |
Un niveau d'accès “full”, soit RWX en même temps, correspond donc au chiffre 7.
Définir les droits 755 sur tous les fichiers contenus dans /dossier/test | find /dossier/test -type d -exec chmod 755 {} + |
Définir les droits 755 sur tous les dossiers contenus dans /dossier/test | find /dossier/test -type d -exec chmod 755 {} + |
Définir root:root proprio de tous les fichiers contenus dans /dossier/test | find /dossier/test -type d -exec chown root:root {} + |
Définir root:root proprio de tous les dossiers contenus dans /dossier/test | find /dossier/test -type d -exec chown root:root {} + |
Renommage en masse
Avec la commande find
l'option -depth doit être spécifiée en premier et permet de tenir compte de la profondeur de l'arborescence. Cela évite les bugs liés au renommage récursif.
- Renommer tous les dossiers récursivement, uniquement les dossiers find . -depth -type d -exec mv {} {}.sbd \;
- Idem, fichiers uniquement find . -depth -type f -exec mv {} {}.sbd \;
- Idem, fichiers et dossiers find . -depth -exec mv {} {}.sbd \;
Avec la commande brename
brename est un outil avancé de renommage de masse.
- Installation sous Archlinux / Manjaro (utilisation d'un AUR Helper Yay/Yaourt ou autre) :
yay -Sy brename
- Installation sur les autres distributions le télécharger ici : https://github.com/shenwei356/brename
- Remplacer un caractère par un autre :
brename -p “\|” -r “-” -R -D
(dans cet exemple je remplace le caractère “|” par “-”)
Système
Date et heure
Plusieurs façon de les définir :
date +%T -s "11:14:00" date +%Y%m%d -s "20120418" date -s "19 APR 2012 11:14:00"
Pour synchroniser ponctuellement par NTP (ntpdate)
sudo ntpdate 1.fr.pool.ntp.org
Pour synchroniser l'horloge du bios avec celle du système fraichement mise à jour
sudo hwclock -w
Manjaro (peut etre Archlinux)
On peut aussi activer le service systemd-timesyncd
sudo systemctl enable --now systemd-timesyncd
Système de fichier
Lire une partition HFS/HFS+ (macOS)
- Installer le paquet hfsutils
- La commande mount devrait suffire
sudo mount /dev/sdd2 /media/disk
- Si cela ne suffit pas, il faut donner à mount la taille exacte (en octets). Pour la trouver, tout d'abord récupérer la taille des secteurs avec fdisk
sudo fdisk -l /dev/sdd
- Puis récupérer la taille (en secteur) de la partition avec testdisk
sudo testdisk /dev/sdd
Choisir Intel for MBR or EFI GPT pour les partitions GPT, ensuite Analyse puis Quick Search. La taille apparait dans la colonne Size in sectors.
- Multiplier Size in sectors (taille en secteurs) avec la taille du secteur. Exemple : 512 x 974438592 = N
- Monter la partition avec le paramètre suivant
sudo mount /dev/sdd2 /media/disk -o ro,sizelimit=N
NFS
Explorer montages distants | showmount -e 192.168.0.10 |
Mails
Récupérer les adresses mails dans un fichier
Cette commande peut servir à extraire les adresses mails de n'importe quel type de ficher (page web, email, fichier texte entre autres)
grep -E -o "\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}\b" file.txt
Outlook PST vers Thunderbird (Linux)
- Installer readpst (pour les Debian, si Arch installer libpst qui contient l'outil readpst)
- Ouvrir un terminal puis saisir les commande suivante pour lancer la convertion : mkdir ./outlook
readpst -o ./outlook -r outlook.pst find ./outlook -depth -type d -exec mv {} {}.sbd \; find ./outlook.sbd -name mbox -type f | xargs -d '\n' -I{} echo '“{}” “{}”' | sed -e 's/\.sbd\/mbox“$/”/' | xargs -L 1 mv find ./outlook.sbd -depth -type d -empty -exec rm -r {} \;
- Ouvrir Thunderbird
- Créer un dossier outlook dans Dossiers locaux et fermer Thunderbird
- Copier le dossier outlook.sbd ou bien, son sous-dossier s'il il n'en a qu'un seul (Dossiers personnels.sbd par exemple), dans .thunderbird/user.default/Mail/Localfolders à la place du vide que l'on vient de créer. Le renommer si nécessaire, il doit avoir le même nom.
- Relancer Thunderbird et tadam ! On peut renommer pour faire plus esthétique Importés d'Outlook par exemple :)
Périphériques
Clavier
Astuce "clavier windowsien"
Sur Linux quand on vérrouille la majuscule, les touches numériques au dessus des lettres font des lettres accentuées en majuscule. C'est très pratique quand on fait pas mal de bureautique, cela dit dans certains cas cela peut coincer. Un de ces cas est l'utilisation d'une douchette pour les codes barres.
Exemple : j'ai un code barre avec une valeur de 3594794123
Si je scan sur Windows ça donne 3594794123
Si je scan sur Linux ça donne “(Ç'ÈÇ'&É” ce n'est donc pas pratique.
- Placer le fichier ci dessous dans /usr/share/X11/xkb/symbols/ mswindows-capslock // $XKeyboardConfig$
// Replicate a “feature” of MS Windows on AZERTY keyboards // where Caps Lock also acts as a Shift Lock on number keys. // Include keys <AE01> to <AE10> in the FOUR_LEVEL_ALPHABETIC key type.
partial alphanumeric_keys xkb_symbols “basic” {
key <AE01> { type= "FOUR_LEVEL_ALPHABETIC", [ ampersand, 1, bar, exclamdown ] }; key <AE02> { type= "FOUR_LEVEL_ALPHABETIC", [ eacute, 2, at, oneeighth ] }; key <AE03> { type= "FOUR_LEVEL_ALPHABETIC", [ quotedbl, 3, numbersign, sterling ] }; key <AE04> { type= "FOUR_LEVEL_ALPHABETIC", [apostrophe, 4, onequarter, dollar ] }; key <AE05> { type= "FOUR_LEVEL_ALPHABETIC", [ parenleft, 5, onehalf, threeeighths ] }; key <AE06> { type= "FOUR_LEVEL_ALPHABETIC", [ section, 6, asciicircum, fiveeighths ] }; key <AE07> { type= "FOUR_LEVEL_ALPHABETIC", [ egrave, 7, braceleft, seveneighths ] }; key <AE08> { type= "FOUR_LEVEL_ALPHABETIC", [ exclam, 8, bracketleft, trademark ] }; key <AE09> { type= "FOUR_LEVEL_ALPHABETIC", [ ccedilla, 9, braceleft, plusminus ] }; key <AE10> { type= "FOUR_LEVEL_ALPHABETIC", [ agrave, 0, braceright, degree ] };
};
- trouver la variante en cours d'utilisation xkbcomp -xkb :0 - 2>/dev/null |grep 'name\[group' ça devrait renvoyer un truc du genre name[group1]=“France - Alternative”;
- Ensuite on cherche quel fichier contient cette ligne grep “France - Alternative” /usr/share/X11/xkb/symbols/* Il y a des chances que le fichier soit /usr/share/X11/xkb/symbols/fr
- Ouvrir ce fichier fr et trouver la ligne name[group1]=“France - Alternative”;
- Insérer juste au dessus de cette ligne, celle ci include “mswindows-capslock”
- Il faut fermer/rouvrir le serveur d'affichage, vous pouvez aussi redémarrer.
Écran
Résolution
Définir la résolution depuis la ligne de commande avec xrandr.
- Pour voir le mode de résolution actuel, exécuter simplement xrandr
- Dual screen xrandr –auto –output DVI-0 –mode 1440×900 –right-of DVI-1
Extinction
xset dpms force off
Bluetooth
Renommer le nom
sudo hciconfig hci0 name [new name]
Touchpad
Activer le tap to clic
xinput list # Lister les périphériques xinput list-props 16 # Lister les propriétés du périphérique id=16 xinput set-prop 16 297 1 # Mets à "1" (active) la propriété 297 du périphérique 16
Autre
TMUX (multiplexeur)
tmux new -s [session] # Créer une session tmux a -t [session] # Rejoindre une session tmux a -dt [session] # Rejoindre une session en détachant tous les autres clients
Convert, traitement image
redimentionner à 500px de haut | convert meh.jpg -resize x500 meh-dest.jpg |
redimentionner tous les JPG à 500px de haut | for file in *.jpg; do convert $file -resize x500 dest/$file; done |
Trousseau de mot de passe
Il peut arriver, surtout si vous utilisez un WM (i3 ou Openbox par exemple), que le gestionnaire de trousseau de mot de passe ne se lance pas au lancement du WM. Une petite solution que j'ai trouvé récemment et qui a fonctionné sur mon Archlinux+Openbox, est d'ajouter ceci en tête du ~/.xinitrc :
eval $(/usr/bin/gnome-keyring-daemon --start --components=gpg,pkcs11,secrets,ssh) export $(gnome-keyring-daemon --start --components=pkcs11,secrets,ssh,gpg) dbus-update-activation-environment --systemd DISPLAY
gnome-keyring doit bien entendu être installé au préalable.