====== ANTI-SÈCHE BASH ======
Ma collection de commandes Bash qui m'ont tiré d'affaire à la maison ou au travail, ou susceptibles de l'être.
Certaines peuvent être évidentes, d'autres non. Cette page sera mon bloc-note perso.
Outil très chouette pour décortiquer des commandes à rallonge : https://explainshell.com/
----
===== Commandes =====
Rechercher les lignes en commun sur deux fichiers
awk 'NR==FNR{arr[$0];next} $0 in arr' file1 file2
cat file1 file2 | sort | uniq -d
Afficher les fichiers volumineux (du plus gros au plus léger)
du -ak | sort -rn | more
Créer une session shell et enregistre la sortie standard dans un fichier
script file # Ctrl +D pour quitter
Afficher les librairies chargées d'un exécutable
ldd
Connaître sa distribution Linux
cat /etc/lsb-release ou lsb_release -a
Connaître la version du kernel utilisé
cat /proc/cmdline
Se connecter à une BDD Postgres
psql -h -d -U -p
Tracer les accès d'une application à mon home
strace -e trace=file APP 2>&1 | grep "/home" > trace.log
Basculer le clavier en QWERTY/AZERTY
setxkbmap en / fr
Couteau-suisse du traitement de lignes
sed -n 'x,yp' file # affiche le contenu entre les lignes x et y
sed -n '/A/,/B/p' file # affiche le contenu entre l’occurrence A et B
awk '/A/, B/' file # affiche le contenu entre l’occurrence A et B
sed -e '/bash*/ s/bash/sh/g' # remplace 'bash' par 'sh' sur toutes les lignes finissant par 'bash'
sed '/^$/d' file # retire les lignes vides
grep -v '^$' file # retire les lignes vides
sed /'foo'/d file # supprime le mot 'foo' d'un fichier
tail -n+2 file # saute la première ligne
Troubleshooting réseau
netstat -su # affiche des infos sur les pertes de paquets
netstat -g # affiche les groupes multicast écoutés sur chaque interface
ethtool # récupère des infos sur une interface (branchement, ses modes supportés)
fuser -v -n tcp 5000 # afficher des infos sur le process utilisant le port 5000
Troubleshooting mémoire
vmstat 1
free -m
htop -d1
cat /proc/meminfo
===== Scripting =====
Itérer sur des entiers
for i in $(seq 1 5); do quelque_chose; done
SUBSTITUTIONS
* **//echo ${foo%?}//** supprime le dernier caractère de foo
* **//echo ${foo%_v.cf}//** supprime le caractère "_v.cf" - pratique pour renommer en masse