Grimoire-Command.es Grimoire-Command.es

Thèmes : GNU+Linux command memo

Aide-mémoire des commandes en ligne

publié le 21.10.2018 dans hardware

Clear storage disk

Effacer les données d’un disque dur.

# dd if=/dev/urandom of=/dev/<sdb> bs=1M status=progress (1) (2) (3)
75623301120 bytes (76 GB, 70 GiB) copied, 678,034 s, 112 MB/s (4)
1 Why urandom : https://www.marksanborn.net/howto/wiping-a-hard-drive-with-dd/
2 Change <sdb> for the correct …


publié le 19.10.2018 dans Debian

liquidprompt : a useful adaptive prompt for Bash & zsh

Prompt enrichi affichant l’état du système.

# apt install liquidprompt
$ echo "echo $- | grep -q i 2>/dev/null && . /usr/share/liquidprompt/liquidprompt" >> ~/.zshrc (1)
1 Only load liquidprompt in interactive shells, not from a script or from scp
[user:~] $  (1)
⌁24% ⌂42% 3d/2&/1z [user@server:~/ … /code/liquidprompt][pyenv …


publié le 15.10.2018 dans vim

Vim pour les humains

« vim pour les humains » est un livre libre de Vincent Jousse présenté ici par Framasoft. Il a été écrit pour constituer une documentation efficace à destination du plus grand nombre.

Comme le résume fort bien la description de cet évènement « Vim pour les humains » cette année (2018) à Lyon (voir …


publié le 08.10.2018 dans Debian

command-not-found : list packages containing a missing command

Chercher automatiquement dans quel paquet trouver la commande manquante que l’on vient d’entrer.

# apt install command-not-found
# update-command-not-found (1)
$ echo ". /etc/zsh_command_not_fonud" >> ~/.zshrc (2)
1 command-not-found needs its own list of packages (explained in /usr/share/doc/command-not-found/README.Debian)
2 Instruct your shell about « command not found » new …


publié le 04.10.2018 dans shell

Task Spooler : queue tasks (such as file copies)

Gérer une file d’attente de tâches génériques. Pratique pour choisir progressivement de nombreux gros fichiers à copier d’un disque à un autre, sans lancer les copies en parallèle. Les copies sont ainsi rapides, et si le disque de destination est débranché par accident, une seule copie échoue, sans …


publié le 03.10.2018 dans memo

Memo_20 : Le noyau, les modules

D’après l’édition 11 des travaux d’Alain Leaper, 2018-04-10
Licence GPL

1. dmesg : les messages …


publié le 27.09.2018 dans article

OS Debian from old disk to new disk

1. version en

A few days ago I bought an SSD drive to upgrade a slow machine from its mechanical spinning plates drive.

It was a simple plan :

  • get the old drive out ;

  • plug the two drives to another machine ;

  • move the partitions …


publié le 25.09.2018 dans memo

Memo_19 : Processus et consoles


publié le 25.09.2018 dans shell

Next generation Unix commands

Commandes Unix améliorées


publié le 23.09.2018 dans music

Resample FLAC music using sox keeping metadata

Descendre la fréquence d’échantillonnage et la résolution d’une piste audio FLAC

Exemple : 24 bits / 96 kHz → 16 bits / 48 kHz

1. The sox command

$ sox -S <original-flac-file> -r 48000 -b 16 <final-flac-file>  (1) (2)
1 The sox command comes from the sox package.
2 The <final-flac-file> must have …


publié le 19.09.2018 dans storage

Manage swap

Gérer le swap

1. Via partition

Make a suitable partition with : gparted or cfdisk (or fdisk)

Format the new partition : # mkswap /dev/sdx1

Add the new swap partition to : /etc/fstab.

/dev/sdx1 swap swap defaults 0 0

Run # swapon …


publié le 18.09.2018 dans memo

Memo_18 : Le chargeur d'amorçage GRUB 2


publié le 10.09.2018 dans article

EFI boot file not found by BIOS - Hard Disk 3F0

1. version en

EFI BIOS must be instructed about EFI files locations on storage peripherals to used as boot devices. This is automatically done by grub-install (and may be done by hand using efibootmgr, which means that it’s possible to interact with …


publié le 05.09.2018 dans shell

Count lines of code longer than 79 characters

Compter le nombre de lignes d’un programme qui dépassent une certaine taille

Usage :

$ grep -r '.\{79\}' *.py | wc -l

It may help to decide which limit you want to set.

Results for a 3397 lines project (with a wanted limit at 96) :

79 -> 283
80 -> 256
85 -> 147
88 …


publié le 04.09.2018 dans memo

Memo_17 : Accès internet


publié le 03.08.2018 dans shell

Fast Rust utilities

Liste de commandes ré-écrites en Rust, plus rapide que leurs équivalents Unix historiques

1. Commandes

  • fcat : a faster implementation of cat using splice (Linux and Android only) (explanations)

  • bat : another implementation of cat that manage colors and paging long outups

  • exa : it’s an ls but better

  • ripgrep : recursively …


publié le 29.07.2018 dans memo

Memo_16 : Gestion des paquets pour distributions Debian et Ubuntu


publié le 25.07.2018 dans shell

Improvise a ROT13 / Caesar cipher command in Python

Improviser une commande pour le chiffrement de César en Python

Usage :

$ rot13 "Fgevat gb hapvcure"

String to uncipher

Convenient shell alias to copy :

$ alias rot13='python -c "import sys,codecs; print(codecs.encode(sys.argv[1], \"rot_13\"))"'

Unpacked Python code :

import sys, codecs

print(codecs.encode(sys.argv[1], "rot_13 …


publié le 24.07.2018 dans memo

Memo_15 : Accès avancés aux fichiers

D’après l’édition 11 des travaux d’Alain Leaper, 2018-04-10
Licence GPL

1. hexdump

$ hexdump monFichier

La sortie est groupée par 2 octets "inversés …


publié le 18.07.2018 dans shell

Improvise an SQLite command line interface in Python

Improviser un client SQLite via la bibliothèque de fonction Python

Sometime, it feels easier to make a short alias instead of starting to search for the good Debian package of the official client program and its own syntax…

Usage :

$ sqlyte3 <database.sqlite3> '<plain SQL request>'

Convenient shell alias to copy …


publié le 17.07.2018 dans memo

Memo_14 : Émincer des fichiers texte


publié le 09.07.2018 dans memo

Memo_13 : Systèmes de fichier


publié le 03.07.2018 dans article

Tectonique de la pâte thermique (Linux Pratique)

Assez méconnue on la croirait superflue. Elle est pourtant …


publié le 24.06.2018 dans memo

Memo_12 : sed (Stream EDitor) traitement d'un flux de caractères


publié le 18.06.2018 dans memo

Memo_11 : Liens, dates et patches


publié le 11.06.2018 dans memo

Memo_10 : Explorer le matériel


publié le 06.06.2018 dans memo

Memo_9 : Récupération sur le web


publié le 23.05.2018 dans memo

Memo_8 : Archives, compression et décompression de fichiers


publié le 14.05.2018 dans memo

Memo_7 : Expressions régulières (ou rationnelles)


publié le 07.05.2018 dans memo

Memo_6 : chercher du texte, des fichiers


publié le 02.05.2018 dans memo

Memo_5 : chaînes de caractères et sous-invocation de shells


publié le 27.04.2018 dans memo

Memo_4 : flux de données


publié le 26.04.2018 dans memo

Memo_3 : gérer les utilisateurs


publié le 25.04.2018 dans memo

Memo_2 : gérer les dossiers, bouger les fichiers


publié le 24.04.2018 dans memo

Memo_1 : parcourir les dossiers et lister les fichiers


publié le 23.04.2018 dans memo

Memo_0 : aide mémoire des commandes en ligne, nomenclature


publié le 20.04.2018 dans database

List dups in SQL table

Lister les doublons dans une table SQL

SELECT $field FROM $table WHERE $field IN (SELECT $field FROM $table GROUP BY $field HAVING COUNT(*) > 1)


publié le 19.04.2018 dans mutt

Mutt extend default search to 'to:' and 'cc:' headers

Étendre la recherche par défaut de mutt aux champs 'to:' et 'cc:' (en plus du 'From:' et 'Subject:')

set simple_search="~f %s | ~s %s | ~C %s"


publié le 18.04.2018 dans shell

Pipe stderr in addition to stdout

Rediriger la sortie d’erreur en plus de la sortie standard vers la commande suivante

$ $command |& grep 'something' (1)
$ $command 2>&1 | grep 'something' (2)
1 modern short form (bash, zsh…)
2 standard form
$ python3 -c "print('foo')" | grep 'foo'
foo
$ python3 -c "print('foo')" |& grep 'foo'
foo
$ python3 -c …


publié le 17.04.2018 dans shell

Generate random numbers with 'n' digits

Générer un nombre aléatoire de 'n' chiffres

In a terminal :

$ cat /dev/urandom | tr -cd '0-9' | head -c $n

In a JavaScript console :

function rnd (n) { return Math.ceil (Math.random () * Math.pow (10, n)); }

Via Python :

import random; print(''.join([str(random.randint(0, 9)) for _ in range …


publié le 16.04.2018 dans vim

Vim startup commands

Passer des commandes dès le lancement de vim.

$ vim +356 +s/toto/titi +wq $file.txt (1)
1 vim starts, loads the file, go to the 356th line, change the 'toto' occurence into 'titi', saves and quits.


publié le 13.04.2018 dans shell

Print system serial number

Afficher le numéro de série de l’ordinateur

# dmidecode -s system-serial-number

A lot more hardware-related information can be listed using this Memo_10, explore hardware.


publié le 12.04.2018 dans network

Web Daily Diff, sent by email

Vérifier automatiquement chaque jour le contenu d’une page web

WebDailyDiff.sh

#! /bin/bash
# Name      : WebDailyDiff.sh
# Author    : Simon Descarpentries - simon /\ acoeuro [] com
# Date      : 2013-11-26
# Licence   : GPLv3
# Usage     : WebDailyDiff.sh title URL dest@monitorer (1)

cd ~/.sbin

BASELINE='Baseline'
CURDATE=`date +%F_%X`
HTML='.html'
TXT='.txt'

wget --quiet "$2 …


publié le 11.04.2018 dans mutt

Mutt mailcap

Instruire Mutt sur la conduite à tenir face à certaines pièces jointes.

.mutt/muttrc

set mailcap_path = "~/.mutt/mailcap"
alternative_order text/html text/plain
set implicit_autoview

Concise example : .mutt/mailcap

text/html; lynx -dump -force_html -width=96 '%s';  needsterminal; copiousoutput (1)
text/pdf; pdftotext -layout '%s' -; copiousoutput
text/csv; less '%s …


publié le 10.04.2018 dans Debian

Auto apt remove

Automatiser la désinstallation d’un paquet Debian

# apt remove -y <package> (1)
# yes | apt remove <package> (2) (3)
# echo 'y' | apt remove <package> (3)
# apt remove <package> <<< 'y' (3)
1 Best way to do it.
2 man yes you already have this in your system.
3 In each case, a …


publié le 09.04.2018 dans vim

Convert spaces in tabs or the contrary in vim

Convertir des groupes d’espaces en tabulation ou inversement

:retab!


publié le 06.04.2018 dans network

Internet access point

Faire une passerelle vers le net

# echo "1" > /proc/sys/net/ipv4/ip_forward
# iptables --table nat --append POSTROUTING --out-interface $eth1 -j MASQUERADE (1)
# iptables --append FORWARD --in-interface $eth0 -j ACCEPT (2)
1 Network interface connected to internet
2 Network interface connected to local machines


publié le 05.04.2018 dans tor

Download all the PDF of a website

Télécharger tous les fichiers PDF d’un site web

$ doc_crawler.py http://a.com > url.lst (1)
$ doc_crawler.py --download-files url.lst (2)
$ doc_crawler.py --download-file http://a.com/file.txt (3)
$ doc_crawler.py --accept=jpe?g$ --download --single-page --wait=3 https://a.com/a_page (4)
1 Create a url …


publié le 05.04.2018 dans tor

Download a file selection via wget or doc_crawler.py

Télécharger une sélection de fichiers via wget ou doc_crawler.py

$ wget --recursive --limit 1 http://… (1)

$ wget --recursive http://a.eu/p/ --no-directories --directory-prefix $d --accept JPG,JPEG (2)

$ wget http://a.eu/photos/{001..146}.jpg (3)

$ wget http://imgs.xkcd.com/clickdrag/{1..50}{n,s}{1..50 …


publié le 04.04.2018 dans Firefox

List user-defined JavaScript variables

Lister les variables définies par une page web

javascript:document.body.appendChild(document.createElement('div')).innerHTML='<iframe id="temoin" style="display:none"></iframe>'; (1)
Object.keys(window).filter(a=>!(a in window.frames[window.frames.length-1])).sort().forEach((a,i)=>console.log(i,a,window[a])); (2)
document.body …


publié le 03.04.2018 dans vim

Wrap long lines in vim

Retailler d’un coup les lignes d’un paragraphe dans vim

:gq} (1)
:gggqG (2)
1 Until the end of the paragraph
2 For all the file : gg go to top ; gq wrap long lines ; G go to end


publié le 23.03.2018 dans shell

Website analytics via server logs with goaccess

Analyse du trafic d’un site web depuis le journal du server via goaccess

$ goaccess /var/log/apache2/access.log (1)

$ tail -f /var/log/apache2/access.log | goaccess - (2)

$ zcat /var/log/apache2/*.gz | goaccess (3)
1 Static report in console. GoAccess can also generate HTML reports (or JSON …


publié le 01.03.2018 dans shell

Set bepo keyboard layout in terminal

Mettre le clavier en bépo dans un terminal

From terminal emulator in X session:

$ setxkbmap fr bepo

For unemulated true console:

# apt install keyboard-configuration console-setup
# dpkg-reconfigure keyboard-configuration
# dpkg-reconfigure console-setup


publié le 28.02.2018 dans shell

Colors in the console

Couleurs dans le terminal

alias ls='ls --color=auto' (1)
alias grep='grep --color'
alias rgrep='rgrep -n --color'
alias diff='colordiff'
alias tail='colortail'
alias make='colormake'

function wcolordiff () { wdiff -n $1 $2 | colordiff }
1 All the lines can be copie in your .zshrc or .bashrc

All at once …


publié le 27.02.2018 dans shell

Find what directories are using your disk space

Trouver quels sont les dossiers qui occupent l’espace de votre disque

$ du -h
$ du --max-depth=1 . | sort -nr (1)
$ ncdu (2)
1 List size of immediat sub-folders
2 NCurses Disk Usage : apt install ncdu


publié le 26.02.2018 dans vim

Replace a text in all buffers/files opened in vim

Remplacer un texte dans tous les fichiers ouverts dans vim

:argdo %s/foo/bar/g | wq


publié le 25.02.2018 dans Debian

Download a .deb package and its dependencies

Télécharger un paquet Debian et ses dépendances

./get_deb_depends.sh $package_name [$wanted_architecture]

Sources available here:

pkg_name=$1
arch=$2 || 'amd64'

for dep in `apt-rdepends "$pkg_name" | grep -v "^ "`; do
    apt-get download "$dep":"$arch"
done

apt-get download "$pkg_name":"$arch"


publié le 24.02.2018 dans vim

Convert translated .po file into virgin .pot template

Convertir un fichier de traduction .po plein en modèle .pot vide / vierge

:%s/msgid\_.\{-}msgstr \(\(".*"\_.\)*\)/msgid \1msgstr ""\r/

This is a practical usage example of the replace statements of vim explained here.


publié le 23.02.2018 dans hardware

Protect your eyes from screen's blue light

Protéger vos yeux de la lumière bleue des écrans

# apt install redshift-gtk
$ man redshift

You need to set a config file with your GPS coord and red levels for day and night:

~/.config/redshift.conf

; Global settings
[redshift]
temp-day=3500
temp-night=2500
transition=1
location-provider=manual
verbose=yes

; The location …


publié le 22.02.2018 dans find

Replace all occurrences of a text via vim (various forms)

Remplacer toutes les occurences d’un texte dans vim

:%s/foo/bar/g [1]

:%s+/foo+/bar+g [2]

:%s/\Cfoo/bar/g [3]

:s/f\(o\)\{-}/ba\1/ [4]

:s/\(.*\)\_./\1/ [5]


1. % to treat all lines, foo is replaced by bar, g to treat all the …


publié le 21.02.2018 dans network

List process with network activity

Lister les processus ayant une activité réseau

# netstat -ptu (1)
# nethogs (2)
1 Single shot
2 Continuous scrutation, top/htop style


publié le 20.02.2018 dans Debian

Configure CUPS

Configurer le serveur d’impression CUPS

http://localhost:631
I never remember this one… its the IPP Internet Printing Protocol port number: grep ipp /etc/services
To modify configurations you need to enter your user or root password ; the user needs to be in the lpadmin group


publié le 19.02.2018 dans Debian

Check if your Linux kernel is vulnerable to Spectre or Meltdown attacks

Vérifier si votre noyau Linux est vulnérable à Spectre ou Meltdown

$ curl https://raw.githubusercontent.com/speed47/spectre-meltdown-checker/master/spectre-meltdown-checker.sh | bash
This is a perfect example of what you should avoid to do as a root user without having read and understood the sources, or really trust the author …


publié le 18.02.2018 dans music

Mount an iPod

Monter un iPod

# modprobe hfs (1)
# mkdir /media/ipod
# mount -t hfsplus /dev/$device /media/ipod/
1 All as root


publié le 17.02.2018 dans music

Recompress FLAC music at max compression and keep original ID3 metadata

Recompresser des musiques FLAC au niveau max en gardant les métadonnées originales au format ID3

$ reflac --best $album_folder/ (1)
1 reflac from chungy/reflac Github repository.


publié le 16.02.2018 dans storage

Restore lost files from disk, cdrom or camera with PhotoRec

Récupérer des fichiers perdus sur tout support avec PhotoRec

# photorec /dev/<device> (1)
1 Follow photorec’s simple instructions…
testdisk can also undelete files from FAT, NTFS, exFAT and ext2 filesystem.
TestDisk and PhotoRec can be installed on a rooted Android system, using this binary file compiled for ARMv7. To …


publié le 15.02.2018 dans storage

Test and restore lost partitions with TestDisk

Vérifier et restaurer des partitions perdues avec TestDisk

# testdisk /dev/<device> (1)
1 Follow testdisk’s simple instructions…
TestDisk can also undelete files from FAT, NTFS, exFAT and ext2 filesystem.
TestDisk and PhotoRec can be installed on a rooted Android system, using this binary file compiled for ARMv7. To install …


publié le 14.02.2018 dans hardware

Control and monitor status of SMART Disks

Contrôle et surveille l’état d’un disque SMART (température, heures de fonctionnement, journaux d’erreurs…)

$ smartctl -H /dev/$device (1)
$ smartctl -l error /dev/$device (2)
$ smartctl -a /dev/$device (3)
$ smartctl -t short /dev/$device (4)
1 As root ; display health status ; you may have to add -d …


publié le 13.02.2018 dans hardware

Test storage with fat filesystem for bad blocks

Vérifier l’existence de blocs défectueux sur un disque dur de stockage avec système de fichiers fat16 / fat32.

# fsck.vfat -t -w /dev/<device>

-t : mark bad blocks to avoid them
-w : write corrections on disk


publié le 12.02.2018 dans storage

Test and repair fat storage filesystem

Vérifier, réparer et nettoyer un système de fichier (fat16, fat32)

# fsck.vfat -l -a -w /dev/$device

-l : list read files
-a : automatically repair what can be repaired
-w : write corrections on disk


publié le 11.02.2018 dans date

Recover suppressed files in ext filesystem via extundelete

Récupérer un fichier supprimé dans un système de fichier ext3 / ext4

# extundelete --restore-file path/to/deleted/$file /dev/<device> (1) (2)
1 As root
2 Options exist : --restore-directory --restore-all --after date … refert to man
testdisk and photorec can also undelete files from FAT, NTFS, exFAT and ext2 filesystem.


publié le 10.02.2018 dans storage

List the blocks which are reserved as bad in the filesystem (ext)

Lister les blocs inutilisables que le système de fichier ext2 / ext3 / ext4 n’utilisera plus

# dumpe2fs -b /dev/$sdb1


publié le 09.02.2018 dans storage

Test storage with ext filesystem for bad blocks

Vérifier l’existence de blocs défectueux sur un disque dur de stockage avec système de fichiers ext2 / ext3 / ext4.

# e2fsck -k -c -v /dev/$device (2) (3)
1 Can also be called fsck.ext4 for instance…
2 -k : keep track of bad blocks
-c : use external badblock command to find …


publié le 08.02.2018 dans storage

Test and repair ext storage filesystem

Vérifier, réparer et nettoyer un système de fichier ext (ext2, ext3, ext4)

# e2fsck -pfv /dev/<device> (1) (2) (3)
1 As root
2 Can also be called fsck.ext4 for instance…
3 -p : preen, automatically repair simple problems
-f : force, check even if filesystem is marked as clean
-v : verbose …


publié le 07.02.2018 dans storage

Test storage peripheral read / write speed

Tester la vitesse de lecture et écriture d’un périphérique de stockage

# dd if=/dev/zero of=tempfile bs=1M count=1024 conv=fdatasync,notrunc (1)
1 Write speed of current folder storage
1024+0 enregistrements lus
1024+0 enregistrements écrits
1073741824 bytes (1,1 GB, 1,0 GiB) copied …


publié le 06.02.2018 dans Firefox

List web page links in Firefox

Lister les liens d’une page web dans Firefox

In the JavaScript console (F12 or CTRL+SHIFT+K to focus directly the console tab), enter:

javascript:document.querySelectorAll('a').forEach (1)
javascript:document.querySelectorAll('a').forEach((a,i) => console.log(i,a)) (2)
javascript:console.log(document.querySelectorAll('a')) (3 …


publié le 05.02.2018 dans date

Convert timestamp to human readable date

Table des matières

Convertir un horodatage unix / epoch en date lisible

1. date

$ date -d "@1516817552"

Can produce:

mercredi 24 janvier 2018, 19:12:32 (UTC+0100)

2. Using Python

$ python -c 'import time; time.strftime(\"%Y-%m-%d %H:%M:%S\",time.localtime(int …


publié le 04.02.2018 dans test

Test RAM reading speed

Tester la vitesse de lecture de la mémoire RAM

# hdparm -T /dev/sda

Example output:

/dev/sda:
Timing cached reads: 14480 MB in 2.00 seconds = 7257.39 MB/sec
$ man hdparm
[…]
Perform timings of cache reads for benchmark and comparison purposes. For meaningful results, this operation should be repeated …


publié le 03.02.2018 dans date

Set the date and time of the system

Régler la date et l’heure du système

# date 03281918 (1) (2)
1 For march, 28th, 19h18: date MMDDhhmm[CCYYss]
2 The best way to keep the system at the right time is to install an NTP server: apt install ntp


publié le 02.02.2018 dans X

Set mouse/pointer acceleration in Xorg

Spécifier l’accélération de la souris / du pointeur dans Xorg

$ xset m 4 1  (1) (2)
1 As explained in man xset, the parameters are m (mouse), acceleration and threshold
2 xinput can be used to set different parameters to different pointers


publié le 01.02.2018 dans database

Extract strings from binary files

Retrouver les chaînes de caractères contenues dans un fichier binaire

$ strings -a -n 300 -e S $binary_file (1)
1 Scan entire file, set line length to 300, choose a 8-bit character encoding


publié le 31.01.2018 dans Debian

Optimize execution time of repeated commands

Optimiser le temps d’exécution de commandes répétées

# apt install apt-build
# apt update
# apt-build 'jpegoptim' (1)
# prelink 'jpegoptim' (2)
1 Locally recompile the package from sources, make sure you have deb-src lines in your /etc/apt/sources.list file
2 Prelink ELF shared libraries and binaries to speed up startup …


publié le 30.01.2018 dans mount

Mount distant repository via SSH

Monter un répertoire distant via SSH

# sshfs -o nonempty $user@$distant_machine:/home/$user/baz /mnt/$local_dir_of_distant_baz

You can add the following line to /etc/fstab:

sshfs#$user@$distant_machine:/home/$user/baz /mnt/$local_dir_of_distant_baz fuse defaults,users,noauto,async,noatime,allow_other 0 0

To simply use the mount command.


publié le 29.01.2018 dans find

Grep text in selected files

Trouver du texte dans une sélection de fichiers

$ find "$3" -name "$2" -print0 | xargs -0 grep -i -n --color $1
1 text to search
2 files to find to search in
3 where search to search for files to find
4 find-print0 | xargs -0 … : use zeros to separate elements …


publié le 29.01.2018 dans find

Recompress images JPEG / PNG at equal quality (lossless)

Recompresser des images JPEG / PNG sans perte de qualité

$ find . -name \*.jpeg -exec jpegoptim -pt (1)

$ find . -regextype posix-extended -iregex '.*(jpeg|jpg)' -print0 | xargs -0 -P $((`nproc` / 2)) jpegoptim -pt (2)

$ find . -name \*.png -print0 | xargs -0 -P $((`nproc` / 2)) -I {} zopflipng -m --lossy_8bit --lossy_transparent -y {} {} (3)
1 JPG monotask …


publié le 28.01.2018 dans mount

Immutable directory via chattr, avoid writing in unmounted partition

Rendre un dossier immuable (sans droit d’écriture) via chattr pour éviter d’écrire dans un dossier s’il n’est pas monté.

$ chattr +i /mnt/backup

Remerciements à /home/lord.


publié le 27.01.2018 dans vim

Change vim spellcheck language

Changer la langue de la correction orthographique de vi

:setlocal spell spelllang=en_us


publié le 26.01.2018 dans Debian

Downgrade .deb package with aptitude (force version)

Revenir à une version précédente d’un paquet Debian

Downgrading to an earlier Debian branch is not officially supported by apt suite.
Aptitude is able to compute downgrading dependancies.
# aptitude install <pkg>=<version>


publié le 25.01.2018 dans Debian

Mark package as manually installed

Marquer un paquet comme installé automatiquement

# apt-mark manual <pkg> (1)
# aptitude unmarkauto <pkg> (1)
1 Equivalent, replace <pkg> par the name of your package.


publié le 24.01.2018 dans Debian

List manually installed package in Debian

Lister les paquets installés volontairement / manuellement dans Debian

# apt-mark showmanual (1)
# aptitude search '~i!~M' -F '%p' (1)
1 Equivalent


publié le 23.01.2018 dans kvm

Share folder between KVM virtual machine and Debian host

Partager un dossier entre une machine virtuelle KVM / QEMU et un système hôte Debian

$ kvm -virtfs local,id=label-a,path=/host/folder,security_model=none,mount_tag=label-a

Then, in the virtual machine:

# mkdir /mnt/guest-view
$ mount -t 9p -o trans=virtio,version=9p2000.L label-a /mnt/guest-view


publié le 22.01.2018 dans find

Rip music CD to MP3 or FLAC

Copier un CD de musique en MP3 ou Flac

$ cdparanoia -d /dev/hda -B (1)

$ lame --vbr-new --preset extreme a_file.wav a_file.mp3 (2)
$ for x in `ls *.mp3`; do lame --vbr-new --preset extreme $x "`basename ${x} .wav`.mp3"; done; (3)

$ find . *.wav -print0 | xargs -0 -P $((`nproc` / 2)) -I …


publié le 21.01.2018 dans iso

Start Tails ISO via KVM virtual machine

Démarrer une ISO Tails dans une machine virtuelle KVM / QEMU

$ kvm --cdrom tails-amd64-X.Y.iso
 -m 2G,slots=2,maxmem=4G -smp 2 -cpu Skylake-Client (1)
 -usb -usbdevice host:534c:0001 (2)
 -device piix3-usb-uhci -drive id=a,file=tails-storage.qcow2,if=none,format=qcow2 -device usb-storage,drive=a,removable=on …


publié le 20.01.2018 dans mount

Mount Bluetooth peripherals (such as Android 7 phones)

Monter un périphérique Bluetooth comme un téléphone Android 7.

$ obexfs -b $MAC_address_of_peripheral /mountpoint (1)
$ fusermount -u /mountpoint (2)
1 Mount : replace $MAC_address_of_peripheral by something like XX:XX:XX:XX:XX:XX
2 Unmount : works even if you first failed by other way of unmounting


publié le 19.01.2018 dans ssh

Change automatic stop connection delay for SSH session

Changer le délais de déconnexion automatique pour les sessions SSH.

$ echo $TMOUT (1)
$ export TMOUT=600 (2)
$ export TMOUT= (3)
1 Check if timeout is set in the distant machine shell (Bash, Zsh…)
2 Set a session timeout of 10 minutes (600 seconds)
3 Disable session timeout


publié le 18.01.2018 dans Firefox

Proxy Firefox to distant machine via SSH not to expose HTTP traffic

Rediriger les requêtes de Firefox vers une machine distante via SSH pour ne pas exposer son trafic HTTP sur un WiFi local par exemple

$ autossh -2NfCT -D 8080 distant-machine.tld (1)
1 autossh command maintains SSH connections open, but a simple ssh also work

Then, in Firefox:

  1. open about:preferences …


publié le 17.01.2018 dans Debian

Install Firefox 57 (alias Quantum) and nexts on Debian stable Stretch

Installer Firefox 57 (alias Quantum) sur Debian stable Stretch

# echo 'deb http://ftp.fr.debian.org/debian/ unstable main contrib non-free' >> /etc/apt/sources.list
# echo 'deb http://ftp.fr.debian.org/debian/ sid main contrib non-free' >> /etc/apt/sources.list
# echo 'deb http://ftp.fr.debian.org/debian/ experimental …


publié le 16.01.2018 dans Debian

Debian dist-upgrade

Mise à jour majeure de GNU/Linux Debian. Exemple de Jessie à Stretch.

# apt update
# apt upgrade
# apt autoremove
# vi /etc/apt/source.lst +:%s/jessie/stretch/gi +:wq
# apt update
# apt upgrade
# apt full-upgrade
# apt autoremove
# apt clean
# reboot


publié le 15.01.2018 dans mutt

Mutt tag messages from 1 to 1000

Mutt taguer les messages de 1 à 1000.

T ~m 1-1000


publié le 14.01.2018 dans mutt

Mutt search (unciphered) message body

Mutt, chercher dans le corps des messages (non chiffrés pour la 2e commande).

~b wanted_text

Avoid ciphered messages :

!~G ~b wanted-text


publié le 13.01.2018 dans bluetooth

Bluetooth version

$ hciconfig -a (1)
hci0:	Type: Primary  Bus: USB
	BD Address: XX:XX:XX:XX:XX:XX  ACL MTU: 1021:5  SCO MTU: 96:6
	UP RUNNING PSCAN
	RX bytes:2331 acl:0 sco:0 events:255 errors:0
	TX bytes:42004 acl:0 sco:0 commands:254 errors:0
	Features …


publié le 12.01.2018 dans test

Test Regular Expression

Test regular or rational expression, or regex, regexp.

Tester une expression régulière ou rationnelle

$ echo "text" | egrep --color "regex"

If it appears that you don’t have egrep available, try with grep -E.


publié le 10.01.2018 dans tor

Connexion SSH / wget via TOR

$ torsocks ssh distant-domain.com
$ torsocks wget http://foo.onion/data.bar


publié le 09.01.2018 dans metadata

Anonymize image or video via metadata suppression

Anonymiser une image, une vidéo ou une musique en supprimant ses méta-données

$ exiftool -all= *.jpg (1)
$ ffmpeg -i in.avi -map_metadata -1 -c:v copy -c:a copy out.avi (2)
1 Image: support >60 formats : DCP, FLAC, GIF, ICC, MP4, MOV, PDF, RAW, TIFF…
2 Video: support other video …


publié le 08.01.2018 dans database

Check, repair and clean databases

Vérifier, réparer et nettoyer des bases de données

MySQL: $ mysqlcheck ( --check | --auto-repair | --repair | --optimize ) --all-databases

PostgreSQL: $ vacuumdb -a -z

SQLite:

$ for z in `ls *.sqlite`; do sqlite3 $z VACUUM; done


publié le 07.01.2018 dans Debian

cryptsetup: WARNING: invalid line in /etc/crypttab for luks-XX

If you get this message from cryptsetup instead of booting.

Si vous obtenez ce message et que votre machine ne démarre pas.

  1. # cryptsetup open /dev/sda3 sda3_crypt [1]

  2. Apply chroot commands

  3. # apt install lvm2 [2]

  4. # update-initramfs -u [3]


1. Open the LUKS container, sda3_crypt is the same name found in …


publié le 06.01.2018 dans mount

Change root from live-cd to local drive

Déplacer le répertoire racine d’un système lancé (par exemple depuis un live-cd) vers un nouveau répertoire (par exemple le disque dur de la machine hôte)

# mkdir /media/disk
# mount /dev/mapper/<machine>--vg-root /media/disk (1)
# mount /dev/sda2 /media/disk/boot (2)
# mount /dev/sda1 /media/disk/boot …


publié le 05.01.2018 dans SSH

Share shell session (attach it twice via multiplexer : screen or tmux)

Partager une session screen (attacher la session plusieurs fois, via un multiplexeur de terminal : screen ou tmux)

$ screen -S $name_of_session (1)
$ screen -x $name_of_session (2)
$ tmux new-session -s $name_of_session (1)
$ tmux attach-session -t $name_of_session (2)
1 Create a new session
2 Attach it as many times as you need, in …


publié le 04.01.2018 dans SSH

Import distant X11 window via SSH

Lancer sur son PC une fenêtre X11 d’un ordinateur distant.

$ ssh -X -C $user@$distant_host /usr/bin/xfce4-terminal

These lines must be uncommented in sshd config file : /etc/ssh/sshd_config

X11Forwarding yes
Compression yes


publié le 03.01.2018 dans SSH

SSH login distant machine

Configurer une connexion SSH par clé à une machine distante.

$ ssh-keygen
$ cat ~/.ssh/identify.pub | ssh $distant_user@$distant_machine "cat >> .ssh/authorised_keys" (1)
$ ssh $distant_user@$distant_machine (2)
1 Configure
2 Connect


publié le 02.01.2018 dans ISO

Create ISO image

Créer une image ISO

From CD/HDD :

$ dd if=/dev/hdc of=~/Image.iso bs=4M

From files and folders :

$ genisoimage -udf -allow-limited-size -r -J -V "ISO Title" -o /foo/bar

Get it back to a bootable USB stick :

$ dd if=~/Debian.iso of=/dev/sdb bs=4M


publié le 01.01.2018 dans ISO

Mount ISO image / Compact Disc

Monter une image ISO / un CD

# mount -t iso9660 -o loop ISO.iso /mnt/ISO/