Differences

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

Link to this comparison view

sde2:laboratoare:01 [2021/03/10 07:41]
alexandra.state2607 [7. Shell scripting]
sde2:laboratoare:01 [2021/03/10 16:29] (current)
ioana_maria.culic [4. Créer des fichiers avec des noms compliqués]
Line 522: Line 522:
 </​code>​ </​code>​
 </​note>​ </​note>​
- 
- 
  
  
Line 530: Line 528:
 ** Vous êtes dans le répertoire ''/​home/​student/​sde-repository ''​.** ** Vous êtes dans le répertoire ''/​home/​student/​sde-repository ''​.**
  
-Supprimez le fichier ''​simple_hello.py ''​du répertoire 'tp01/simple_python/'.+Supprimez le fichier ''​simple_hello.py ''​du répertoire 'tp01/simple-python/'.
  
 Notez que j'ai utilisé un chemin relatif vers le répertoire ''/​home/​student''​ . Nous aurions pu l'​utiliser Notez que j'ai utilisé un chemin relatif vers le répertoire ''/​home/​student''​ . Nous aurions pu l'​utiliser
Line 547: Line 545:
 ==== 4. Créer des fichiers avec des noms compliqués ==== ==== 4. Créer des fichiers avec des noms compliqués ====
  
-** Entrez le répertoire sde-repository/​tp01/​filesys ​**+** Entrez le répertoire sde-repository/​tp01/​ **
  
 Utilisez la commande suivante: Utilisez la commande suivante:
Line 553: Line 551:
 mkdir Program Files and Accessories ​ mkdir Program Files and Accessories ​
 </​code> ​ </​code> ​
-Répertorie le contenu du répertoire 'filesys'. Combien de répertoires qu'il contient. Pourquoi Était-ce l'​effet désiré? Afin de créer un répertoire avec des espaces dans son nom, nous avons deux alternatives:​+Répertorie le contenu du répertoire 'tp01'. Combien de répertoires qu'il contient. Pourquoi Était-ce l'​effet désiré? Afin de créer un répertoire avec des espaces dans son nom, nous avons deux alternatives:​
  
 <code bash> <code bash>
Line 567: Line 565:
 Sans entrer dans le répertoire créé, ''​%%"​Program Files and Accessories"​%%'',​ créez 3 fichiers portant le nom ''​%%"​Open Office"​%%'',​ ''​%%"​Mozilla Firefox"​%%''​ și ''​%%"​Incredible long file name that contains a lot of spaces"​%%''​ et deux repertoires ''​%%"​App Data"​%%''​ și ''​%%"​Local Settings"​%%''​ în ''​%%"​Program Files and Accessories"​%%''​. Essayez également d'​utiliser le bouton ''​TAB ''​autant que possible. Sans entrer dans le répertoire créé, ''​%%"​Program Files and Accessories"​%%'',​ créez 3 fichiers portant le nom ''​%%"​Open Office"​%%'',​ ''​%%"​Mozilla Firefox"​%%''​ și ''​%%"​Incredible long file name that contains a lot of spaces"​%%''​ et deux repertoires ''​%%"​App Data"​%%''​ și ''​%%"​Local Settings"​%%''​ în ''​%%"​Program Files and Accessories"​%%''​. Essayez également d'​utiliser le bouton ''​TAB ''​autant que possible.
  
-Copiez les deux premiers fichiers créés précédemment dans le répertoire ''​simple_python/ ''​.+Copiez les deux premiers fichiers créés précédemment dans le répertoire ''​simple-python/ ''​.
  
 Ecrivez un texte aléatoire dans %% "Nom de fichier long et incroyable contenant de nombreux espaces"​ %% à l'aide de la commande "​echo"​ ou "​vim"​. Ecrivez un texte aléatoire dans %% "Nom de fichier long et incroyable contenant de nombreux espaces"​ %% à l'aide de la commande "​echo"​ ou "​vim"​.
Line 579: Line 577:
 <​note>​ Une solution rapide peut être la suivante. "Alt +." Est un moyen d'​itérer avec les derniers paramètres des commandes plus tôt). Nous tapons ensuite 'Alt + b' pour revenir en arrière puis, en utilisant Alt + Backspace, nous supprimons les 3 mots dont nous n’avons plus besoin. Enfin, le texte %% "moins \" %% est uniquement ajouté. <​note>​ Une solution rapide peut être la suivante. "Alt +." Est un moyen d'​itérer avec les derniers paramètres des commandes plus tôt). Nous tapons ensuite 'Alt + b' pour revenir en arrière puis, en utilisant Alt + Backspace, nous supprimons les 3 mots dont nous n’avons plus besoin. Enfin, le texte %% "moins \" %% est uniquement ajouté.
 </​note>​ </​note>​
- 
-Copiez l'​intégralité du répertoire '​filesys'​ dans ''/​home/​student ''​. Pourquoi la commande ci-dessous ne fonctionne-t-elle pas? 
- 
-<code bash> 
-student@sde:​$ pwd 
-/​home/​student/​sde-repository/​tp01/​filesys 
-student@uso:​$ cp . /​home/​student 
-</​code>​ 
- 
-Nous avons besoin de ''​récursif ''​(comme ''​rm ''​). Regardez dans la page de manuel de ''​cp ''​('​man cp' ') après'​ récursif '. 
- 
-Entrez le dossier parent de ''​filesys ''​. Déplacez ''​to_move ''​vers ''/​tmp ''​. Notez que pour ''​mv '',​ nous n'​avons pas besoin du paramètre ''​-r ''​(pour la récursivité). 
- 
-Vérifiez que votre commande est exécutée avec succès à l’aide d’une commande ''​ls ''​. 
  
  
Line 666: Line 650:
 </​code>​ </​code>​
 Le mode d'​utilisation:​ ''​%%grep PATTERN path/​vers/​fichier%%''​. Le mode d'​utilisation:​ ''​%%grep PATTERN path/​vers/​fichier%%''​.
- 
- 
- 
  
  
 ===== 6. L'​utilitaire cut ===== ===== 6. L'​utilitaire cut =====
-nous nous souvenons de fichier ''/​etc/​passwd'' ​conține informații despre toți utilizatorii din sistem+Nous nous souvenons de fichier ''/​etc/​passwd'' ​qui contient des informations sur tous les utilisateurs du système ​
  
 <code bash> <code bash>
Line 737: Line 718:
 </​code>​ </​code>​
  
-Pe lângă aceste variabilescriptul poate primi o serie de argumente din linia de comandăFolosind următoarele variabileputem referi argumentele primite de script ​din linia de comandă+En plus de ces variablesle script peut recevoir un certain nombre d'​arguments ​de la ligne de commandeEn utilisant les variables suivantesnous pouvons nous référer aux arguments reçus par le script ​depuis la ligne de commande
  
-   * ''​$*'' ​este un string (''​$1,​ $2 ... $n''​) ​format din toate argumentele primite ​de script  +   * ''​$*'' ​est un string (''​$1,​ $2 ... $n''​) ​composé ​de tous les arguments reçus par le script  
-   * ''​$@'' ​este o listă formată din argumentele scriptului ​ +   * ''​$@'' ​est une liste d'​arguments de script ​ 
-   * ''​$1,​ $2 ... $n'' ​reprezintă fiecare parametru din script  +   * ''​$1,​ $2 ... $n'' ​représente chaque paramètre du script  
-   * ''​$0'' ​este numele scriptului ​ +   * ''​$0'' ​est le nom du script ​ 
-   * ''​$#'' ​este numărul ​de argumente primite din linia de comandă ​+   * ''​$#'' ​est le nombre d'​arguments reçus ​de la ligne de commande  ​
  
-Spre exemplusă luăm următorul ​script ''​arguments.sh'':​+Par exempleprenons le script ​suivant ​''​arguments.sh'':​
 <code bash> <code bash>
 #!/bin/bash #!/bin/bash
Line 756: Line 737:
 </​code>​ </​code>​
  
-Să apelăm scriptul cu argumente+Appelons le script avec arguments
 <code bash> <code bash>
 student@uso:​~$ bash arguments.sh banane cirese caise castraveti student@uso:​~$ bash arguments.sh banane cirese caise castraveti
Line 767: Line 748:
  
  
-=====8. ​Execuția comenzilor ​=====+=====8. ​Exécution des commandes ​=====
  
-==== Încheierea execuției unei comenzi ​====+==== Le fin de l'​exécution d'une commande ​====
  
-Atunci când rulăm o comandă aceasta își poate încheia execuția în două moduricu **succes** sau cu **eșec**. Atunci când își încheie execuțiaorice proces întoarce ​un cod de eroarecare este un număr:+Lorsque nous exécutons une commande, elle peut terminer son exécution de deux manièresavec ** succès ​** ou avec ** échec ​**. Quand il fini son executiontout les processus vont retourne ​un code d'​erreurqui va etre un numero:
  
-  * Dacă numărul întors are valoarea ​''​%%0%%'', ​procesul și-încheiat execuția cu succes. +  * Si le numero a la veleur ​''​%%0%%'', ​le proccesus ​fini l'​execution avec succes. 
-  * Dacă numărul întors are orice altă valoare, procesul și-încheiat execuția cu eroareiar codul întors poate fi folosit pentru ​afla mai multe informații despre eroarea pe care a întors-o procesulÎn pagina ​''​%%man%%'' ​a utilitarului ​''​%%ls%%'' ​este specificat:<code bash>+  * Si le numéro renvoyé ​une autre valeurle processus ​terminé son exécution par erreur et le code renvoyé peut être utilisé pour en savoir plus en ce qui concerne l'​erreur renvoyée par le processusDans la page ''​ %% man %% '' ​de l'​utilitaire ​''​ %% ls %% '' ​est spécifiée:<code bash>
 Exit status: Exit status:
        ​0 ​     if OK,        ​0 ​     if OK,
Line 783: Line 764:
 </​code>​ </​code>​
  
-Pentru ​vedea codul cu care și-a încheiat execuția o comandă folosim sintaxa ​''​%%$?​%%''​. ​Urmărim exemplul de mai jos:+Pour voir le code avec lequel une commande ​terminé son exécution, nous utilisons la syntaxe ​''​%%$?​%%''​. ​Voir l'​exemple ci-dessus:
  
 <code bash> <code bash>
Line 795: Line 776:
 2 2
 </​code>​ </​code>​
-Observăm că în cazul fișierului inexistetcomanda ​''​%%ls non-existent%%''​ a întors valoarea ​''​%%2%%'', ​așa cum era specificat și în pagina ​de manual.+On observe que dans le cas quand le fichier est inexistentla commande ​''​%%ls non-existent%%''​ a retourne la valeur ​''​%%2%%'', ​comme est spécifié dans la page de manuel.
  
-=== Înlănțuirea comenzilor în funcție ​de succes sau eșec ===+=== Chaînage des commandes en fonction du succès ou de l'​échec ​===
  
-De multe ori vrem să executăm o succesiune ​de comenzi pentru a realiza o sarcinăDe exempluatunci când vrem să instalăm o aplicație o rulăm trei comenzi:+Plusieurs fois, nous voulons exécuter une séquence ​de commandes pour accomplir une tâchePar exemple, lorsque nous voulons installer une applicationnous l'​exécutons trois commandes:
  
-  * O să actualizăm indexul surselor de pachete folosind ​''​%%apt update%%''​ +  * Nous mettrons à jour l'​index source du package en utilisant ​''​%%apt update%%''​ 
-  * O să instalăm pachetul care conține aplicația folosind ​''​%%apt install%%''​ +  * Nous installerons le package contenant l'​application en utilisant ​''​%%apt install%%''​ 
-  * O să rulăm aplicația pentru ​valida că instalarea a fost cu succes. +  * Nous exécuterons l'​application pour valider que l'​installation ​réussi.
- +
-Preferăm să înlănțuim cele trei comenzi într-una singură pentru că astfel putem să pornim tot acest proces, să plecăm de la calculator, iar când ne întoarcem avem tot sistemul pregătit.+
  
 +Nous préférons enchaîner les trois commandes en une seule parce que de cette façon, nous pouvons démarrer tout ce processus, quitter l'​ordinateur,​ et lorsque nous revenons, nous avons tout le système prêt.
 Pentru a înlănțui comenzi în terminalul bash avem trei operatori disponibili:​ Pentru a înlănțui comenzi în terminalul bash avem trei operatori disponibili:​
  
-Operatorul ​''​%%;​%%''​ - este folosit pentru separarea comenzilor Urmăm exemplul de mai jos:+L'​operateur ​''​%%;​%%''​ - est utilise pour separer les commandes. On va suive l'​exemple ci-dessous:
 <code bash> <code bash>
 student@uso:​~$ mkdir demo; cd demo; touch Hello; ls student@uso:​~$ mkdir demo; cd demo; touch Hello; ls
Line 815: Line 795:
 </​code>​ </​code>​
  
-În exemplul de mai sus am creat directorul ​''​%%demo%%'', ​am navigat în interiorul săuam creat fișierul ​''​%%Hello%%'' ​și am afișat conținutul directoruluiAm făcut toate acestea înlănțuind comenzile ​''​%%mkdir%%'',​ ''​%%cd%%'',​ ''​%%touch%%'' ​și ''​%%ls%%'' ​cu ajutorul operatorului ​''​%%;​%%''​.+Dans l'​exemple ci-dessus, on a créé le répertoire ​''​ %% demo %% '', ​navigué à l'​intérieurcréé le fichier ​''​ %% Hello %% '' ​et affiché le contenu du répertoireOn a fait tout cela en concaténant les commandes ​''​ %% mkdir %% '',​ ''​ %% cd %% '',​ ''​ %% touch %% '' ​et ''​ %% ls %% '' ​à l'aide de l'​opérateur ​''​ %%; %% ''​.
  
-Operatorul ​''​%%;​%%'' ​este folosit pentru separarea comenzilordar nu ține cont dacă comenzile anterioare au fost executate cu succes sau nuUrmăm exemplul de mai jos:+L'​opérateur ​''​ %%; %% '' ​est utilisé pour séparer les commandesmais ne prend pas en compte si les commandes précédentes ont été exécutées avec succès ou nonOn va suive l'​exemple ci-dessous:
 <code bash> <code bash>
 student@uso:​~$ mkdir operators/​demo;​ cd operators/​demo student@uso:​~$ mkdir operators/​demo;​ cd operators/​demo
Line 824: Line 804:
 </​code>​ </​code>​
  
-În exemplul de mai suscomanda ​''​%%mkdir%%''​ a eșuat deoarece nu găsit directorul ​''​%%operators%%'' ​în care să creeze directorul ​''​%%demo%%''​. ​Cu toate acesteaoperatorul ​''​%%;​%%'' ​doar separă comenzile între eleașa că și comanda ​''​%%cd operators/​demo%%''​ a fost executată, și și aceasta ​eșuat deoarece nu există calea ''​%%operators/demo%%''​.+Dans l'​exemple ci-dessusla commande ​''​ %%mkdir%% ''​ a échoué car elle n'pas pu trouver le répertoire ​''​ %%operators%% '' ​pour créer le répertoire ​''​ %% demo %% ''​. ​Cependantl'​opérateur ​''​ %%; %% '' ​sépare uniquement les commandes les unes des autresdonc la commande ​''​ %%cd operators/​demo %% ''​ a également été exécutée et échoué car il n'y a pas de chemin ​''​ %% opérateurs/démo %% ''​.
  
-Folosim operatorul ​''​%%;​%%'' ​pentru a înlănțui comenzi care sunt independente unele de alteleși deci execuția lor nu depinde de succesul unei comenzi precedente.+On va utilise l'​operateur ​''​%%;​%%'' ​pour enchaîner des commandes indépendantes les unes des autresafin que leur exécution ne dépende pas du succès d'une commandeprecedente.
  
-Operatorul binar ''​%%&&​%%''​ (și logic) - execută ​doua comandă doar dacă precedenta s-a executat cu succesExemplul anterior devine:+L'​operateur binnaire ​''​%%&&​%%''​ (et logiq) - exécute la deuxième commande uniquement si la précédente ​été exécutée avec succèsL'​exemple précédent devient:
 <code bash> <code bash>
 student@uso:​~$ mkdir operators/​demo && cd operators/​demo student@uso:​~$ mkdir operators/​demo && cd operators/​demo
Line 834: Line 814:
 </​code>​ </​code>​
  
-Observăm că din moment ce comanda ​''​%%mkdir%%'' ​a eșuatcomanda ​''​%%cd%%'' ​nu mai fost executată.+Nous remarquons que depuis l'​échec de la commande ​''​ %% mkdir %% '', ​la commande ​''​ %% cd %% '' ​n'pas été exécutée.
  
-Operatorul binar ''​%%||%%''​ (sau logic) - execută ​doua comandă doar dacă prima s-a terminat cu eșecUrmărim exemplul de mai jos:+L'​operateur ​''​%%||%%''​ (ou logique) - exécute la deuxième commande uniquement si la première ​échouéOn va suive l'​exemple ci-dessous:
 <code bash> <code bash>
 student@uso:​~$ (ls -d operators || mkdir operators) && ls -d operators student@uso:​~$ (ls -d operators || mkdir operators) && ls -d operators
Line 845: Line 825:
 operators operators
 </​code>​ </​code>​
-În exemplul de mai sus, prima comandă ''​%%ls%%''​ a eșuat, așa că a fost executată comanda ''​%%mkdir%%''​ și apoi a fost executată ultima comandă ''​%%ls%%''​. La cea de-a doua rulare, a fost executată cu succes prima comandă ''​%%ls%%'',​ așa că comanda ''​%%mkdir%%''​ nu a mai fost executată, și apoi a fost executată ultima comandă ''​%%ls%%''​. 
  
-Pentru ​rezolva scenariul ​de la care am plecat inițialputem rula:+Dans l'​exemple ci-dessus, la première commande ''​%%ls%%'' ​échoué, donc la commande a été exécutée ''​%%mkdir%%''​ puis la dernière commande a été exécutée ''​%%ls%%''​. Lors de la deuxième exécution, la première commande ''​%%ls%%''​ a été exécutée avec succès, donc la commande ''​%% mkdir%% ''​ n'a plus été exécutée, puis la dernière commande a été exécutée ''​%% ls %%''​. 
 + 
 +Pour résoudre le scénario à partir duquel nous avons commencénous pouvons exécuter:
  
 <code bash> <code bash>
 sudo apt update && sudo apt install -y cowsay && cowsay "​Howdy"​ sudo apt update && sudo apt install -y cowsay && cowsay "​Howdy"​
 </​code>​ </​code>​
-Comanda de mai sus va actualiza indexul pachetelor sursăva instala pachetul ​''​%%cowsay%%'' ​și va rula comanda ​''​%%cowsay%%'' ​pentru a valida instalareaO astfel de înlănțuire ​de comenzi este numită ​**oneliner**.+La commande ci-dessus mettra à jour l'​index du package sourceinstallera le package ​''​ %% cowsay %% '' ​et exécutera la commande ​''​ %% cowsay %% '' ​pour valider l'​installationUne telle chaîne ​de commandes est appelée ​** oneliner **.
  
-=== Exerciții ​===+=== Exercices ​===
  
-  - Scrieți ​un oneliner ​cu ajutorul căruia creați directorul ​''​%%~/​make-folder%%'' ​și apoi copiați conținutul directorului ​~/​sde-repository/​tv-shows/​young-sheldon ​în el+  -  ​Écrivez ​un oneliner ​avec lequel vous créez le répertoire''​%%~/​make-folder%%'' ​puis copiez le contenu du répertoire ​~/​sde-repository/​tv-shows/​young-sheldon ​dedans
-  - Actualizați onelinerul anterior astfel încât după copiere să afiseze mesajul: "​operation done".+  - Mettez à jour l'​ancien oneliner telle que après la copie il doit être affiche le message: "​operation done".
  
sde2/laboratoare/01.1615354906.txt.gz · Last modified: 2021/03/10 07:41 by alexandra.state2607
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0