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éguliers

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