SlideShare une entreprise Scribd logo
1  sur  26
Télécharger pour lire hors ligne
Shell Linux
sans les coquilles
Débutant → intermédiaire

Édouard Lopez
CC BY-NC-SA
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
Outils de base
● le terminal
○ gnome-terminal,
○ konsole,
○ et d'autres

● un éditeur de texte
○ graphique:
■ gedit,
■ kate
○ ligne de commande:
■ vim
■ nano
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 ?
Obtenir de l'aide
● RTFM
● Beaucoup de ressources en anglais
○ wikibooks
○ BashFAQ

● Soyez social !
○ Twitter
○ IRC: #bash, #zsh
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
Chemin Unix
● Chemin relatif
○ courant : ./
○ Parent : ../

● Chemin Absolue
○ / : racine du système
○ /chemin/vers/dossier/
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
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
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
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
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"
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
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
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.
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.
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
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
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
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.
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
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
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
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)"
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
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/

Contenu connexe

Tendances

Processus pére fils
Processus pére filsProcessus pére fils
Processus pére filsSelman Dridi
 
Formation Linux lpi 101
Formation Linux lpi 101 Formation Linux lpi 101
Formation Linux lpi 101 Kais Baccour
 
les Commandes linux/Unix (giants networks)
les Commandes linux/Unix (giants networks)les Commandes linux/Unix (giants networks)
les Commandes linux/Unix (giants networks)Souhaib El
 
Cours linux complet
Cours linux completCours linux complet
Cours linux completaubin82
 
Présentation Unix/Linux (mise à jour 2016)
Présentation Unix/Linux (mise à jour 2016)Présentation Unix/Linux (mise à jour 2016)
Présentation Unix/Linux (mise à jour 2016)Emmanuel Florac
 
Administration reseau linux
Administration reseau linuxAdministration reseau linux
Administration reseau linuxRiadh Briki
 
Admin linux
Admin linuxAdmin linux
Admin linuxbekhti
 
Configuration dns sous linux
Configuration  dns sous linuxConfiguration  dns sous linux
Configuration dns sous linuxBalamine Gassama
 
Notes de cours et tp - Administation Systèmes
Notes de cours et tp  - Administation Systèmes Notes de cours et tp  - Administation Systèmes
Notes de cours et tp - Administation Systèmes Ikram Benabdelouahab
 
07 01 configuration élémentaire d'un dns
07 01 configuration élémentaire d'un dns07 01 configuration élémentaire d'un dns
07 01 configuration élémentaire d'un dnsNoël
 
Cmd dos sous windows
Cmd dos sous windowsCmd dos sous windows
Cmd dos sous windowsSelman Dridi
 
system de gestion Nfs (Network File System)
system de gestion Nfs (Network File System)system de gestion Nfs (Network File System)
system de gestion Nfs (Network File System)ninanoursan
 

Tendances (20)

Initiation Linux
Initiation LinuxInitiation Linux
Initiation Linux
 
Tp n 3 linux
Tp n 3 linuxTp n 3 linux
Tp n 3 linux
 
Linux commandes
Linux commandesLinux commandes
Linux commandes
 
Processus pére fils
Processus pére filsProcessus pére fils
Processus pére fils
 
Tp n 5 linux
Tp n 5 linuxTp n 5 linux
Tp n 5 linux
 
Formation Linux lpi 101
Formation Linux lpi 101 Formation Linux lpi 101
Formation Linux lpi 101
 
les Commandes linux/Unix (giants networks)
les Commandes linux/Unix (giants networks)les Commandes linux/Unix (giants networks)
les Commandes linux/Unix (giants networks)
 
s de base
s de bases de base
s de base
 
Cours linux complet
Cours linux completCours linux complet
Cours linux complet
 
Guide complet linux
Guide complet linuxGuide complet linux
Guide complet linux
 
Présentation Unix/Linux (mise à jour 2016)
Présentation Unix/Linux (mise à jour 2016)Présentation Unix/Linux (mise à jour 2016)
Présentation Unix/Linux (mise à jour 2016)
 
Administration reseau linux
Administration reseau linuxAdministration reseau linux
Administration reseau linux
 
Tp n 4 linux
Tp n 4 linuxTp n 4 linux
Tp n 4 linux
 
Admin linux
Admin linuxAdmin linux
Admin linux
 
Configuration dns sous linux
Configuration  dns sous linuxConfiguration  dns sous linux
Configuration dns sous linux
 
Notes de cours et tp - Administation Systèmes
Notes de cours et tp  - Administation Systèmes Notes de cours et tp  - Administation Systèmes
Notes de cours et tp - Administation Systèmes
 
07 01 configuration élémentaire d'un dns
07 01 configuration élémentaire d'un dns07 01 configuration élémentaire d'un dns
07 01 configuration élémentaire d'un dns
 
Cmd dos sous windows
Cmd dos sous windowsCmd dos sous windows
Cmd dos sous windows
 
system de gestion Nfs (Network File System)
system de gestion Nfs (Network File System)system de gestion Nfs (Network File System)
system de gestion Nfs (Network File System)
 
Linux Administrateur
Linux AdministrateurLinux Administrateur
Linux Administrateur
 

En vedette

La stratégie media de Total
La stratégie media de TotalLa stratégie media de Total
La stratégie media de TotalFTI Consulting FR
 
Réduisez vos Coûts d'Administration et les Risques d'erreurs avec Windows Pow...
Réduisez vos Coûts d'Administration et les Risques d'erreurs avec Windows Pow...Réduisez vos Coûts d'Administration et les Risques d'erreurs avec Windows Pow...
Réduisez vos Coûts d'Administration et les Risques d'erreurs avec Windows Pow...Patrick Guimonet
 
2008-09-30 Administration automatisée avec Powershell
2008-09-30 Administration automatisée avec Powershell2008-09-30 Administration automatisée avec Powershell
2008-09-30 Administration automatisée avec PowershellPatrick Guimonet
 
Réalisation pour Total & SunPower : SunPod® Nomad
Réalisation pour Total & SunPower : SunPod® NomadRéalisation pour Total & SunPower : SunPod® Nomad
Réalisation pour Total & SunPower : SunPod® NomadAdvansolar
 
Power Shell V2 en action - avec Posh Board 2.0
Power Shell V2 en action - avec Posh Board 2.0Power Shell V2 en action - avec Posh Board 2.0
Power Shell V2 en action - avec Posh Board 2.0Patrick Guimonet
 
Administration linux
Administration linuxAdministration linux
Administration linuxLys Lopy
 
Using PowerShell for active directory management
Using PowerShell for active directory managementUsing PowerShell for active directory management
Using PowerShell for active directory managementRavikanth Chaganti
 
F Les Scripts En Power Shell
F Les Scripts En Power ShellF Les Scripts En Power Shell
F Les Scripts En Power ShellUGAIA
 
Groupe Total
Groupe TotalGroupe Total
Groupe Totalstartine
 
Automatisez rapidement vos opérations IT, on-premise ou dans le Cloud avec Az...
Automatisez rapidement vos opérations IT, on-premise ou dans le Cloud avec Az...Automatisez rapidement vos opérations IT, on-premise ou dans le Cloud avec Az...
Automatisez rapidement vos opérations IT, on-premise ou dans le Cloud avec Az...Microsoft Technet France
 
Python Tricks That You Can't Live Without
Python Tricks That You Can't Live WithoutPython Tricks That You Can't Live Without
Python Tricks That You Can't Live WithoutAudrey Roy
 
Ubuntu, la boite à outils du débutant - partie 1> Pourquoi choisir Ubuntu?
Ubuntu, la boite à outils du débutant - partie 1> Pourquoi choisir Ubuntu?Ubuntu, la boite à outils du débutant - partie 1> Pourquoi choisir Ubuntu?
Ubuntu, la boite à outils du débutant - partie 1> Pourquoi choisir Ubuntu?Alexandre Zermati
 
Powershell
PowershellPowershell
PowershellUGAIA
 
Cao COMT manuscript
Cao COMT manuscriptCao COMT manuscript
Cao COMT manuscriptyufeicao
 
Apprendre anglais facilement
Apprendre anglais facilementApprendre anglais facilement
Apprendre anglais facilementdanysg
 

En vedette (20)

La stratégie media de Total
La stratégie media de TotalLa stratégie media de Total
La stratégie media de Total
 
Réduisez vos Coûts d'Administration et les Risques d'erreurs avec Windows Pow...
Réduisez vos Coûts d'Administration et les Risques d'erreurs avec Windows Pow...Réduisez vos Coûts d'Administration et les Risques d'erreurs avec Windows Pow...
Réduisez vos Coûts d'Administration et les Risques d'erreurs avec Windows Pow...
 
2008-09-30 Administration automatisée avec Powershell
2008-09-30 Administration automatisée avec Powershell2008-09-30 Administration automatisée avec Powershell
2008-09-30 Administration automatisée avec Powershell
 
Réalisation pour Total & SunPower : SunPod® Nomad
Réalisation pour Total & SunPower : SunPod® NomadRéalisation pour Total & SunPower : SunPod® Nomad
Réalisation pour Total & SunPower : SunPod® Nomad
 
Powershell et les techniques de remoting
Powershell et les techniques de remoting Powershell et les techniques de remoting
Powershell et les techniques de remoting
 
Power Shell V2 en action - avec Posh Board 2.0
Power Shell V2 en action - avec Posh Board 2.0Power Shell V2 en action - avec Posh Board 2.0
Power Shell V2 en action - avec Posh Board 2.0
 
Administration linux
Administration linuxAdministration linux
Administration linux
 
Using PowerShell for active directory management
Using PowerShell for active directory managementUsing PowerShell for active directory management
Using PowerShell for active directory management
 
F Les Scripts En Power Shell
F Les Scripts En Power ShellF Les Scripts En Power Shell
F Les Scripts En Power Shell
 
Groupe Total
Groupe TotalGroupe Total
Groupe Total
 
Automatisez rapidement vos opérations IT, on-premise ou dans le Cloud avec Az...
Automatisez rapidement vos opérations IT, on-premise ou dans le Cloud avec Az...Automatisez rapidement vos opérations IT, on-premise ou dans le Cloud avec Az...
Automatisez rapidement vos opérations IT, on-premise ou dans le Cloud avec Az...
 
Html ppt
Html pptHtml ppt
Html ppt
 
Total project
Total projectTotal project
Total project
 
Powershell Demo Presentation
Powershell Demo PresentationPowershell Demo Presentation
Powershell Demo Presentation
 
Python Tricks That You Can't Live Without
Python Tricks That You Can't Live WithoutPython Tricks That You Can't Live Without
Python Tricks That You Can't Live Without
 
Ubuntu, la boite à outils du débutant - partie 1> Pourquoi choisir Ubuntu?
Ubuntu, la boite à outils du débutant - partie 1> Pourquoi choisir Ubuntu?Ubuntu, la boite à outils du débutant - partie 1> Pourquoi choisir Ubuntu?
Ubuntu, la boite à outils du débutant - partie 1> Pourquoi choisir Ubuntu?
 
Powershell
PowershellPowershell
Powershell
 
Cao COMT manuscript
Cao COMT manuscriptCao COMT manuscript
Cao COMT manuscript
 
Apprendre anglais facilement
Apprendre anglais facilementApprendre anglais facilement
Apprendre anglais facilement
 
Le langage html
Le langage htmlLe langage html
Le langage html
 

Similaire à Shell sans les coquilles

UNIX_SE4_2023 (1).pdf
UNIX_SE4_2023 (1).pdfUNIX_SE4_2023 (1).pdf
UNIX_SE4_2023 (1).pdfYassineZouin
 
Ligne de commandes sous Linux : effrayant ? Non : indispensable !
Ligne de commandes sous Linux : effrayant ? Non : indispensable !Ligne de commandes sous Linux : effrayant ? Non : indispensable !
Ligne de commandes sous Linux : effrayant ? Non : indispensable !Pascal MARTIN
 
programmation_shell_2022 (1).pptx
programmation_shell_2022 (1).pptxprogrammation_shell_2022 (1).pptx
programmation_shell_2022 (1).pptxManalAg
 
LLVM, clang & c++
LLVM, clang & c++LLVM, clang & c++
LLVM, clang & c++cppfrug
 
[JK] BASH pour les utilisateurs de Windows
[JK] BASH pour les utilisateurs de Windows[JK] BASH pour les utilisateurs de Windows
[JK] BASH pour les utilisateurs de WindowsJoseph Konka
 
cours-gratuit.com--id-3443.pdf
cours-gratuit.com--id-3443.pdfcours-gratuit.com--id-3443.pdf
cours-gratuit.com--id-3443.pdfSouha Bennani
 
de l'art binaire: des PEs explosifs fait main
de l'art binaire: des PEs explosifs fait mainde l'art binaire: des PEs explosifs fait main
de l'art binaire: des PEs explosifs fait mainAnge Albertini
 
0079-cours-linux-base.ppt
0079-cours-linux-base.ppt0079-cours-linux-base.ppt
0079-cours-linux-base.pptAugustoMoundoh1
 
0079-cours-linux-base.ppt
0079-cours-linux-base.ppt0079-cours-linux-base.ppt
0079-cours-linux-base.pptMahdiHERMASSI1
 
Redis - (nosqlfr meetup #2)
Redis - (nosqlfr meetup #2) Redis - (nosqlfr meetup #2)
Redis - (nosqlfr meetup #2) Frank Denis
 
Rapport des Travaux Pratiques UNIX
Rapport des Travaux Pratiques UNIXRapport des Travaux Pratiques UNIX
Rapport des Travaux Pratiques UNIXSoukaina Boujadi
 
EXO_Rguibi_marwan.pptx
EXO_Rguibi_marwan.pptxEXO_Rguibi_marwan.pptx
EXO_Rguibi_marwan.pptxHolakoNoob
 
ATELIER SYSTEME (1) FERCHICHI ABDELWAHEB
ATELIER SYSTEME (1) FERCHICHI ABDELWAHEBATELIER SYSTEME (1) FERCHICHI ABDELWAHEB
ATELIER SYSTEME (1) FERCHICHI ABDELWAHEBFerjani Bassem
 
C2 - Langage C - ISIMA 1 - Deuxieme partie
C2 - Langage C - ISIMA 1 - Deuxieme partieC2 - Langage C - ISIMA 1 - Deuxieme partie
C2 - Langage C - ISIMA 1 - Deuxieme partieLoic Yon
 
Introduction au langage python notion de base
Introduction au langage python notion de baseIntroduction au langage python notion de base
Introduction au langage python notion de basemohamedAitomar1
 

Similaire à Shell sans les coquilles (20)

UNIX_SE4_2023 (1).pdf
UNIX_SE4_2023 (1).pdfUNIX_SE4_2023 (1).pdf
UNIX_SE4_2023 (1).pdf
 
Ligne de commandes sous Linux : effrayant ? Non : indispensable !
Ligne de commandes sous Linux : effrayant ? Non : indispensable !Ligne de commandes sous Linux : effrayant ? Non : indispensable !
Ligne de commandes sous Linux : effrayant ? Non : indispensable !
 
Bash bonnes pratiques
Bash bonnes pratiquesBash bonnes pratiques
Bash bonnes pratiques
 
programmation_shell_2022 (1).pptx
programmation_shell_2022 (1).pptxprogrammation_shell_2022 (1).pptx
programmation_shell_2022 (1).pptx
 
LLVM, clang & c++
LLVM, clang & c++LLVM, clang & c++
LLVM, clang & c++
 
[JK] BASH pour les utilisateurs de Windows
[JK] BASH pour les utilisateurs de Windows[JK] BASH pour les utilisateurs de Windows
[JK] BASH pour les utilisateurs de Windows
 
C1 linux et intro c
C1 linux et intro cC1 linux et intro c
C1 linux et intro c
 
C1 linux et intro c
C1 linux et intro cC1 linux et intro c
C1 linux et intro c
 
Commande dos
Commande dosCommande dos
Commande dos
 
cours-gratuit.com--id-3443.pdf
cours-gratuit.com--id-3443.pdfcours-gratuit.com--id-3443.pdf
cours-gratuit.com--id-3443.pdf
 
de l'art binaire: des PEs explosifs fait main
de l'art binaire: des PEs explosifs fait mainde l'art binaire: des PEs explosifs fait main
de l'art binaire: des PEs explosifs fait main
 
0079-cours-linux-base.ppt
0079-cours-linux-base.ppt0079-cours-linux-base.ppt
0079-cours-linux-base.ppt
 
0079-cours-linux-base.ppt
0079-cours-linux-base.ppt0079-cours-linux-base.ppt
0079-cours-linux-base.ppt
 
Redis - (nosqlfr meetup #2)
Redis - (nosqlfr meetup #2) Redis - (nosqlfr meetup #2)
Redis - (nosqlfr meetup #2)
 
Rapport des Travaux Pratiques UNIX
Rapport des Travaux Pratiques UNIXRapport des Travaux Pratiques UNIX
Rapport des Travaux Pratiques UNIX
 
EXO_Rguibi_marwan.pptx
EXO_Rguibi_marwan.pptxEXO_Rguibi_marwan.pptx
EXO_Rguibi_marwan.pptx
 
ATELIER SYSTEME (1) FERCHICHI ABDELWAHEB
ATELIER SYSTEME (1) FERCHICHI ABDELWAHEBATELIER SYSTEME (1) FERCHICHI ABDELWAHEB
ATELIER SYSTEME (1) FERCHICHI ABDELWAHEB
 
C2 - Langage C - ISIMA 1 - Deuxieme partie
C2 - Langage C - ISIMA 1 - Deuxieme partieC2 - Langage C - ISIMA 1 - Deuxieme partie
C2 - Langage C - ISIMA 1 - Deuxieme partie
 
GIT Fundamentals
GIT FundamentalsGIT Fundamentals
GIT Fundamentals
 
Introduction au langage python notion de base
Introduction au langage python notion de baseIntroduction au langage python notion de base
Introduction au langage python notion de base
 

Shell sans les coquilles

  • 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/