Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
projets:ecole:scripting:initiation_au_shell [Le 16/04/2018, 14:52]
elleji [Présentation de &]
projets:ecole:scripting:initiation_au_shell [Le 04/08/2023, 00:00] (Version actuelle)
Amiralgaby correction formatage des chevrons double pour ne pas être interprété par dokuwiki
Ligne 7: Ligne 7:
  
 ----------------- -----------------
- 
- 
  
 ===== Généralités ===== ===== Généralités =====
Ligne 29: Ligne 27:
 À chaque entrée/​sortie est associée un numéro appelé **descripteur de fichier** comme vous pouvez le voir dans ce tableau récapitulatif : À chaque entrée/​sortie est associée un numéro appelé **descripteur de fichier** comme vous pouvez le voir dans ce tableau récapitulatif :
  
-^ Entrées/​Sorties ​            ^ Nom      ^ Numéro ​  ​^ ​ +^ Entrées/​Sorties ​            ^ Nom      ^ Numéro ​  ^
 | Entrée standard ​            ​| ​ stdin   ​| ​  ​0 ​     | | Entrée standard ​            ​| ​ stdin   ​| ​  ​0 ​     |
 | Sortie standard ​            ​| ​ stdout ​ |   ​1 ​     | | Sortie standard ​            ​| ​ stdout ​ |   ​1 ​     |
Ligne 39: Ligne 37:
  
 ----------------- -----------------
- 
- 
  
 ===== Redirections ===== ===== Redirections =====
  
-{{icons:​icone_danger.png ​ }} +Les **redirections** permettent simplement (comme leur nom l'​indique),​ de rediriger un des trois descripteurs de fichier vu plus haut vers à peu près tout ce que vous voulez. Les opérateurs utilisés sont ">", ​%%">>"​%%, "<" ​et %%"<<"​%%
->​Dokuwiki remplace automatiquement > >  et < <(sans l'​espace entre les deux) par un guillemet comme ça >> et comme ça <<, donc jusqu'​à ce qu'une solution soit trouvée (par vous peut être...) pensez à faire le changement mentalement. +
- +
-Les **redirections** permettent simplement (comme leur nom l'​indique),​ de rediriger un des trois descripteurs de fichier vu plus haut vers à peu près tout ce que vous voulez. Les opérateurs utilisés sont <​code>​">",​ ">>",​ "<"​"<<"​</​code>​+
  
 ==== Sorties ==== ==== Sorties ====
  
-Prenons un exemple, on connaît la commande "​ls"​ qui donne la liste des fichiers d'un répertoire et on veut enregistrer le résultat dans un fichier. Pour cela on    va rediriger le résultat ​de la sortie standard dans le fichier test à l'aide de la commande suivante :+Prenons un exemple, on connaît la commande "​ls"​ qui donne la liste des fichiers d'un répertoire et on veut enregistrer le résultat dans un fichier. Pour cela on    va rediriger le résultat ​dela sortie standard dans le fichier test à l'aide de la commande suivante :
  
 <​code>​ls > test</​code>​ <​code>​ls > test</​code>​
Ligne 63: Ligne 56:
 Techniquement,​ lorsque ">"​ est utilisé le fichier vers lequel la sortie est redirigée est créé s'il n'​existait pas auparavant, sinon il est écrasé. Techniquement,​ lorsque ">"​ est utilisé le fichier vers lequel la sortie est redirigée est créé s'il n'​existait pas auparavant, sinon il est écrasé.
  
-Pour conserver le fichier original, vous pouvez utiliser ">>"​ qui n'​écrasera pas le contenu du fichier s'il existe déjà. Par exemple :+Pour conserver le fichier original, vous pouvez utiliser ​%%">>"​%% qui n'​écrasera pas le contenu du fichier s'il existe déjà. Par exemple :
  
 <​code>​ls >> test</​code>​ <​code>​ls >> test</​code>​
  
-Si test n'​existe pas il sera créé, si il existe le résultat sera ajouté à son contenu (à la fin du fichier). De la même manière, vous pouvez rediriger stderr : +Si test n'​existe pas il sera créé, si il existe le résultat sera ajouté à son contenu (à la fin du fichier). De la même manière, vous pouvez rediriger stderr :
  
 <​code>​lfdfdfj 2>> test</​code>​ <​code>​lfdfdfj 2>> test</​code>​
  
-Mais il est également possible de rediriger une sortie vers une autre sortie, par exemple "​2>&​1"​ signifie "​rediriger stderr vers ce que représente stdout"​. Ainsi +Mais il est également possible de rediriger une sortie vers une autre sortie, par exemple "​2>&​1"​ signifie "​rediriger stderr vers ce que représente stdout"​. Ainsi
  
 <​code>​ls > test 2>&​1</​code>​ <​code>​ls > test 2>&​1</​code>​
Ligne 79: Ligne 72:
 ==== Entrées ==== ==== Entrées ====
  
-Pour rediriger vers l'​entrée standard stdin, nous allons utiliser "<"​ et "<<"​. ​+Pour rediriger vers l'​entrée standard stdin, nous allons utiliser "<"​ et %%"<<"​%%.
  
 "​wc"​ permet de compter le nombre de lignes (option -l) ou de mots (option -w), plus d'​informations dans la page man de wc, en entrée. Pour compter le nombre de lignes d'un fichier on peut donc utiliser : "​wc"​ permet de compter le nombre de lignes (option -l) ou de mots (option -w), plus d'​informations dans la page man de wc, en entrée. Pour compter le nombre de lignes d'un fichier on peut donc utiliser :
Ligne 89: Ligne 82:
 <​code>​wc -l fichier</​code>​ <​code>​wc -l fichier</​code>​
  
-"<<"​ permet lui aussi de rediriger stdin mais jusqu'​à une chaîne de caractère que l'on précisera : littéralement on pourrait dire que << transmet notre entrée standard (clavier) au programme à sa gauche, et cela jusqu'​à ce qu'il rencontre une ligne EOF ((End of File : Fin de fichier)).+%%"<<"​%% permet lui aussi de rediriger stdin mais jusqu'​à une chaîne de caractère que l'on précisera : littéralement on pourrait dire que %%<<%% transmet notre entrée standard (clavier) au programme à sa gauche, et cela jusqu'​à ce qu'il rencontre une ligne EOF ((End of File : Fin de fichier)).
  
 Par exemple la commande suivante vous permettra de taper un texte, d'​aller à la ligne autant de fois que vous voulez en appuyant sur Entrée, puis lorsque vous taperez EOF (pour End of File, fin du fichier) et entrée, elle comptera le nombre de lignes (celle de EOF non comprise) que vous avez entrées. Par exemple la commande suivante vous permettra de taper un texte, d'​aller à la ligne autant de fois que vous voulez en appuyant sur Entrée, puis lorsque vous taperez EOF (pour End of File, fin du fichier) et entrée, elle comptera le nombre de lignes (celle de EOF non comprise) que vous avez entrées.
Ligne 97: Ligne 90:
 Vous pouvez bien sur spécifier un chaîne différente de EOF comme FIN, END... Vous pouvez bien sur spécifier un chaîne différente de EOF comme FIN, END...
  
-En utilisant ">>"​ et "<<"​ nous pouvons facilement ajouter du texte dans un fichier de notre choix de la même manière qu'un éditeur de texte : +En utilisant ​%%">>"​%% et %%"<<"​%% nous pouvons facilement ajouter du texte dans un fichier de notre choix de la même manière qu'un éditeur de texte :
  
 <​code>​cat >> fichier << EOF</​code>​ <​code>​cat >> fichier << EOF</​code>​
Ligne 112: Ligne 105:
  
 - stderr vers stdout ... donc vers /dev/null - stderr vers stdout ... donc vers /dev/null
- 
  
 La commande exécutée ne renverra ni sa sortie, ni ses messages d'​erreur. La commande exécutée ne renverra ni sa sortie, ni ses messages d'​erreur.
 C'est équivalent à : <​code>​commande > /dev/null 2 > /​dev/​null</​code>​ C'est équivalent à : <​code>​commande > /dev/null 2 > /​dev/​null</​code>​
- 
  
 {{icons:​iconnote.png ​ }} {{icons:​iconnote.png ​ }}
Ligne 135: Ligne 126:
 Pour présenter l'​outil **cut** nous allons par exemple considérer que nous voulons obtenir le premier mot (correspondant au nom de l'​utilisateur) du fichier /​etc/​passwd. Pour présenter l'​outil **cut** nous allons par exemple considérer que nous voulons obtenir le premier mot (correspondant au nom de l'​utilisateur) du fichier /​etc/​passwd.
  
-Avec cut, vous pouvez supprimer une partie de chaque ligne d'un fichier, soit en indiquant un séparateur (avec l'​option -d), soit en indiquant la position (via -c). +Avec cut, vous pouvez supprimer une partie de chaque ligne d'un fichier, soit en indiquant un séparateur (avec l'​option -d), soit en indiquant la position (via -c).
  
-Voyons tout de suite un exemple : +Voyons tout de suite un exemple :
  
 <​code>​cut -d: -f1 /​etc/​passwd</​code>​ <​code>​cut -d: -f1 /​etc/​passwd</​code>​
  
-L'​option "​-d:"​ indique que le **séparateur** sera ":",​ et "​-f1"​ indique que l'on veut récupérer seulement la **première partie**. ​+L'​option "​-d:"​ indique que le **séparateur** sera ":",​ et "​-f1"​ indique que l'on veut récupérer seulement la **première partie**.
  
 {{:​icons:​icontip.png ​ }} {{:​icons:​icontip.png ​ }}
Ligne 150: Ligne 141:
 <​code>​cut -d" " -f1,5 un_fichier</​code>​ <​code>​cut -d" " -f1,5 un_fichier</​code>​
  
-Maintenant si l'on travaille en fonction de la position : +Maintenant si l'on travaille en fonction de la position :
  
 <​code>​cut -c 1-10 /​etc/​passwd</​code>​ <​code>​cut -c 1-10 /​etc/​passwd</​code>​
Ligne 168: Ligne 159:
 <​code>​tail -n 5 /​var/​log/​Xorg.0.log</​code>​ <​code>​tail -n 5 /​var/​log/​Xorg.0.log</​code>​
  
-Pour récupérer le résultat d'une commande, nous allons utiliser l'​opérateur | appelé **pipe** (qui signifie tuyau...), son fonctionnement sera expliqué plus bas. Pour récupérer les 5 dernières du résultat ​de dmesg :+Pour récupérer le résultat d'une commande, nous allons utiliser l'​opérateur | appelé **pipe** (qui signifie tuyau...), son fonctionnement sera expliqué plus bas. Pour récupérer les 5 dernières du résultat ​dedmesg ​:
  
 <​code>​dmesg | tail -n 5</​code>​ <​code>​dmesg | tail -n 5</​code>​
  
-L'​option -f permet d'​afficher,​ à chaque fois qu'ils ont lieu, les ajouts au fichier, par exemple : +L'​option -f permet d'​afficher,​ à chaque fois qu'ils ont lieu, les ajouts au fichier, par exemple :
  
 <​code>​tail -f /​var/​log/​syslog</​code>​ <​code>​tail -f /​var/​log/​syslog</​code>​
Ligne 182: Ligne 173:
 ==== Présentation de "​|"​ ==== ==== Présentation de "​|"​ ====
  
-Cet opérateur permet d'​envoyer la **sortie standard** d'un programme **vers** **l'​entrée standard** d'un second programme, cela permet ainsi l'​enchaînement des commandes. Par exemple : +Cet opérateur permet d'​envoyer la **sortie standard** d'un programme **vers** **l'​entrée standard** d'un second programme, cela permet ainsi l'​enchaînement des commandes. Par exemple :
  
 <​code>​ls | wc -l</​code>​ <​code>​ls | wc -l</​code>​
Ligne 188: Ligne 179:
 La sortie standard de "​ls"​ devient l'​entrée standard de "wc -l". La sortie standard de "​ls"​ devient l'​entrée standard de "wc -l".
  
-Autres exemples : +Autres exemples :
  
 <​code>​cat fichier | wc -l</​code>​ <​code>​cat fichier | wc -l</​code>​
Ligne 195: Ligne 186:
  
 {{:​icons:​icontip.png ​ }} {{:​icons:​icontip.png ​ }}
->sort permet de trier les lignes d'un fichier texte, pour plus d'​information "man sort"​. ​+>sort permet de trier les lignes d'un fichier texte, pour plus d'​information "man sort".
  
-Vous pouvez bien sûr étendre cela à plus de deux programmes : +Vous pouvez bien sûr étendre cela à plus de deux programmes :
  
 <​code>​cat fichier | wc -l | wc -L</​code>​ <​code>​cat fichier | wc -l | wc -L</​code>​
  
-Vous pouvez aussi utiliser les redirections vues précédemment : +Vous pouvez aussi utiliser les redirections vues précédemment :
  
 <​code>​ls -la > fichier | wc -l</​code>​ <​code>​ls -la > fichier | wc -l</​code>​
  
-Dans le cas de "ls -la > fichier"​ nous pouvons remarquer qu'il n'y a rien sur stdout ou stderr. Pour pallier à cela le programme tee permet de copier l'​entrée standard sur la sortie standard et dans un fichier : "ls -la | tee fichier"​. ​+Dans le cas de "ls -la > fichier"​ nous pouvons remarquer qu'il n'y a rien sur stdout ou stderr. Pour pallier à cela le programme tee permet de copier l'​entrée standard sur la sortie standard et dans un fichier : "ls -la | tee fichier"​.
  
 Ainsi on utilisera : Ainsi on utilisera :
Ligne 223: Ligne 214:
 ==== Présentation de "&&"​ ==== ==== Présentation de "&&"​ ====
  
-Pour pouvoir bien comprendre ce que fait cet opérateur il faut d'​abord parler rapidement des **codes de retour** : quand vous lancez une commande, si elle se termine correctement alors le code de retour est "​0",​ ce qui correspond à un succès, dans le cas contraire le code de retour est différent de 0 (bien entendu les codes de retour différents de 0 ont une signification qui ne sera pas expliquée ici). +Pour pouvoir bien comprendre ce que fait cet opérateur il faut d'​abord parler rapidement des **codes de retour** : quand vous lancez une commande, si elle se termine correctement alors le code de retour est "​0",​ ce qui correspond à un succès, dans le cas contraire le code de retour est différent de 0 (bien entendu les codes de retour différents de 0 ont une signification qui ne sera pas expliquée ici).
  
-Si par exemple vous rentrez une commande erronée, le code de retour sera différent de 0 : "​fgsfdg"​. ​+Si par exemple vous rentrez une commande erronée, le code de retour sera différent de 0 : "​fgsfdg"​.
  
-Pour voir le code de retour de la dernière commande lancée : +Pour voir le code de retour de la dernière commande lancée :
  
 <​code>​echo $?</​code>​ <​code>​echo $?</​code>​
  
-L'​opérateur "&&"​ permet de lancer une commande si et seulement si la première (celle à gauche de l'​opérateur) s'est correctement terminée : +L'​opérateur "&&"​ permet de lancer une commande si et seulement si la première (celle à gauche de l'​opérateur) s'est correctement terminée :
  
 <​code>​ls && ls /</​code>​ <​code>​ls && ls /</​code>​
  
-Si la commande "​ls"​ se termine correctement alors "ls /" sera exécutée. Un second exemple : +Si la commande "​ls"​ se termine correctement alors "ls /" sera exécutée. Un second exemple :
  
 <​code>​fdgfdsg && ls</​code>​ <​code>​fdgfdsg && ls</​code>​
Ligne 241: Ligne 232:
 ==== Présentation de "​||"​ ==== ==== Présentation de "​||"​ ====
  
-C'est simplement l'​inverse de "&&"​. La commande à gauche ​de l'​opérateur est exécutée seulement si le code de retour de la première commande est différent de 0 (donc s'il y a eu une erreur) :+C'est simplement l'​inverse de "&&"​. La commande à droite ​de l'​opérateur est exécutée seulement si le code de retour de la première commande est différent de 0 (donc s'il y a eu une erreur) :
  
 <​code>​fhgfdsjk || ls</​code>​ <​code>​fhgfdsjk || ls</​code>​
Ligne 276: Ligne 267:
 L'​opérateur **^** indique le **début d'une ligne**. L'​opérateur **^** indique le **début d'une ligne**.
  
-On cherche maintenant les mots de 4 caractères commençant et finissant par un t, pour cela on utilise l'​opérateur "​**.**"​ qui remplace n'​importe quel caractère, il est parfois appelé **wildcard** : +On cherche maintenant les mots de 4 caractères commençant et finissant par un t, pour cela on utilise l'​opérateur "​**.**"​ qui remplace n'​importe quel caractère, il est parfois appelé **wildcard** :
  
 <​code>​grep '​^t..t$'​ /​tmp/​french.utf8</​code>​ <​code>​grep '​^t..t$'​ /​tmp/​french.utf8</​code>​
  
-Pour avoir exactement la ligne contenant "​coucou",​ qui doit donc commencer et finir par coucou : +Pour avoir exactement la ligne contenant "​coucou",​ qui doit donc commencer et finir par coucou :
  
 <​code>​grep '​^coucou$'​ /​tmp/​french.utf8</​code>​ <​code>​grep '​^coucou$'​ /​tmp/​french.utf8</​code>​
Ligne 287: Ligne 278:
  
   * * représente **0 ou plus** caractères. Exemple : d* = 0 ou plus fois "​d"​.   * * représente **0 ou plus** caractères. Exemple : d* = 0 ou plus fois "​d"​.
-  * + représente **1 ou plus** caractères. ​ +  * + représente **1 ou plus** caractères.
   * ? représente **0 ou 1** caractère.   * ? représente **0 ou 1** caractère.
  
-Par exemple si l'on cherche les mots commençant par "​t"​ et finissant par "​tant"​ : +Par exemple si l'on cherche les mots commençant par "​t"​ et finissant par "​tant"​ :
  
 <​code>​grep '​^t.*tant$'​ /​tmp/​french.utf8</​code>​ <​code>​grep '​^t.*tant$'​ /​tmp/​french.utf8</​code>​
Ligne 296: Ligne 287:
 "​^t"​ nous donne les mots commençant par "​t",​ "​tant$"​ prends ceux finissant par "​tant"​ et au milieu on veut 0 ou plus fois n'​importe quel caractère, donc le "​."​. "​^t"​ nous donne les mots commençant par "​t",​ "​tant$"​ prends ceux finissant par "​tant"​ et au milieu on veut 0 ou plus fois n'​importe quel caractère, donc le "​."​.
  
-On veut maintenant chercher les mots contenant "​m"​ ou "​mm",​ pour cela on va utiliser une expression régulière étendue, il faudra donc utiliser l'​option "​-E"​ de grep : +On veut maintenant chercher les mots contenant "​m"​ ou "​mm",​ pour cela on va utiliser une expression régulière étendue, il faudra donc utiliser l'​option "​-E"​ de grep :
  
 <​code>​grep -E '​m{1,​2}'​ /​tmp/​french.utf8</​code>​ <​code>​grep -E '​m{1,​2}'​ /​tmp/​french.utf8</​code>​
Ligne 325: Ligne 316:
 Les parenthèses permettent d'​isoler un regroupement,​ et le | correspond à "​où"​. Ceci renvoie donc les fichiers/​dossiers à la racine commençant par media ou mroot. Les parenthèses permettent d'​isoler un regroupement,​ et le | correspond à "​où"​. Ceci renvoie donc les fichiers/​dossiers à la racine commençant par media ou mroot.
  
-Alors que : +Alors que :
  
 <​code>​ls / | grep -E '​^media|root'</​code>​ <​code>​ls / | grep -E '​^media|root'</​code>​
Ligne 334: Ligne 325:
  
 L'​utilisation de cet outil se fait comme ceci : L'​utilisation de cet outil se fait comme ceci :
 +<​code>​echo "du texte" | sed '​s/​(qui)/​(parquoi)'</​code>​
  
-<​code>​sed -e '​expression'​ [-e '​expression] [fichier]</​code>​  +Ex : Pour remplacer la premiere occurence ​:
- +
-ou +
- +
-<​code>​echo "du texte" | sed '​une_seule_expression'</​code>​ +
- +
-Un premier exemple de substitution ​:+
  
 <​code>​echo "​jean.durand@gmail.com"​ | sed 's/@/ at /' | sed 's/\./ pOiNt /'</​code>​ <​code>​echo "​jean.durand@gmail.com"​ | sed 's/@/ at /' | sed 's/\./ pOiNt /'</​code>​
Ligne 349: Ligne 335:
 <​code>​jean pOiNt durand at gmail.com</​code>​ <​code>​jean pOiNt durand at gmail.com</​code>​
  
-On remplace le "​."​ par " pOiNt " et le "​@"​ par " at ", on voit ici que l'on a mis "​\"​ devant le "​.",​ le "​\"​ est le caractère d'​échappement : le "​."​ est alors considéré comme le caractère "​."​. ​+On remplace le "​."​ par " pOiNt " et le "​@"​ par " at ", on voit ici que l'on a mis "​\"​ devant le "​.",​ le "​\"​ est le caractère d'​échappement : le "​."​ est alors considéré comme le caractère "​."​.
  
 De même si on veut remplacer "/"​ par "​slash",​ on utiliserait De même si on veut remplacer "/"​ par "​slash",​ on utiliserait
Ligne 359: Ligne 345:
 <​code>​echo "​jean.durand@gmail.com"​ | sed -e 's/@/ at /' -e 's/\./ pOiNt /'</​code>​ <​code>​echo "​jean.durand@gmail.com"​ | sed -e 's/@/ at /' -e 's/\./ pOiNt /'</​code>​
  
-On peut aussi utiliser <​code>​s///​g</​code> ​pour remplacer toutes les occurrences d'une chaîne de caractères et non seulement la première : +Pour toute les occurrences ,on peut aussi utiliser ​
 +<​code>​s///​g</​code>​  
 +oû :
 <​code>​echo "​jean.durand@gmail.com"​ | sed -e 's/@/ at /' -e 's/\./ pOiNt /​g'</​code>​ <​code>​echo "​jean.durand@gmail.com"​ | sed -e 's/@/ at /' -e 's/\./ pOiNt /​g'</​code>​
- +qui donnera : 
-Remplace les deux occurrences du "​."​.+<​code>​jean pOINT durand at gmail pOINT com</​code>​
  
 On peut de même l'​appliquer sur des fichiers : On peut de même l'​appliquer sur des fichiers :
Ligne 375: Ligne 362:
 <​code>​echo "​moimoimoi"​ | sed '​s/​moi/​toi/​3'</​code>​ <​code>​echo "​moimoimoi"​ | sed '​s/​moi/​toi/​3'</​code>​
  
-Donne : +Donne :
  
 <​code>​moimoitoi</​code>​ <​code>​moimoitoi</​code>​
Ligne 383: Ligne 370:
 si /g modifie bien toutes les occurrences du fichier si /g modifie bien toutes les occurrences du fichier
 /n ne modifie que la première ligne du fichier /n ne modifie que la première ligne du fichier
-c'est pas clair : un exemple ​ +c'est pas clair : un exemple
  
 le fichier1 contient 3 lignes identiques kikoo le fichier1 contient 3 lignes identiques kikoo
Ligne 394: Ligne 381:
 le fichier1 n'est pas modifié ! le fichier1 n'est pas modifié !
    
-le fichier 2 devient kikoo#​kikookikoo les 2 autres lignes ne sont pas modifiées ​            ​+le fichier 2 devient kikoo#​kikookikoo les 2 autres lignes ne sont pas modifiées
  
 ---------------------------------------------------------- ----------------------------------------------------------
-résultat de  +résultat de 
-sed -i '​s/​kikoo/#​kikoo/​g ​ : les deux fichiers sont modifiés ​ +sed -i '​s/​kikoo/#​kikoo/​g ​ : les deux fichiers sont modifiés
  
-tous les kikoo deviennent #​kikoo ​+tous les kikoo deviennent #kikoo
  
 ---------------------------------------------------------- ----------------------------------------------------------
 </​note>​ </​note>​
  
-Nous allons maintenant voir l'​utilisation de variables avec sed ce qui permet d'​échanger,​ de déplacer des parties d'une chaîne de caractères. Exemple : +Nous allons maintenant voir l'​utilisation de variables avec sed ce qui permet d'​échanger,​ de déplacer des parties d'une chaîne de caractères. Exemple :
  
 <​code>​echo "​jean.durand" ​ | sed -r '​s/​(.*)\.(.*)/​\2.\1/'</​code>​ <​code>​echo "​jean.durand" ​ | sed -r '​s/​(.*)\.(.*)/​\2.\1/'</​code>​
Ligne 413: Ligne 400:
 <​code>​durand.jean</​code>​ <​code>​durand.jean</​code>​
  
-Pour terminer nous allons voir un exemple pratique : nous avons de nombreux dossiers contenant de nombreux mp3 nommés selon le schéma Knoklezout_au_taquet-Jamendo-David_TMX.mp3 et on désire avoir le nom d'​artiste avant le titre de la chanson tout en enlevant la publicité pour Jamendo. ​+Pour terminer nous allons voir un exemple pratique : nous avons de nombreux dossiers contenant de nombreux mp3 nommés selon le schéma Knoklezout_au_taquet-Jamendo-David_TMX.mp3 et on désire avoir le nom d'​artiste avant le titre de la chanson tout en enlevant la publicité pour Jamendo.
  
 Pour cela nous allons utiliser **rename** (qui vient avec perl) et nos chères expressions régulières : Pour cela nous allons utiliser **rename** (qui vient avec perl) et nos chères expressions régulières :
Ligne 438: Ligne 425:
  
 {{icons:​iconnote.png ​ }} {{icons:​iconnote.png ​ }}
->Les expressions régulières sont utilisés en Python, Perl , Ruby, PHP, Java, C, C++, par des programmes comme sed, awk, grep, vim, rename, ou encore des filtres dans apache et lighttpd ( mod_rewrite,​ vhosts ...), adblock dans firefox... Cette liste est bien sûr non exhaustive. ​   +>Les expressions régulières sont utilisés en Python, Perl , Ruby, PHP, Java, C, C++, par des programmes comme sed, awk, grep, vim, rename, ou encore des filtres dans apache et lighttpd ( mod_rewrite,​ vhosts ...), adblock dans firefox... Cette liste est bien sûr non exhaustive.
  
 ----------------- -----------------
  
 Rédigé par : [[:​utilisateurs:​qazer|jeromeg]],​ ptitdav69 et Wazzaaabid Rédigé par : [[:​utilisateurs:​qazer|jeromeg]],​ ptitdav69 et Wazzaaabid
  • projets/ecole/scripting/initiation_au_shell.1523883151.txt.gz
  • Dernière modification: Le 16/04/2018, 14:52
  • par elleji