Étendre une partition avec LVM lvextend

lvextend -L +3G -r /dev/vg0/home

Cette commande permet d'ajouter 3 Go à la partition /dev/vg0/home mais aussi d'étendre la partition ext4 sous-jacente pour qu'elle occupe l'espace nouvellement alloué à cette partition — c'est l'option -r (--resisefs).

Avec awk

find /rep -type f -print0 | xargs -0 ls -al | awk '{sum += $5} END {print sum}'

Commentaire : le cinquième champ ($5) correspond à la taille en octets du fichier.

find . -type f -print0 | xargs -0 ls -al | awk '{chaine = "" ; for (i=5; i<=NF;i++) if (i == 5 || i >= 9) chaine = chaine $i OFS ; print chaine}'| less

Commentaire : le nom du fichier commence au neuvième champ et les suivants.

dig

dig +nostats +nocomment +nocmd any -x 194.214.217.94

Commentaire : pas d'affichage superflux.

dig +nostats +nocomment +nocmd  -x 194.214.217.94 | grep PTR | awk '{print $5}' | sed -e "s/\.$//g"

Trucs et astuces avec vim

# tri alphabétique de la zone sélectionnée
:'<,'> sort
# tri des lignes 7 à 204
:7,204 sort
# tri de toutes les lignes du fichier
:% sort

Sauver un fichier en lecture seule en utilisant sudo dans vim

Parfois, on oublie de mettre un sudo devant une édition d'un fichier qui ne nous appartient pas. Alors, voici comment remédier à la situation quand on a déjà fait des modifs dans le fichier en question :

# pour sauver et en supposant avoir les droits sudo qui vont bien
:% ! sudo -u utilisateur
# ou, plus simplement, en root
:% ! sudo
# ou mieux (repris de commandlinefu)
:w ! sudo tee %

Efficace et ça marche correctement ! Plus de problèmes d'oubli d'un sudo avant d'entrer dans vim.

sed multiligne

Exemple

Le but est de réécrire un fichier shell (c'est un exemple) en changeant un peu la convention de codage.

Au départ, nous avons des blocs if … puis passage à la ligne puis un then tout seul sur la sienne.

À la fin, nous voulons un if … ; then sur une seule ligne. Le but est de traiter le fichier en une fois en utilisant sed.

sed -i.bak  '/^[[:space:]]*if[[:space:]].*$/{N;s/^\([[:space:]]*\)if\([[:space:]].*\)\n[[:space:]]*then[[:space:]]*$/\1if\2 ; then/}' fichier_a_traiter.sh

Explications

La première partie permet de délimiter le début de traitement (ligne avec un if précédé d'espaces et suivi par des choses.

Ensuite, on ouvre { pour commencer une séquence de commandes sed. La première, N permet d'accumuler la ligne suivant celle qui vient de correspondre au premier motif. On a donc maintenant la ligne if plus celle then dans le même buffer où seront faites la substitution suivante. La seule chose, c'est qu'il faut penser que cette substitution se fait sur une chaîne avec 2 lignes, donc séparée par un passage à la ligne. Au final, on referme } pour terminer les séquences.

Autre essai

# transformation d'une structure de déclaration d'utilisateurs du type :
# user:
#   sshkeys:
#     sshkey_nom_numero:
#       key: '<clé ssh>'
#
# en
# user:
#   sshkeys:
#     - 'ssh-rsa <clé ssh> ssh_nom_numero'

sed -i.bak '/^[[:space:]]*sshkeys:[[:space:]]*$/{N;N;s/^[[:space:]]*sshkeys:\n[[:space:]]*sshkey_\([^_][^_]*_[0-9]*\):\n[[:space:]]*key: .\([^[:space:]]*\).$/    sshkeys:\n      - '"'"'ssh-rsa \2 sshkey_\1'"'"'/}' users.yaml


Références