Linux Shell tips & tricks
Recharger des fichiers de conf sans se déconnecter
. ~/.profile
est strictement équivalent à:
source ~/.profile
la commande source exécute le script spécifié dans le shell actuel.
Obtenir son adresse IP publique
dig +short myip.opendns.com @resolver1.opendns.com
curl -s http://whatismyip.akamai.com
curl wgetip.com
Changer de Shell
Vérifier si on est en shell Bash:
echo $SHELL retourne /bin/bash
puis pour passer sous Fish par exemple ajouter le path du binaire du nouveau Shell dans /etc/shells puis:
chsh -s /usr/bin/fish
Lister les port écoutés
sudo netstat -tupln
Raccourcis Bash
CTRL + A
: début de ligne
CTRL + E
: fin de ligne
ALT + B
: reculer 1 mot
ALT + F
: avancer 1 mot
!une_commande
: exécute la commande avec les arguments de sa dernière exécution (ex: !ls
)
CTRL + R
: permet de naviguer à travers l'historique des commandes (interractif)
Correction du décallage d'heure en dual boot
Pour corriger de l'horloge en dual-boot avec Windows ie le passage de Linux a Windows génère un décallage de l'heure système, le paramètre "RTC in local TZ" doit passer de no à yes
sudo timedatectl set-local-rtc 1 --adjust-system-clock
timedatectl
est issue de l'écosystème linux-systemd
Localiser un binaire
la commande command -v
est à favoriser par rapport à which qui est un process externe (sécurité, performances etc.) et cherche les binaires (pas uniquement dans le PATH)
command -v monbinaire
locate
recherche des entrées dans une base de données mlocate mise à jour régulièrement par la système. Cherche une correspondance sur tout le chemin, il est possible d'utiliser le -r (regex)
locate -r '^.\*/monbinaire
find
peut avec les arguments -exec
ou -ok
être utilisé pour exécuter des instructions sur les résultats de la commande
find -name '\*onbinaire' -print -ok ls -l {} \;
grep -R
en excluant des dossiers
grep -iR --exclude-dir=node_modules ' port ' \*
Fichiers et droits
chown possède de nombreuses options, pour affecter des dossiers/fichiers de façon sélective:
chown www-data:www-data /tmp/toto # modifie user:groupe
chown -R www-data:www-data /tmp/toto # modifie récursivement
chown -h www-data:www-data /tmp/toto # modifier les droits sur les symlinks eux même (et non la cible du lien)
chown --from=behrouze www-data /tmp/toto # modifie le owner des fichier de l'utilisateur spécifié
chown --from=:old-group :new-group /tmp/toto # modifie le groupe des fichier du groupe old-group
chown --reference=fichier-source fichier-cible # copie les droits d'un fichier existant
chown g+s www-data /toto/ # utilisation du SGID, appliqué à tout nouveau fichier créé
Debugger en Bash
mode debug: set -x
et pour remettre en mode normal: set +x
Executer une succession de commandes en root
sudo sh -c 'cat fichier|grep -v "#" > /etc/nginx/sites-available/monsite.conf'
Grep
grep -A 5 # affiche les 5 lignes suivants le pattern trouvé
grep -B 5 # précédent
grep -C 5 # avant et après
grep -E -w 'version|number' fichier # cherche les mots version OU number dans le fichier
MAJ du système
Pour appliquer les MAJ de sécurité automatiquement utiliser l'utilitaire unattended-upgrades. A noter que mettre un apt update dans un crontab sera souvent en échec car le PATH n'est pas setté.
# pour vérifier la date du dernier apt update voir la date de dernière modif du fichier pkgcache.bin :
ls -l /var/cache/apt/pkgcache.bin
# ou avec les détails des dates d'accès :
stat /var/cache/apt/pkgcache.bin
# le dernier apt upgrade :
tail -1 /var/log/apt/history.log
Changer l'éditeur de texte par défaut
Un éditeur de text par défaut doit être sélectionné pour utiliser par exemple les commandes tels que crontab -e , et nous avons le choix parmis les éditeurs installés (souvent au moins vim et nano):
select-editor
Changer le nom de sa machine
vi /etc/hostname
vi /etc/hosts
Distribution Linux
Pour déterminer la distribution les infos se trouvent:
uname -a
cat /etc/os-release
cat /proc/version
hostnamectl
Reboots
affiche la date et heure des 3 derniers redémarrage (complète uptime qui donne la durée)
last -x|grep shutdown | head -3
Grub
Pour customiser Grub (OS loader) en ajoutant la mémorisation du dernier choix, ainsi que l'ajout d'une image de background perso, il faut éditer le fichier sudo vi /etc/default/grub
et ajouter/modifier :
GRUB_DEFAULT=saved
GRUB_SAVEDEFAULT=true
GRUB_BACKGROUND="/home/behrouze/Images/Grub.jpg"
et faire prendre en compte les modifications par un sudo update-grub
.