Your SlideShare is downloading. ×
  • Like
Shell sans les coquilles
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Now you can save presentations on your phone or tablet

Available for both IPhone and Android

Text the download link to your phone

Standard text messaging rates apply

Shell sans les coquilles

  • 216 views
Published

Introduction au shell (Bash) sous linux [débutants→intermédiaires]. …

Introduction au shell (Bash) sous linux [débutants→intermédiaires].
L'objectif est de démystifier le shell, fournir une quelques commandes utiles, et présenter des fonctionnalités et des structures plus avancées (expansion des paramètres, tests, boucles, sous-commandes, etc.)

Présentation réaliser lors de l'install party Giroll.

Published in Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
  • C'est pas pour être méchant, mais première diapo :
    'configurer là', je dirais plutôt 'configurez la' :)
    Are you sure you want to
    Your message goes here
    Be the first to like this
No Downloads

Views

Total Views
216
On SlideShare
0
From Embeds
0
Number of Embeds
1

Actions

Shares
Downloads
12
Comments
1
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Shell Linux sans les coquilles Débutant → intermédiaire Édouard Lopez CC BY-NC-SA
  • 2. C'est quoi ? ● Une interface pourrie qui pète les yeux ? ○ Faux ○ configurez là! ● Un truc de barbu ? ○ Faux ○ Nolwenn (♀), addictif ● Un outil puissant et flexible ? ○ Oui, ○ On va voir ça
  • 3. Outils de base ● le terminal ○ gnome-terminal, ○ konsole, ○ et d'autres ● un éditeur de texte ○ graphique: ■ gedit, ■ kate ○ ligne de commande: ■ vim ■ nano
  • 4. Variations et diversité ● Sous linux vous avez le choix de votre shell : ○ POSIX ○ Shell ○ Bash (aujourd'hui) ○ Zsh ● Les fonctions de base sont similaires ● Attention à la portabilité ! ● Connaître mon shell ?
  • 5. Obtenir de l'aide ● RTFM ● Beaucoup de ressources en anglais ○ wikibooks ○ BashFAQ ● Soyez social ! ○ Twitter ○ IRC: #bash, #zsh
  • 6. RTFM ● Pour les barbus : ○ Depuis la ligne de commande ■ man <commande> man echo ■ <commande> --help echo --help ● Pour les gens normaux : ○ man sur le web ○ Google est ton ami
  • 7. Chemin Unix ● Chemin relatif ○ courant : ./ ○ Parent : ../ ● Chemin Absolue ○ / : racine du système ○ /chemin/vers/dossier/
  • 8. Concepts basiques ● Sensible à la casse : a ≠ A ● « Sans maîtrise, la puissance n'est rien » Pirelli ○ la force du shell c'est la flexibilité des commandes ● Options étendues : ○ ls -l -a -h ● Options condensées : ○ ls -lah
  • 9. Commandes de base 1/2 ● echo : affiche du texte ou une variable ○ echo $SHELL ● pwd : emplacement (print working dir) ● cd : changer de répertoire (change dir) ○ cd ~ # renvoi dans le $HOME ○ cd /tmp/ ○ cd # renvoi dans le $HOME ● ls : lister les fichiers et répertoires (list) ○ ls -lah # fichiers cachés et taille en Ko/Mo
  • 10. Commandes de base 2/2 ● mv : déplacer ou renommer (move) ● touch : modifier la date ou le créer ● mkdir : créer un répertoire (make dir) ● rm : supprimer un fichier (remove) ● cat : ○ concatène des fichiers ○ envoi vers la sortie standard ● head : imprime le début d'un fichier ● tail : imprime la fin d'un fichier ● grep : trouve une expression dans un fichier
  • 11. Chercher des fichiers : globs 1/2 ● Caractères ○ * : tous les caractères, sans limite de longueur ■ ls ./*.csv ○ foo* : commence par foo ○ *foo* : contient la chaine foo ○ *.tar.gz : se termine par .tar.gz ○ foo? : caractère optionnel (foot, foob, et autres) ● Intervalle ○ [abc] : cherche parmi a, b ou c ○ [a-z] : cherche dans l'intervalle a à z
  • 12. Chercher des fichiers : find 1/3 ● Insensible à la casse ○ find ./ -iname "toto" ● Uniquement des dossiers ○ find ./ -type d -name "toto" ● Uniquement des fichiers ○ find ./ -type f -name "toto"
  • 13. Chercher des fichiers : find 2/3 ● Par date ○ -mtime : modification (fichier éditer) ○ -atime : accès (fichier lu) ○ -ctime : change (modification des droits du fichier) ● Fichiers agés de plus de 30 jours ○ find ./ -mtime +30 ● Par taille : fichier de plus de 1Ko ○ find ./ -size +1024c # c = caractères/octets
  • 14. Chercher des fichiers : find 3/3 ● Exécuter un action ○ find ./ -iname "toto" -exec echo {} ; ● Attention à ce que vous faites ! ○ find ./ -name "toto" -exec rn {} ; ● Aller plus loin : ○ http://mywiki.wooledge.org/UsingFind
  • 15. Séquence de commandes ● Séquence de commandes indépendantes ; ○ cmd1 ; cmd2 ○ chainer quelque soit le précédent résultat. ● Execution conditionnelle && ○ cmd1 && cmd2 ○ si cmd1 réussie, éxécute cmd2. ● Execution alternative || ○ cmd1 || cmd2 ○ si cmd1 échoue, éxécute cmd2.
  • 16. Redirection et Tubes ● Redirections de flux ○ ○ ○ ○ cmd > fichier : écrire dans un fichier. cmd < fichier : lire un fichier. cmd 2> fichier : rediriger les erreurs. cmd & : créer un processus. ● Tubes (ou pipe) ○ cmd1 | cmd2 ○ passé la sortie de cmd1 comme entrée de cmd2 ■ wc -l fichier | cut -d' ' -f 1 # récupère le nb lignes ○ évite d'avoir un fichier temporaire.
  • 17. Premier Script ● Créé son fichier ○ gedit ./mon-script.sh ● Indiquer l'interpréteur avec #! (shebang) ○ doit être sur la 1er ligne ! ■ #!/usr/bin/env bash ■ #!/usr/bin/env sh ■ #!/usr/bin/env zsh ● Commentaires, lignes commençant par # ○ # mon commentaire
  • 18. Exécuter un script ● Vérifier la présence de l'interpréteur ○ #!/usr/bin/env bash ● Ajouter les droits d'execution ○ chmod u+x ./mon-script.sh ■ u = user ■ + = ajoute ■ x = execution
  • 19. Conditions ● Si x alors y ○ if [[ condition ]]; then instruction 1; fi ○ [[ condition ]] && instruction ● Si x1 alors y1 Autre Si x2 Alors y2 Sinon y3 ○ if [[ x1 ]]; then y1 elif [[ x2 ]]; then y2 else y3
  • 20. Options de Test ● Existence d'un fichier ○ [[ -e fichier ]] && echo "ok" ● Type de fichier: un dossier ○ [[ -d fichier ]] && echo "ok" ● Type de fichier: un fichier (ni un lien, ni un réperttoire) ○ [[ -f fichier ]] && echo "ok" ● -s (fichier existe et supérieur à 0 octets), -z (chaine zero), -n (non-null), etc.
  • 21. Tests multiples : Switch case "$variable" in "a") cmds;; "b") cmds;; val*) # le test peut être un glob: *.txt, *.jpe?g *) # capture les autres cas instructions;; esac
  • 22. Boucles : répéter du code for i in "$listElements"; # un glob, un tableau do cmds done ● La liste peut être : ○ ○ ○ ○ un intervalle : {1..4} glob : *.csv # éviter $(ls ...) [!] un tableau : $array[@] une sous-commande ⚠ # attention au format ● Il existe une syntaxe similaire au C : ○ for (( i=0 ; i<5 ; i++ )) ; do cmds ; done
  • 23. Guillemets Simple ' ' (apostrophe) ● Chaine litéral : pas d'analyse ○ echo '$var' # affichera: $var ● Caractères spéciaux non-interprétés ○ n, t, etc. ● Échappement de l'apostrophe ○ ' ● Aller plus loin : http://mywiki.wooledge. org/Quotes
  • 24. Guillemets Double " " (1/2) ● Permet certaines analyses ● Variables interprétées ○ echo "$var" # affichera le contenu de $var ● Expansion des paramètres ○ echo "${param/search/replace}" ● Expansion des expressions arithmétiques ○ echo $((3+4)) # inutile ● Substitutions de commande ○ echo "$(seq 3)"
  • 25. Guillemets Double " " (2/2) ● Prévient certains comportements ● l'éclatement par mots ○ list="aa bb cc" for i in "$list"; do echo "$i"; done for i in $list ; do echo "$i"; done # éclatement ● l'expansion des globs ○ ls ./* ls "./*" ⚠ # pas d'expansion du glob ● Enveloppe tout le résultat des substitutions
  • 26. Besoin d'aide ? ● Linux Bash Shell Cheat Sheet ● ● ● ● http://cli.learncodethehardway.org/bash_cheat_sheet. pdf FAQ de salon IRC #BASH http://mywiki.wooledge.org/BashFAQ Questions Bash sur StackOverflow http://stackoverflow.com/questions/tagged/bash The Bash-Hackers Wiki http://wiki.bash-hackers.org/ The Grymoire - home for UNIX wizards http://www.grymoire.com/Unix/