SlideShare une entreprise Scribd logo
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

Initiation Linux
Initiation LinuxInitiation Linux
Initiation Linux
Amaury Khelifi
 
Tp n 3 linux
Tp n 3 linuxTp n 3 linux
Tp n 3 linux
Amir Souissi
 
Processus pére fils
Processus pére filsProcessus pére fils
Processus pére filsSelman Dridi
 
Tp n 5 linux
Tp n 5 linuxTp n 5 linux
Tp n 5 linux
Amir Souissi
 
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
 
s de base
s de bases de base
s de base
alimesbahi3
 
Cours linux complet
Cours linux completCours linux complet
Cours linux completaubin82
 
Guide complet linux
Guide complet linuxGuide complet linux
Guide complet linux
Anthony Le Goff
 
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
 
Tp n 4 linux
Tp n 4 linuxTp n 4 linux
Tp n 4 linux
Amir Souissi
 
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
 
Linux Administrateur
Linux AdministrateurLinux Administrateur
Linux Administrateur
Open Source School
 

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 Total
FTI 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 Powershell
Patrick 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® Nomad
Advansolar
 
Powershell et les techniques de remoting
Powershell et les techniques de remoting Powershell et les techniques de remoting
Powershell et les techniques de remoting
Microsoft Technet France
 
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
Patrick 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 management
Ravikanth Chaganti
 
F Les Scripts En Power Shell
F Les Scripts En Power ShellF Les Scripts En Power Shell
F Les Scripts En Power Shell
UGAIA
 
Groupe Total
Groupe TotalGroupe Total
Groupe Total
startine
 
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
 
Html ppt
Html pptHtml ppt
Html ppt
Iblesoft
 
Total project
Total projectTotal project
Total project
Savino BARTOLOMEO
 
Powershell Demo Presentation
Powershell Demo PresentationPowershell Demo Presentation
Powershell Demo Presentation
Avik Bhattacharyya
 
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
Audrey 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 manuscript
yufeicao
 
Apprendre anglais facilement
Apprendre anglais facilementApprendre anglais facilement
Apprendre anglais facilement
danysg
 
Le langage html
Le langage htmlLe langage html
Le langage html
Mohammed Amine Mostefai
 

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).pdf
YassineZouin
 
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
 
Bash bonnes pratiques
Bash bonnes pratiquesBash bonnes pratiques
Bash bonnes pratiques
Idriss Neumann
 
programmation_shell_2022 (1).pptx
programmation_shell_2022 (1).pptxprogrammation_shell_2022 (1).pptx
programmation_shell_2022 (1).pptx
ManalAg
 
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 Windows
Joseph Konka
 
Commande dos
Commande dosCommande dos
Commande dos
Franck Lecluse
 
cours-gratuit.com--id-3443.pdf
cours-gratuit.com--id-3443.pdfcours-gratuit.com--id-3443.pdf
cours-gratuit.com--id-3443.pdf
Souha 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 main
Ange Albertini
 
0079-cours-linux-base.ppt
0079-cours-linux-base.ppt0079-cours-linux-base.ppt
0079-cours-linux-base.ppt
AugustoMoundoh1
 
0079-cours-linux-base.ppt
0079-cours-linux-base.ppt0079-cours-linux-base.ppt
0079-cours-linux-base.ppt
MahdiHERMASSI1
 
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 UNIX
Soukaina Boujadi
 
EXO_Rguibi_marwan.pptx
EXO_Rguibi_marwan.pptxEXO_Rguibi_marwan.pptx
EXO_Rguibi_marwan.pptx
HolakoNoob
 
ATELIER SYSTEME (1) FERCHICHI ABDELWAHEB
ATELIER SYSTEME (1) FERCHICHI ABDELWAHEBATELIER SYSTEME (1) FERCHICHI ABDELWAHEB
ATELIER SYSTEME (1) FERCHICHI ABDELWAHEB
Ferjani 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 partie
Loic Yon
 
GIT Fundamentals
GIT FundamentalsGIT Fundamentals
GIT Fundamentals
Abderrazak BOUADMA
 
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
mohamedAitomar1
 

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/