Ceci est une ancienne révision du document !
Linux
find
find . -type d -name "xxx"
find . -type f -exec chmod -x {} \;
Pour traiter les répertoires : -type d
Chaînage
find . -maxdepth 1 -type d -newermt 2018-01-03 | cut -d'/' -f 6 | grep 2017
find . -maxdepth 1 -type d | grep -Ev "/[0-9]{4}$" | xargs rmdir
-Ev : Expression régulière étendue + résultat inversé
Additionner la taille des fichiers recherchés
find /path/to/files/ -name *.log* | xargs du -hs --total | tail -1
sed
sed -i 's/regex/string/g' file
Chaînage
cat infile | sed 's/regex1/string/' | sed -r 's/re\(g\)ex2/\str\1ing/' > outfile
-E, -r, –regexp-extended
rsync
Script de sauvegarde
#!/bin/bash
# A script to perform incremental backups using rsync
set -o errexit
set -o nounset
set -o pipefail
readonly SOURCE_DIR="${HOME}"
readonly BACKUP_DIR="/mnt/data/backups"
readonly DATETIME="$(date '+%Y-%m-%d_%H:%M:%S')"
readonly BACKUP_PATH="${BACKUP_DIR}/${DATETIME}"
readonly LATEST_LINK="${BACKUP_DIR}/latest"
mkdir -p "${BACKUP_DIR}"
rsync -av --delete \
"${SOURCE_DIR}/" \
--link-dest "${LATEST_LINK}" \
--exclude=".cache" \
"${BACKUP_PATH}"
rm -rf "${LATEST_LINK}"
ln -s "${BACKUP_PATH}" "${LATEST_LINK}"
# crontab -e
# 0 */12 * * * /path/to/backup-script.sh
Encodage des caractères
Voir l'encodage d'un fichier
file -i file.txt
Ajouter le BOM à un fichier UTF-8
sed -i '1s/^\(\xef\xbb\xbf\)\?/\xef\xbb\xbf/' file.txt
Logging
Logger la sortie d'une commande tout en l'affichant dans la console
echo "gromf!" 2>&1 | tee log.out
Compter le nombre de lignes par seconde ajoutées à un fichier de log
tail -f /var/log/haproxy.log | pv --line-mode --rate > /dev/null
Gestion des utilisateurs
Ajouter un utilisateur à un groupe
usermod -aG <GROUP> <USER>
Gestion des processus
Tuer à l'aide de la commande ps
kill $(ps aux |grep -i illustrator | awk '{print $2}')
Interactivité
Afficher le résultat d'une commande et l'enregistrer vers un fichier
<command> | tee output.log
Enregistrer une saisie
read -p "Veuillez saisir du texte" VAR
Enregistrer une saisie de mot de passe
read -s -p "Mot de passe :" PASSWD
Gestion de l'énergie
Eteindre la machine
shutdown -h now
OU
init 0
Niveaux d'exécution
- 0 — Arrêt.
- 1 — Mode texte mono-utilisateur.
- 2 — Pas utilisé
- 3 — Mode texte multi-utilisateurs complet.
- 4 — Pas utilisé
- 5 — Mode graphique multi-utilisateurs complet (avec un écran de connexion de type X Window)
- 6 — Redémarrage.
Gestion du réseau
Renouveler le bail DHCP
Libération du bail
sudo dhclient -r
Obtention d'un nouveau bail
sudo dhclient
Gestion de la localisation
Configuration du clavier
dpkg-reconfigure keyboard-configuration
Réparation des problèmes de langues
perl: warning: Please check that your locale settings:
LANGUAGE = (unset),
LC_ALL = (unset),
LC_TIME = "fr_FR.UTF-8",
LC_MONETARY = "fr_FR.UTF-8",
LC_ADDRESS = "fr_FR.UTF-8",
LC_TELEPHONE = "fr_FR.UTF-8",
LC_NAME = "fr_FR.UTF-8",
LC_MEASUREMENT = "fr_FR.UTF-8",
LC_IDENTIFICATION = "fr_FR.UTF-8",
LC_NUMERIC = "fr_FR.UTF-8",
LC_PAPER = "fr_FR.UTF-8",
LANG = "en_GB.UTF-8"
are supported and installed on your system.
sudo locale-gen fr_FR.UTF-8 sudo dpkg-reconfigure locales
Sécurité
sudo
Ajouter un utilisateur au sudoers
La commande consiste simplement à ajouter l'utilisateur au groupe sudo.
usermod -aG sudo <USER>
Augmenter le délai de saisie du mot de passe
sudo visudo
Defaults timestamp_timeout=3600
-1 : illimité
Pour un utilisateur en particulier :
Defaults:username timestamp_timeout=3600
Divers
Exécuter en tant que
Utilisateur standards
su - <USER> -c "<COMMAND>"
Spécifier le groupe et le shell
su -g <GROUP> <USER> -s /bin/bash -c "<COMMAND>"
Exécuter une commande n fois
for i in {1..n}; do command; done;
Exécuter une commande à intervalles régulières
watch -n 1 date
Déporter l'affichage en tant que root
sudo xauth add $(xauth -f ~befe/.Xauthority list|tail -1)
Créer un répertoire et se rendre à l'intérieur dans la foulée
mcd() { mkdir "$@" 2> >(sed s/mkdir/mcd/ 1>&2) && cd "$_"; }
Vérifier les mises à jour du BIOS (et autres firmwares)
fwupdmgr get-upgrades