User Tools

Site Tools


informatique:linux:commandes_linux

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Next revisionBoth sides next revision
informatique:linux:commandes_linux [2019/11/23 14:52] – [vi] pteuinformatique:linux:commandes_linux [2020/01/03 10:54] – [sed] pteu
Line 2100: Line 2100:
 =====sed===== =====sed=====
  
-**S**tream **ED**itor est une commande qui permet d'appliquer différentes transformations prédéfinies à un flux séquentiel de données textuelles. +**S**tream **ED**itor est une commande qui permet d'appliquer différentes transformations prédéfinies à un flux séquentiel de données textuelles. Sed peut travailler sur un flux (pipé derrière une autre commande) ou à partir d'un fichier :
- +
-  * Filtre pour remplacer une IP par X.X.X.X+
 <code bash> <code bash>
-sed "s/\([0-9]\{1,3\}\.\)\{3\}[0-9]\{1,3\}/X.X.X.X/g" +# afficher le contenu du fichier en remplaçant toto par titi 
-</code>+cat fichier.txt | sed 's/toto/titi'
  
-  * Convertir les minuscules en majuscules (ou inversement) +# même chose en plus simple 
-<code bash> +sed 's/toto/titifichier.txt
-echo "La PhraSe avec Des LeTTres n'iMpoRte comMEnt"sed 's/.*/\L&/' +
-la phrase avec des lettres n'importe comment +
-# et respectivement 's/.*/\U&/' pour convertir le texte en majuscules+
 </code> </code>
-(Le "&" représente le motif qui matche) 
  
-  * Ajouter une ligne en début de fichier :+Par défaut le résultat est affiché dans le terminal ; si on précise un fichier on peut choisir d'enregistrer les modifications dans celui-ci, en ajoutant l'option ''-i'' :
 <code bash> <code bash>
-sed -i '1iPremièreLigne' toto.txt+# remplacer toto par titi dans le fichier (sans afficher le résultat) 
 +sed -i 's/toto/titifichier.txt 
 +# idem, mais en sauvegardant le fichier original avec l'extension .bck 
 +# cela créra 2 fichiers : fichier.txt (modifié) et fichier.txt.bck (l'original) 
 +sed -i".bck" 's/toto/titi' fichier.txt
 </code> </code>
-(il s'agit d'un "un" i suivi du texte à insérer) 
  
-  * Afficher la 3ème ligne d'un fichier (et sauvegarder le fichier source avec le suffixe ".bck") :+  * Afficher la 3ème ligne d'un fichier (plusieurs méthodes
 +Afficher la 3ème ligne d'un fichier :
 <code bash> <code bash>
-sed -i".bck" -n '3p' <fichier>+sed -n '3p' <fichier> 
 +sed '3!d'   <fichier> 
 +sed '52q;d' <fichier>   # arrête la lecture dès qu'elle a matché, pour la performance
 </code> </code>
  
Line 2135: Line 2135:
 sed -n '2,5p' <fichier> sed -n '2,5p' <fichier>
 sed -n '2,/sys/p' <fichier> sed -n '2,/sys/p' <fichier>
 +</code>
 +
 +  * Ajouter une ligne en début de fichier :
 +<code bash>
 +sed -i '1iPremièreLigne' toto.txt
 +</code>
 +(il s'agit d'un "un" i suivi du texte à insérer)
 +
 +  * Afficher les lignes sauf celles situées entre "toto" et "titi" :
 +<code bash>
 +sed '/toto/,/titi/d'
 </code> </code>
  
   * Supprimer les lignes contenant toto dans le fichier toto.txt :   * Supprimer les lignes contenant toto dans le fichier toto.txt :
 <code bash>sed -i '/toto/d' toto.txt</code> <code bash>sed -i '/toto/d' toto.txt</code>
 +
 +  * Supprimer les lignes __ne contenant pas__ toto dans le fichier toto.txt :
 +<code bash>sed -i '/toto/!d' toto.txt</code>
  
   * Supprimer les lignes vides   * Supprimer les lignes vides
Line 2147: Line 2161:
 sed -e '0,/^begin/d' -e '/^end/,$d' fichier.txt sed -e '0,/^begin/d' -e '/^end/,$d' fichier.txt
 </code> </code>
 +
 +  * Remplacer les adresses IP par X.X.X.X
 +<code bash>
 +sed "s/\([0-9]\{1,3\}\.\)\{3\}[0-9]\{1,3\}/X.X.X.X/g"
 +</code>
 +
 +  * Convertir les minuscules en majuscules (ou inversement)
 +<code bash>
 +echo "La PhraSe avec Des LeTTres n'iMpoRte comMEnt" | sed 's/.*/\L&/'
 +la phrase avec des lettres n'importe comment
 +# et respectivement 's/.*/\U&/' pour convertir le texte en majuscules
 +</code>
 +(Le "&" représente le motif qui matche)
  
   * On peut réutiliser des patterns entre () qui ont matchées avec \1, \2. Par exemple, pour inverser les 3 termes séparés par des virgules :   * On peut réutiliser des patterns entre () qui ont matchées avec \1, \2. Par exemple, pour inverser les 3 termes séparés par des virgules :
Line 2378: Line 2405:
 ss dport \> 1024 ss dport \> 1024
 </code> </code>
 +=====stat=====
 +
 +Commande permettant d'afficher des informations sur un système de fichier ou juste un fichier.
 +
 +<code bash>
 +# Affichage des informations du fichier toto.txt
 +$ stat toto.txt
 +  Fichier : « toto.txt »
 +   Taille : 0           Blocs : 0          Blocs d'E/S : 1048576 fichier vide
 +Périphérique : 37h/55d  Inœud : 36311392    Liens : 1
 +Accès : (0644/-rw-r--r--)  UID : (1515/dude)   GID : ( 1515/     dsi)
 + Accès : 2018-08-30 17:16:35.295782414 +0200
 +Modif. : 2018-08-30 18:15:02.295782414 +0200
 +Changt : 2018-08-30 17:16:35.295782414 +0200
 +  Créé : -
 +</code>
 +
 +On peut filtrer le résultat par type d'information recherchée avec l'option ''-c'' ; par exemple n'afficher que la date de dernière modification du fichier (au format //human-readable//) : ''%y''
 +<code bash>
 +$ stat -c "%y" toto.txt
 +2018-08-30 18:15:02.295782414 +0200
 +</code>
 +
 =====strings===== =====strings=====
  
 Affiche les chaines de caractères imprimable dans le fichier spécifié (c'est donc peu utile sur les fichiers texte). Affiche les chaines de caractères imprimable dans le fichier spécifié (c'est donc peu utile sur les fichiers texte).
-  strings toto.exe +<code bash> 
 +strings toto.exe 
 +</code>
  
 =====su===== =====su=====
Line 2497: Line 2548:
  
 Permet de calculer le temps d'exécution d'une commande : Permet de calculer le temps d'exécution d'une commande :
-  time sleep 3 +<code bash> 
-   +time sleep 3 
-   real    0m3.015s + real    0m3.015s 
-   user    0m0.000s + user    0m0.000s 
-   sys     0m0.000s+ sys     0m0.000s 
 +</code>
  
 La commande retourne le temps réel (//real//), le temps en mode utilisateur (//user//) et le temps en mode système (//sys//). La commande retourne le temps réel (//real//), le temps en mode utilisateur (//user//) et le temps en mode système (//sys//).
  
 +Pour mesurer le temps de plusieurs commandes pipées (chainées avec un pipe ''|''), utiliser plutôt la formulation : 
 +<code bash> 
 +time -f "%es" bash -c "ls | wc" 
 +</code> 
 =====top===== =====top=====
  
Line 2681: Line 2736:
  
  
-=====vipw=====+=====vi*=====
  
-C'est la commande à utiliser pour éditeravec vile fichier ''/etc/passwd'' (il met les verrous qui vont bien pour éviter des conflits d'accès).+Composés du préfixe **vi** (comme d'éditeur de texte) suivi de la commande à configurer**vipw****vigr** ou **visudo** sont des "mots-valise" permettant d'éditer proprement des parties critiques d'un système Linux. 
 +  * ''vipw'' pour éditer les utilisateurs (fichier /etc/passwd
 +  * ''vigr'' pour éditer les groupes (fichier /etc/group) 
 +  * ''visudo'' pour éditer la configuration de la commande ''sudo'' (fichier /etc/sudoers)
  
 +Leur utilisation est vivement recommandée dans la mesure où, souvent, leur action ne se limite pas à l'édition du fichier de conf mais permet également :
 +  * de mettre à jour d'autres fichiers liés, comme dans le cas de **vipw** ou **vigr** (pour MAJ respectivement /etc/shadow et /etc/gshadow)
 +  * de vérifier la syntaxe pour ne pas bloquer le système en cas d'erreur (**visudo** par exemple)
  
 +L'éditeur de texte lancé est celui renseigné dans la variable d'environnement $VISUAL, sinon celui de $EDITOR ; et seulement si aucun n'est spécifié, **vi** sera utilisé par défaut.
 +
 +Au passage, pour configurer l'éditeur de texte par défaut, il existe plusieurs manières :
 +  * **update-alternatives --config editor** sous Debian
 +  * **select-editor** (utilise la variable $SELECTED_EDITOR, préemptée par $VISUAL et $EDITOR)
 +  * éditer le fichier ~/.bashrc pour y ajouter l'une des lignes suivantes :
 +<code bash>
 +export VISUAL=vi
 +export EDITOR=vi
 +</code>
 =====vmstat===== =====vmstat=====
  
informatique/linux/commandes_linux.txt · Last modified: 2024/04/05 06:58 by pteu