Pour créer un fichier avec une date de type 2023-11-29-22-13-37 : # touch /MonDossier/monFichier-$(date +%Y-%m-%d-%H-%M-%S).txt
[ CATEGORIE ] : Linux
Rechercher des dossiers dans une arboressence en précisant la profondeur : # find / -maxdepth 12 -type d -name "MonRepertoireImportant"/etc/MonRepertoireImportant/usr/MonRepertoireImportant/exports/volume42/licences/usr/MonRepertoireImportant/exports/volume42/usr/MonRepertoireImportant DocumentationMAN find
Si vous avez un fichier avec des informations qui vous interessent sur plusieurs lignes et que vous souhaitez une sortie sur une seule vous pouvez utiliser la commande awk. Exemple de fichier : [...]HOST: serv01.my.company.org [Linux]---------- Comment: Backup MasterUse : A B C[...]HOST: serv02.my.company.org [Linux]---------- Comment: Hyper MasterUse : A B C D[...]HOST: serv03.my.company.org [Linux]---------- Comment: Super MasterUse : A C[...] Commande awk : awk
Pour lister tous les liens en dur, la commande awk permet de lister les mêmes inodes en récupérant le champs %i de stat : stat -c '%i %n' * | awk 'Doublon[$1]++' | cut -d ' ' -f 2- En inversant la commande, uniquement tous les liens symboliques peuvent être listés, (mais ainsi que les répertoires et les fichiers, qui ont leur unique inode): stat -c '%i %n' * | awk '!Doublon[$1]++' | cut -d ' ' -f 2- Résumé : HardLink SoftLink Ac
Commandes de base pour diagnostiquer un problème réseau en effectuant les tests préliminaires : # ssh <nomhôte ou adresseIP># ping <nomhôte ou adresseIP># tracert <nomhôte ou adresseIP># dig <nomhôte ou adresseIP> La commande dig envoie l‘@IP du serveur, pinger le serveur pour vérifier.
La commande bang bang ou !! permet d’exécuter la dernière commande tapée dans le terminal. Il est également possible de préciser un nombre !n ou n correspond à la ligne dans l’historique (voir commande history) Pour lancer la dernière commande : # !! Pour lancer la commande n°42 (voir son historique): # !42 Remerciements midorino3142 Merci à midorino3142 pour ce TIL !
Pour remplacer plusieurs mots (ou bouts de mots) sous Vim, on utilise g, s et %s : Toutes les occurences : :%s/texte/Nouveau/g Une seule (la 1ère trouvée) : :s/texte/Nouveau/g Exemple : changer le mot corbeau en corbeille sans toucher aux autres mots (comme beau) :g/corbeau/s/beau/beille/g Exemple : changer les espaces en tab ou inversement (mettre le bon nombre d’espaces) :%s/ /\t/g:%s/\t/ /g Et si vous avez fait un gros mistake, utiliser :u autant de fois que nécessaire.
Commande pour supprimer tous les processus d’un utilisateur en particulier : # ps aux | grep "^usename" | awk '{print $2}' | xargs kill -9 Détails : ps aux : liste tous les processus grep "^usename" : liste uniquement les lignes commençant par username awk '{print $2}' : Récupère la 2ème colonne (où se trouve le PID des processus) xargs kill -9 : Met les PID sous forme de ligne (avant en colonne) et exécute un kill
Pour trouver la ligne la plus fréquentes dans un fichier : # cat file | sort | uniq -c | sort -n | tail -1
Si vous voulez changer les droits et supprimer tous les dossiers du répertoire /John qui commencent par “test” et finissent par “.bdr” : # find /home/John/ -type d -name "test*.bdr" -exec sh -c 'chmod u+w {}/* ; rm -f {}/*' \; VérificationEn cas de doute, vous pouvez simplement lancer le début de la commande, find listera tous les fichiers qui seront modifiés et supprimés avec chmod et rm -f: # find /home/John/ -type d -name "test*.bdr" Décompo
La commande printenv peut être utilisée pour répertorier toutes les variables d’environnement sur le système, certaines de ces valeurs changent en fonction de l’utilisateur connecté. Pour afficher toutes les variables d’environnement : # printenv Exemple de sortie : SHELL=/bin/bashPWD=/rootLOGNAME=alineXDG_SESSION_TYPE=ttyMOTD_SHOWN=pamHOME=/rootLANG=fr_FR.UTF-8LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=00:su=37;41:sg=30;43:ca=30;41:
Pour changer des droits en fonction d’un répertoire ou d’un fichier en parcourant une arboressence : UtilisationManuelDéfinition dans les manuels : xargs — build and execute command lines from standard input exec — execute commands and open, close, or copy file descriptors Find et execLa commande find couplée à exec : # find <path> -type d -exec chmod 755 {} \;# find <path> -type f -exec chmod 644 {} \; Son équivalent avec les droits rxw : # find <path>
Le caractère * permet de selectionner tous les fichiers dans un répertoire mais un message d’erreur peut apparaitre : ls: cannot access *: No such file or directory. La plupart du temps cette erreur, malgré la connexion en root, peut être dûe au fait que le volume sur lequel on accèdent soit partagé, ou sous couvert de NetApp par exemple. $ sudo ls /<path>/*ls: cannot access *: No such file or directory Autre exemple : $ grep "word" /<path>/*grep: *.*: No such file or direc
Pour chercher les numéros de série des disques durs : # smartctl -a # hwinfo -disk # hwinfo -wlan # hwinfo -monitor # hwinfo -partition # hwinfo -pci # hwinfo -scsi # demidecode # cat /proc/dma # lshw -short # lspci -t # lspci -v # lspci -vv # lspci -s
Commande très triviale mais on oublie facilement comment la lancer… Les 3 façons d’éxécuter un .bashrcPour lancer un fichier bash dans un autre répertoire, ici c’est le fichier bash.bashrc :(Bien penser à mettre le point “.“) # . /etc/bash.bashrc Pour lancer un fichier bash dans le répertoire courant, ici c’esr le fichier .bashrc :(Bien penser à mettre le point “.“ et le tilde “~“) # . ~/.bashrc Il également possible d’utiliser la commande source, qui exécute des commandes (ici celles conte
Commande rapide pour savoir sous quelle architecture on se trouve sous Linux # uname -m Si la commande renvoie x86_64 c’est du 64 bitsSi la commande renvoie i686 ou i386 c’est du 32 bits
L’utilisation de ifconfig est maintenant déprécié sur les nouvelles distributions et est remplacé par la commande ip a Pour avoir plus de facilité de lecture et un certain nombre d’informations importantes, les options à utiliser sont -stats, -color, -human, addr ou -s, -c, -h, a, soit, au choix : # ip -stats -color -human addr# ip -s -c -h a
Pour savoir si on se trouve sous Wayland ou Xorg # echo $XDG_SESSION_TYPE Documentationhttps://fr.wikipedia.org/wiki/X.Orghttps://fr.wikipedia.org/wiki/Wayland
Pour afficher le PATH : # echo $PATH Pour changer le PATH # export PATH=$PATH:/un/nouveau/chemin
Pour faire une recherche dans des fichiers : # find /chemin -name "*" -exec grep -Hn "chaine_de_caractère" {} \; Il existe deux autres alternatives plus pratiques : ack https://beyondgrep.com/, codé en Perl. ag https://github.com/ggreer/the_silver_searcher codé en C. Documentationhttps://beyondgrep.com/https://github.com/ggreer/the_silver_searcher Remerciements maddingue Merci à maddingue !
Pour mettre à jour un unique paquet : # apt install --only-upgrade <NomduPaquet> Exemple : # apt install --only-upgrade sudoLecture des listes de paquets... FaitConstruction de l'arbre des dépendances Lecture des informations d'état... FaitLes paquets suivants seront mis à jour : sudo1 mis à jour, 0 nouvellement installés, 0 à enlever et 151 non mis à jour.Il est nécessaire de prendre 1 055 ko dans les archives.Après cette opération, 1 024 o d'espace disque supplémen
Si l’on souhaite mettre à jour un seul paquet il est utile de connaître sa version au préalable. # apt-cache policy <NomPaquet> Exemple : # apt-cache policy sudosudo: Installé : 1.8.19p1-2.1+deb9u2 Candidat : 1.8.19p1-2.1+deb9u3 Table de version : 1.8.19p1-2.1+deb9u3 500 500 http://security.debian.org/debian-security stretch/updates/main amd64 Packages *** 1.8.19p1-2.1+deb9u2 500 500 http://debian.mirrors.ovh.net/debian stretch/main amd64 Packages 100 /var/lib/d
Pour vérifier l’état du paquet : # dpkg -l | grep Package Pour désinstaller la paquet mais tout en gardant les fichiers de configuration : # dpkg -r Package Pour supprimer complètement le paquets ainsi que ses fichiers de configuration : # dpkg -P Package Pour voir si le paquet a bien été désinstallé : # dpkg -l | grep Package Private joke de dpkg : # dpkg -r heartbeat-elasticdpkg: unrecoverable fatal error, aborting: impossible de mettre en forme /var/lib/dpkg/updates/tmp.i: Aucun espace d
L’historique des commandes Linux se trouve dans le fichier ~/.bash_history Effacer complètement l’historique : # history -c Effacer une seule ligne de l’historique : # history -d <Numero de Ligne> Effacer une plage de lignes : # history -d start end Eventuellement en faisant une boucle for : # for (( i=ValeurMini; i<=ValeurMaxi; i++ )); do history -d $i; done DocumentationXa, le man de bash
Si vous souhaitez voir le TOP10 des commandes que vous utilisez le plus sur votre machine, il suffit d’utiliser cette commande : # cat ~/.bash_history | sort | uniq -c | sort -nr | head -n 10 Vous devriez avoir quelque chose comme : # cat ~/.bash_history | sort | uniq -c | sort -nr | head -n 579 systemctl reload nginx.service 77 vim /etc/nginx/nginx.conf 56 vim /etc/nginx/sites-available/n0tes.fr.conf23 docker ps -a22 git pull Documentationhttps://www.linux.org/threads/find-your-top-10-linux-c
Pour savoir rapidement si votre système utilise SysV init ou systemd : # ps -p 1 Plus précisément cette commande permet de savoir qui est le processus n°1
Pour changer l’éditeur par défaut de cron il faut modifier la variable #EDITOR et la prochaine ouverture d’un fichier (comme la crontab) se fera avec Vim # export EDITOR=vim