SlideShare uma empresa Scribd logo
1 de 65
Ligne de commandes
sous Linux
Effrayant ?
Non, Indispensable !
Pascal MARTIN – SQLI
Forum PHP 2010, Paris
Ligne de Commandes sous Linux : indispensable ! – Pascal MARTIN – 2
{ A Propos
● Pascal MARTIN
● Expert Technique PHP chez SQLI
● Membre de la Cellule Architecture PHP
– Capitalisation
– Veille Technologique
– Interventions au lancement de projets
● Blog Perso
● http://blog.pascal-martin.fr/
● @pascal_martin
Ligne de Commandes sous Linux : indispensable ! – Pascal MARTIN – 3
{ Cette présentation
● Développeurs PHP
● Postes de développement = Windows
● Serveurs = Linux
● Sans interface graphique
● Manque d'habitude / formation
● Perte de temps
● Manque de confiance
Ligne de Commandes sous Linux : indispensable ! – Pascal MARTIN – 4
{● Linux, Serveur, et CLI ?
● Accéder à un serveur Linux
● Commande ?
● FS et manipulations de fichiers
● Redirections et filtres
● Archives
● Utilitaires
● Conclusion
Sommaire
Linux, Serveur, CLI,
et connexion
Ligne de Commandes sous Linux : indispensable ! – Pascal MARTIN – 6
{ Linux, Serveur, et CLI
● Serveur LAMP
● Pas d'interface graphique
● Connexion en mode Texte
– FTP
– HTTP
– telnet
– SSH / SCP / SFTP
● CLI
● Command Line Interface
Ligne de Commandes sous Linux : indispensable ! – Pascal MARTIN – 7
{ Accéder à un serveur Linux
● Depuis une machine Windows
● Putty
● Connexion SSH en ligne de commande
● http://www.chiark.greenend.org.uk/~sgtatham/putty/
● WinSCP
● Transfert de fichiers, interface graphique
● http://winscp.net/
● pscp.exe
● Transfert de fichiers, CLI
Ligne de Commandes sous Linux : indispensable ! – Pascal MARTIN – 8
{
Ligne de Commandes sous Linux : indispensable ! – Pascal MARTIN – 9
{
Ligne de Commandes sous Linux : indispensable ! – Pascal MARTIN – 10
{
Ligne de Commandes sous Linux : indispensable ! – Pascal MARTIN – 11
{
Ligne de Commandes sous Linux : indispensable ! – Pascal MARTIN – 12
{ Accéder à un serveur Linux
● Autres ?
● Commandes « ssh », « scp », …
● Outils graphiques
● Éditeurs de texte
● IDE – Eclipse avec plugin RSE
● Intégration à l'OS / desktop
Commande ?
Ligne de Commandes sous Linux : indispensable ! – Pascal MARTIN – 14
{ 1 programme == 1 tâche
● Programmes unitaires
● Utilisés ensembles
● A tous les niveaux
● Démons
● Interface CLI
● Applications
● Pas « une » façon
● Nombreuses solutions
● Plus ou moins efficaces ?
Ligne de Commandes sous Linux : indispensable ! – Pascal MARTIN – 15
{ Commande : notion
● Programme
● Recevant des options
● Option courte : « -o »
● Option longue : « --option-longue »
● Code retour
● Affichage de sorties
Ligne de Commandes sous Linux : indispensable ! – Pascal MARTIN – 16
{ Commande : syntaxe
● Syntaxe
● commande [param1 [param2 [param3]]]
● Enchainement
● « commande1 ; commande2 »
● « commande1 && commande2 »
● Annulation : Ctrl + C
● Code retour : $0
● Succès == 0
Ligne de Commandes sous Linux : indispensable ! – Pascal MARTIN – 17
{Commande : avant/arrière-plan
● Lancement en avant-plan
● « commande »
● Lancement en arrière-plan
● « commande & »
● Survie à la mort du terminal ?
● « nohup commande & »
Ligne de Commandes sous Linux : indispensable ! – Pascal MARTIN – 18
{ I'll send an SOS...
● Aide : « man » + nom de la commande
user@myserver: ~
$ man ls
LS(1) User Commands LS(1)
NAME
ls - list directory contents
SYNOPSIS
ls [OPTION]... [FILE]...
DESCRIPTION
List information about the FILEs (the current directory by default).
Sort entries alphabetically if none of -cftuvSUX nor --sort.
Mandatory arguments to long options are mandatory for short options
too.
-a, --all
do not ignore entries starting with .
Manual page ls(1) line 1
« Enter » : Ligne suivante
« Space » : Page suivante
« q » : Quitter
« Enter » : Ligne suivante
« Space » : Page suivante
« q » : Quitter
Ligne de Commandes sous Linux : indispensable ! – Pascal MARTIN – 19
{ Afficher un message
● « echo 'ceci est un message' »
user@myserver: ~
$ echo 'Hello, World!'
Hello, World!
user@myserver: ~
$ echo "Répertoire courant : $PWD"
Répertoire courant : /home/user
user@myserver: ~
$ echo -n 'Hello, World!'
Hello, World!user@myserver: ~
$
Système de fichiers
et manipulations de fichiers
Ligne de Commandes sous Linux : indispensable ! – Pascal MARTIN – 21
{ Tout est fichier
● Fichier normal
● Répertoire
● Lien symbolique
● Périphérique
● Regroupement de tous les fichiers
● Système de fichiers
● File System
● FS
Ligne de Commandes sous Linux : indispensable ! – Pascal MARTIN – 22
{ Arborescence du FS
● Racine : « / »
● Répertoires « standard » (vision simplifiée)
● « /bin » : les programmes exécutables
● « /etc » : les fichiers de config de niveau système
● « /home » : les répertoires de chaque utilisateur
● « /mnt », « /media » : les points de montage
● « /sbin » : les programmes système
● « /usr » : les programmes « non critiques »
● « /var » : les fichiers de logs, de cache, …
Ligne de Commandes sous Linux : indispensable ! – Pascal MARTIN – 23
{ Droits
● Trois droits
● « r » : Lecture (« read ») => « 4 »
● « w » : Écriture (« write ») => « 2 »
● « x » : Exécution (« execute ») => « 1 »
– Fichier : droit d'exécution
– Dossier : « exécuter un dossier » signifie « le traverser »
● Spéciaux : sticky, sgid, suid
Ligne de Commandes sous Linux : indispensable ! – Pascal MARTIN – 24
{ Droits et utilisateurs
● Trois types d'utilisateurs
● « u » : Utilisateur propriétaire du fichier
● « g » : Groupe
● « o » : Tous les autres utilisateurs
● Codage sous la forme
● « S RWX RWX RWX »
● « spécial », « droits user », « droits group », « droits
others »
● Super-utilisateur : « root »
● « sudo commande »
Ligne de Commandes sous Linux : indispensable ! – Pascal MARTIN – 25
{ Changer les droits
● Commande
● « chmod NOUVEAUX_DROITS FICHIERS »
● « chmod MODIFICATIONS_DROITS FICHIERS »
● Exemples
● « chmod 740 mon-fichier »
– « rwx r-- --- »
● « chmod u+x mon-fichier »
● « chmod o+rw mon-fichier »
● « chmod o-w mon-fichier »
Ligne de Commandes sous Linux : indispensable ! – Pascal MARTIN – 26
{ ls
● Lister des fichiers
● « -l » : affichage long
● « -a » : afficher les fichiers cachés
● « -h » : affichage humain
● « -t » : tri par date de modification
● « -r » : tri inversé
Ligne de Commandes sous Linux : indispensable ! – Pascal MARTIN – 28
{ Changer de répertoire
● « cd REPERTOIRE » – Change Directory
● Exemples
● « cd », « cd ~ », « cd /home/USER »
● « cd .. », « cd ../.. »
● « cd /var/www/ »
● « cd rep »
● « cd - »
● Connaître le répertoire courant
● Commande « pwd »
Ligne de Commandes sous Linux : indispensable ! – Pascal MARTIN – 29
{ Créer / effacer un répertoire
● Créer un répertoire : MaKe DIRectory
● « mkdir REPERTOIRE »
● « mkdir -p rep1/rep2/rep3 »
● « mkdir rep1 /tmp/rep2 »
● Effacer un répertoire : ReMove DIRectory
● « rmdir REPERTOIRE »
● Doit être vide !
Ligne de Commandes sous Linux : indispensable ! – Pascal MARTIN – 30
{ Effacer un fichier
● « rm » : ReMove
● Options ?
● « -R » : récursif
● « -f » : force
● Exemples
● « rm fichier1 »
● « rm fichier1.txt fichier2.txt »
● « rm -R repertoire »
Ligne de Commandes sous Linux : indispensable ! – Pascal MARTIN – 31
{ Éditer un fichier : vi
● Éditeur de texte « standard » sous UNIX
● Difficile d'accès ; rebutant ; effrayant ?
● Présent sur quasiment toutes les machines Linux
● Utilisation de base : nécessaire !
● Lancer « vi »
● Commande « vi mon-fichier.txt »
Ligne de Commandes sous Linux : indispensable ! – Pascal MARTIN – 33
{ Éditer un fichier : vi
● Deux modes
● Mode « commandes » : « ESC »
– « :w » pour sauvegarder
– « :q » pour quitter
● « :wq » pour quitter en sauvegardant
● « :q! » pour quitter sans sauvegarder
– « dd » pour effacer la ligne courante
– « u » pour annuler la dernière opération
● Basculer en mode « édition »
– « i » pour passer en insertion
– « a » pour passer en ajout
– « R » pour passer en remplacement
Ligne de Commandes sous Linux : indispensable ! – Pascal MARTIN – 34
{ Rendre vi « plus sympa » ?
● Utiliser « vim »
● « VI Improved »
● Coloration syntaxique
● « :syntax on » pour activer
● « :syntax off » pour désactiver
● Rendre persistante l'activation de la coloration
syntaxique
● Ajouter la ligne « syntax on » au fichier
« ~/.vimrc »
Ligne de Commandes sous Linux : indispensable ! – Pascal MARTIN – 36
{ Éditer un fichier : nano
● Éditeur de texte simple
● Moins complet
● Plus facile à prendre en main pour un débutant ?
● Mais pas installé sur toutes les machines
● Commandes
● « nano mon-fichier.txt »
● « Ctrl + X » pour quitter
● Cf aide en bas de l'écran
Ligne de Commandes sous Linux : indispensable ! – Pascal MARTIN – 38
{ Afficher un fichier ?
● « cat mon-fichier.txt »
● Envoi tout le fichier sur la sortie standard
● « tail mon-fichier.txt »
● Envoi la fin du fichier
● « tail -n 15 mon-fichier.txt »
● « head mon-fichier.txt »
● Envoi le début du fichier
Ligne de Commandes sous Linux : indispensable ! – Pascal MARTIN – 39
{ Suivre un fichier (de logs)
● « tail -f mon-fichier.txt »
● Affiche la fin du fichier
● En l'actualisant à chaque fois que de nouvelles
lignes y sont ajoutées
Ligne de Commandes sous Linux : indispensable ! – Pascal MARTIN – 41
{ Naviguer dans un fichier
● Navigation paginée
● « more mon-fichier.txt »
● « less mon-fichier.txt »
● Quelques touches
● « Enter » : ligne suivante
● « Space » : page suivante
● « / » + « Enter » : recherche
● « q » : quitter
Redirections
Et Filtres
Ligne de Commandes sous Linux : indispensable ! – Pascal MARTIN – 43
{Redirections vers/depuis fichier
● 3 I/O standard
● stdout : sortie standard
● stderr : sortie d'erreurs
● stdin : entrée standard
● Sortie standard vers un fichier :
● Nouveau fichier : « commande > nom-fichier »
● Ajout : « commande >> nom-fichier »
Ligne de Commandes sous Linux : indispensable ! – Pascal MARTIN – 44
{Redirections vers/depuis fichier
● Sortie d'erreurs vers un fichier :
● « commande 2> nom-fichier »
● Ajout : « commande 2>> nom-fichier »
● Rediriger les deux sorties vers le même fichier
● « commande > mon-fichier 2>&1 »
● Lire depuis un fichier :
● « commande < nom-fichier »
● Envoi le contenu du fichier vers l'entrée standard
de la commande
Ligne de Commandes sous Linux : indispensable ! – Pascal MARTIN – 47
{ Filtres : Quid ?
● Chaque outil fait une seule chose, mais le fait
bien.
● Plein de petits outils
● Réalisant des opérations unitaires
● Mais que l'on peut chaîner
● Filtre : commande qui
● lit des données sur l'entrée standard,
● effectue des traitements sur les lignes reçues,
● et écrit le résultat sur la sortie standard
Ligne de Commandes sous Linux : indispensable ! – Pascal MARTIN – 48
{ Filtres : comment ?
● Enchaînement de commandes
● Utilisation d'un « pipe » (« tube ») : « | »
● « commande1 | commande2 | ... »
● Quelques filtres courant
● « tail » / « head » : fin / début de fichier
● « cut » : extraire des colonnes d'un fichier
● « grep » : filtre par expressions rationnelles
● « sed » : remplacement par regex
Archives
Ligne de Commandes sous Linux : indispensable ! – Pascal MARTIN – 51
{ Création d'une archive
● Commandes « tar », puis « gzip » ou
« bzip2 »
● Archive
● « tar -cvf archive.tar fichier1
fichier2 … »
● Compression
● « gzip archive.tar »
● « bzip2 archive.tar »
Ligne de Commandes sous Linux : indispensable ! – Pascal MARTIN – 52
{ Extraction d'une archive
● Décompression
● « gzip -d mon-fichier.gz »
● « bzip2 -d mon-fichier.gz »
● Extraction d'une archive
● « tar -xvzf mon-archive.tar.gz »
● « tar -xvjf mon-archive.tar.bz2 »
● Et pour les zip/rar ?
● « unzip -d mon-fichier.zip »
● « unrar x mon-fichier.rar »
Utilitaires
Ligne de Commandes sous Linux : indispensable ! – Pascal MARTIN – 54
{ Processus
● Lister les processus en cours d'exécution
● Commande « ps »
● Options ? « -A », « -l », « -f », ...
● Monitoring
● « top », ou « htop »
● Tuer un processus
● « kill PID »
● « kill -9 PID »
Ligne de Commandes sous Linux : indispensable ! – Pascal MARTIN – 57
{ « En vrac »
● Informations sur un fichier
● « file mon-fichier »
● Extraction de champs
● « cut -f NUM -dSEPARATEUR mon-fichier »
● Tri
● « sort mon-fichier »
● Lignes uniques... se suivant
● « uniq mon-fichier »
Ligne de Commandes sous Linux : indispensable ! – Pascal MARTIN – 58
{ « En vrac »
● Compter des lettres / mots / lignes
● « wc mon-fichier »
● Copier / déplacer un fichier
● « cp origine destination »
● « mv origine destination »
● Générer / appliquer des patchs
● « diff » + « patch »
Ligne de Commandes sous Linux : indispensable ! – Pascal MARTIN – 61
{ Recherche de fichiers
● Commande « find »
● Permet de rechercher des fichiers et d'effectuer des 
opérations dessus
● Extrêmement puissant !
● Principe
● « find REPERTOIRE MOTIF ACTION »
● Exemple
● « find /home/user -name '*.txt'
-print »
Ligne de Commandes sous Linux : indispensable ! – Pascal MARTIN – 63
{ Conclusion
● Archaïque et dépassé ?
● Quelques commandes à connaître
● Plus efficace !
● Assez pour travailler
● « Peur de tout casser » ?
● Non !
● Essayez !
Ligne de Commandes sous Linux : indispensable ! – Pascal MARTIN – 64
{ Et PHP alors ?
● Programme utilisable en CLI ;-)
● Nombreuses options
● « php -f fichier.php » : exécuter un fichier
● « php -i » : phpinfo()
● « php -m » : liste des modules chargés
● « php -r 'code php;' » : exécuter du code
● « php -h » : liste des options
Merci !
Pascal MARTIN – SQLI
http://blog.pascal-martin.fr
contact@pascal-martin.fr
@pascal_martin
http://joind.in/2077

Mais conteúdo relacionado

Mais procurados

Mais procurados (20)

SdE 3 - Systemes de fichiers
SdE 3 - Systemes de fichiersSdE 3 - Systemes de fichiers
SdE 3 - Systemes de fichiers
 
SdE2 4 - Processus
SdE2 4 - ProcessusSdE2 4 - Processus
SdE2 4 - Processus
 
SdE 11: Implémentation de Système de Fichiers
SdE 11: Implémentation de Système de FichiersSdE 11: Implémentation de Système de Fichiers
SdE 11: Implémentation de Système de Fichiers
 
Installation de PHP
Installation de PHPInstallation de PHP
Installation de PHP
 
Systemes d'explotation: Mémoire Virtuelle
Systemes d'explotation: Mémoire VirtuelleSystemes d'explotation: Mémoire Virtuelle
Systemes d'explotation: Mémoire Virtuelle
 
Distro Recipes 2013 : Yocto / OpenEmbedded
Distro Recipes 2013 : Yocto / OpenEmbeddedDistro Recipes 2013 : Yocto / OpenEmbedded
Distro Recipes 2013 : Yocto / OpenEmbedded
 
SdE 3 - System de fichiers
SdE 3 - System de fichiersSdE 3 - System de fichiers
SdE 3 - System de fichiers
 
SdE - Introduction
SdE - IntroductionSdE - Introduction
SdE - Introduction
 
SdE TP 3 - Fonctions d'entrée et sortie
SdE TP 3 - Fonctions d'entrée et sortieSdE TP 3 - Fonctions d'entrée et sortie
SdE TP 3 - Fonctions d'entrée et sortie
 
Cours linux complet
Cours linux completCours linux complet
Cours linux complet
 
SdE 6 - Gestion de la memoire
SdE 6 - Gestion de la memoireSdE 6 - Gestion de la memoire
SdE 6 - Gestion de la memoire
 
SdE 1 - Introduction
SdE 1 - IntroductionSdE 1 - Introduction
SdE 1 - Introduction
 
SdE 2 - System de fichiers
SdE 2 - System de fichiersSdE 2 - System de fichiers
SdE 2 - System de fichiers
 
SdE 10 - Threads
SdE 10 - ThreadsSdE 10 - Threads
SdE 10 - Threads
 
SdE 5 - Communication entre processus et Planification
SdE 5 - Communication entre processus et PlanificationSdE 5 - Communication entre processus et Planification
SdE 5 - Communication entre processus et Planification
 
SdE 9 - Threads
SdE 9 - ThreadsSdE 9 - Threads
SdE 9 - Threads
 
SdE 4 - Processus
SdE 4 - ProcessusSdE 4 - Processus
SdE 4 - Processus
 
SdE 4: Processus
SdE 4: ProcessusSdE 4: Processus
SdE 4: Processus
 
SdE 8 - Memoire Virtuelle
SdE 8 - Memoire VirtuelleSdE 8 - Memoire Virtuelle
SdE 8 - Memoire Virtuelle
 
Commande linux
Commande linuxCommande linux
Commande linux
 

Semelhante a Ligne de commandes sous Linux : effrayant ? Non : indispensable !

Shell sans les coquilles
Shell sans les coquillesShell sans les coquilles
Shell sans les coquillesÉdouard Lopez
 
cours-gratuit.com--id-3443.pdf
cours-gratuit.com--id-3443.pdfcours-gratuit.com--id-3443.pdf
cours-gratuit.com--id-3443.pdfSouha Bennani
 
Bonnes pratiques de developpement en PHP
Bonnes pratiques de developpement en PHPBonnes pratiques de developpement en PHP
Bonnes pratiques de developpement en PHPPascal MARTIN
 
EXO_Rguibi_marwan.pptx
EXO_Rguibi_marwan.pptxEXO_Rguibi_marwan.pptx
EXO_Rguibi_marwan.pptxHolakoNoob
 
Support formation vidéo : Réussir la certification Linux LPIC-1 (2)
Support formation vidéo : Réussir la certification Linux LPIC-1 (2)Support formation vidéo : Réussir la certification Linux LPIC-1 (2)
Support formation vidéo : Réussir la certification Linux LPIC-1 (2)SmartnSkilled
 
Découverte d'UNIX - ISIMA
Découverte d'UNIX - ISIMADécouverte d'UNIX - ISIMA
Découverte d'UNIX - ISIMALoic Yon
 
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
 
Etat de l'art des systèmes embarqués, utilisation du logiciel libre
Etat de l'art des systèmes embarqués, utilisation du logiciel libreEtat de l'art des systèmes embarqués, utilisation du logiciel libre
Etat de l'art des systèmes embarqués, utilisation du logiciel librePierre Ficheux
 
Embarquer Linux et des systèmes libres, méthodes et apports
Embarquer Linux et des systèmes libres, méthodes et apportsEmbarquer Linux et des systèmes libres, méthodes et apports
Embarquer Linux et des systèmes libres, méthodes et apportsguest3be047
 
Formation Script MS-DOS.ppt
Formation Script MS-DOS.pptFormation Script MS-DOS.ppt
Formation Script MS-DOS.pptkhezzanedallel
 
0081-cours-systemes-exploitations.ppt
0081-cours-systemes-exploitations.ppt0081-cours-systemes-exploitations.ppt
0081-cours-systemes-exploitations.pptDenisKouakou1
 
LLVM, clang & c++
LLVM, clang & c++LLVM, clang & c++
LLVM, clang & c++cppfrug
 
Rivendell - Par où commencer l’installation ?
Rivendell - Par où commencer l’installation ?Rivendell - Par où commencer l’installation ?
Rivendell - Par où commencer l’installation ?Tryphon
 
09 02 configuration du serveur nfs
09 02 configuration du serveur nfs09 02 configuration du serveur nfs
09 02 configuration du serveur nfsNoël
 

Semelhante a Ligne de commandes sous Linux : effrayant ? Non : indispensable ! (20)

Shell sans les coquilles
Shell sans les coquillesShell sans les coquilles
Shell sans les coquilles
 
cours-gratuit.com--id-3443.pdf
cours-gratuit.com--id-3443.pdfcours-gratuit.com--id-3443.pdf
cours-gratuit.com--id-3443.pdf
 
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
 
Bonnes pratiques de developpement en PHP
Bonnes pratiques de developpement en PHPBonnes pratiques de developpement en PHP
Bonnes pratiques de developpement en PHP
 
EXO_Rguibi_marwan.pptx
EXO_Rguibi_marwan.pptxEXO_Rguibi_marwan.pptx
EXO_Rguibi_marwan.pptx
 
sshGate
sshGatesshGate
sshGate
 
Support formation vidéo : Réussir la certification Linux LPIC-1 (2)
Support formation vidéo : Réussir la certification Linux LPIC-1 (2)Support formation vidéo : Réussir la certification Linux LPIC-1 (2)
Support formation vidéo : Réussir la certification Linux LPIC-1 (2)
 
Découverte d'UNIX - ISIMA
Découverte d'UNIX - ISIMADécouverte d'UNIX - ISIMA
Découverte d'UNIX - ISIMA
 
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
 
Qt5 embedded
Qt5 embeddedQt5 embedded
Qt5 embedded
 
Etat de l'art des systèmes embarqués, utilisation du logiciel libre
Etat de l'art des systèmes embarqués, utilisation du logiciel libreEtat de l'art des systèmes embarqués, utilisation du logiciel libre
Etat de l'art des systèmes embarqués, utilisation du logiciel libre
 
Embarquer Linux et des systèmes libres, méthodes et apports
Embarquer Linux et des systèmes libres, méthodes et apportsEmbarquer Linux et des systèmes libres, méthodes et apports
Embarquer Linux et des systèmes libres, méthodes et apports
 
Formation Script MS-DOS.ppt
Formation Script MS-DOS.pptFormation Script MS-DOS.ppt
Formation Script MS-DOS.ppt
 
0081-cours-systemes-exploitations.ppt
0081-cours-systemes-exploitations.ppt0081-cours-systemes-exploitations.ppt
0081-cours-systemes-exploitations.ppt
 
Linux Administrateur
Linux AdministrateurLinux Administrateur
Linux Administrateur
 
LLVM, clang & c++
LLVM, clang & c++LLVM, clang & c++
LLVM, clang & c++
 
Rivendell - Par où commencer l’installation ?
Rivendell - Par où commencer l’installation ?Rivendell - Par où commencer l’installation ?
Rivendell - Par où commencer l’installation ?
 
09 02 configuration du serveur nfs
09 02 configuration du serveur nfs09 02 configuration du serveur nfs
09 02 configuration du serveur nfs
 

Ligne de commandes sous Linux : effrayant ? Non : indispensable !

  • 1. Ligne de commandes sous Linux Effrayant ? Non, Indispensable ! Pascal MARTIN – SQLI Forum PHP 2010, Paris
  • 2. Ligne de Commandes sous Linux : indispensable ! – Pascal MARTIN – 2 { A Propos ● Pascal MARTIN ● Expert Technique PHP chez SQLI ● Membre de la Cellule Architecture PHP – Capitalisation – Veille Technologique – Interventions au lancement de projets ● Blog Perso ● http://blog.pascal-martin.fr/ ● @pascal_martin
  • 3. Ligne de Commandes sous Linux : indispensable ! – Pascal MARTIN – 3 { Cette présentation ● Développeurs PHP ● Postes de développement = Windows ● Serveurs = Linux ● Sans interface graphique ● Manque d'habitude / formation ● Perte de temps ● Manque de confiance
  • 4. Ligne de Commandes sous Linux : indispensable ! – Pascal MARTIN – 4 {● Linux, Serveur, et CLI ? ● Accéder à un serveur Linux ● Commande ? ● FS et manipulations de fichiers ● Redirections et filtres ● Archives ● Utilitaires ● Conclusion Sommaire
  • 6. Ligne de Commandes sous Linux : indispensable ! – Pascal MARTIN – 6 { Linux, Serveur, et CLI ● Serveur LAMP ● Pas d'interface graphique ● Connexion en mode Texte – FTP – HTTP – telnet – SSH / SCP / SFTP ● CLI ● Command Line Interface
  • 7. Ligne de Commandes sous Linux : indispensable ! – Pascal MARTIN – 7 { Accéder à un serveur Linux ● Depuis une machine Windows ● Putty ● Connexion SSH en ligne de commande ● http://www.chiark.greenend.org.uk/~sgtatham/putty/ ● WinSCP ● Transfert de fichiers, interface graphique ● http://winscp.net/ ● pscp.exe ● Transfert de fichiers, CLI
  • 8. Ligne de Commandes sous Linux : indispensable ! – Pascal MARTIN – 8 {
  • 9. Ligne de Commandes sous Linux : indispensable ! – Pascal MARTIN – 9 {
  • 10. Ligne de Commandes sous Linux : indispensable ! – Pascal MARTIN – 10 {
  • 11. Ligne de Commandes sous Linux : indispensable ! – Pascal MARTIN – 11 {
  • 12. Ligne de Commandes sous Linux : indispensable ! – Pascal MARTIN – 12 { Accéder à un serveur Linux ● Autres ? ● Commandes « ssh », « scp », … ● Outils graphiques ● Éditeurs de texte ● IDE – Eclipse avec plugin RSE ● Intégration à l'OS / desktop
  • 14. Ligne de Commandes sous Linux : indispensable ! – Pascal MARTIN – 14 { 1 programme == 1 tâche ● Programmes unitaires ● Utilisés ensembles ● A tous les niveaux ● Démons ● Interface CLI ● Applications ● Pas « une » façon ● Nombreuses solutions ● Plus ou moins efficaces ?
  • 15. Ligne de Commandes sous Linux : indispensable ! – Pascal MARTIN – 15 { Commande : notion ● Programme ● Recevant des options ● Option courte : « -o » ● Option longue : « --option-longue » ● Code retour ● Affichage de sorties
  • 16. Ligne de Commandes sous Linux : indispensable ! – Pascal MARTIN – 16 { Commande : syntaxe ● Syntaxe ● commande [param1 [param2 [param3]]] ● Enchainement ● « commande1 ; commande2 » ● « commande1 && commande2 » ● Annulation : Ctrl + C ● Code retour : $0 ● Succès == 0
  • 17. Ligne de Commandes sous Linux : indispensable ! – Pascal MARTIN – 17 {Commande : avant/arrière-plan ● Lancement en avant-plan ● « commande » ● Lancement en arrière-plan ● « commande & » ● Survie à la mort du terminal ? ● « nohup commande & »
  • 18. Ligne de Commandes sous Linux : indispensable ! – Pascal MARTIN – 18 { I'll send an SOS... ● Aide : « man » + nom de la commande user@myserver: ~ $ man ls LS(1) User Commands LS(1) NAME ls - list directory contents SYNOPSIS ls [OPTION]... [FILE]... DESCRIPTION List information about the FILEs (the current directory by default). Sort entries alphabetically if none of -cftuvSUX nor --sort. Mandatory arguments to long options are mandatory for short options too. -a, --all do not ignore entries starting with . Manual page ls(1) line 1 « Enter » : Ligne suivante « Space » : Page suivante « q » : Quitter « Enter » : Ligne suivante « Space » : Page suivante « q » : Quitter
  • 19. Ligne de Commandes sous Linux : indispensable ! – Pascal MARTIN – 19 { Afficher un message ● « echo 'ceci est un message' » user@myserver: ~ $ echo 'Hello, World!' Hello, World! user@myserver: ~ $ echo "Répertoire courant : $PWD" Répertoire courant : /home/user user@myserver: ~ $ echo -n 'Hello, World!' Hello, World!user@myserver: ~ $
  • 20. Système de fichiers et manipulations de fichiers
  • 21. Ligne de Commandes sous Linux : indispensable ! – Pascal MARTIN – 21 { Tout est fichier ● Fichier normal ● Répertoire ● Lien symbolique ● Périphérique ● Regroupement de tous les fichiers ● Système de fichiers ● File System ● FS
  • 22. Ligne de Commandes sous Linux : indispensable ! – Pascal MARTIN – 22 { Arborescence du FS ● Racine : « / » ● Répertoires « standard » (vision simplifiée) ● « /bin » : les programmes exécutables ● « /etc » : les fichiers de config de niveau système ● « /home » : les répertoires de chaque utilisateur ● « /mnt », « /media » : les points de montage ● « /sbin » : les programmes système ● « /usr » : les programmes « non critiques » ● « /var » : les fichiers de logs, de cache, …
  • 23. Ligne de Commandes sous Linux : indispensable ! – Pascal MARTIN – 23 { Droits ● Trois droits ● « r » : Lecture (« read ») => « 4 » ● « w » : Écriture (« write ») => « 2 » ● « x » : Exécution (« execute ») => « 1 » – Fichier : droit d'exécution – Dossier : « exécuter un dossier » signifie « le traverser » ● Spéciaux : sticky, sgid, suid
  • 24. Ligne de Commandes sous Linux : indispensable ! – Pascal MARTIN – 24 { Droits et utilisateurs ● Trois types d'utilisateurs ● « u » : Utilisateur propriétaire du fichier ● « g » : Groupe ● « o » : Tous les autres utilisateurs ● Codage sous la forme ● « S RWX RWX RWX » ● « spécial », « droits user », « droits group », « droits others » ● Super-utilisateur : « root » ● « sudo commande »
  • 25. Ligne de Commandes sous Linux : indispensable ! – Pascal MARTIN – 25 { Changer les droits ● Commande ● « chmod NOUVEAUX_DROITS FICHIERS » ● « chmod MODIFICATIONS_DROITS FICHIERS » ● Exemples ● « chmod 740 mon-fichier » – « rwx r-- --- » ● « chmod u+x mon-fichier » ● « chmod o+rw mon-fichier » ● « chmod o-w mon-fichier »
  • 26. Ligne de Commandes sous Linux : indispensable ! – Pascal MARTIN – 26 { ls ● Lister des fichiers ● « -l » : affichage long ● « -a » : afficher les fichiers cachés ● « -h » : affichage humain ● « -t » : tri par date de modification ● « -r » : tri inversé
  • 27.
  • 28. Ligne de Commandes sous Linux : indispensable ! – Pascal MARTIN – 28 { Changer de répertoire ● « cd REPERTOIRE » – Change Directory ● Exemples ● « cd », « cd ~ », « cd /home/USER » ● « cd .. », « cd ../.. » ● « cd /var/www/ » ● « cd rep » ● « cd - » ● Connaître le répertoire courant ● Commande « pwd »
  • 29. Ligne de Commandes sous Linux : indispensable ! – Pascal MARTIN – 29 { Créer / effacer un répertoire ● Créer un répertoire : MaKe DIRectory ● « mkdir REPERTOIRE » ● « mkdir -p rep1/rep2/rep3 » ● « mkdir rep1 /tmp/rep2 » ● Effacer un répertoire : ReMove DIRectory ● « rmdir REPERTOIRE » ● Doit être vide !
  • 30. Ligne de Commandes sous Linux : indispensable ! – Pascal MARTIN – 30 { Effacer un fichier ● « rm » : ReMove ● Options ? ● « -R » : récursif ● « -f » : force ● Exemples ● « rm fichier1 » ● « rm fichier1.txt fichier2.txt » ● « rm -R repertoire »
  • 31. Ligne de Commandes sous Linux : indispensable ! – Pascal MARTIN – 31 { Éditer un fichier : vi ● Éditeur de texte « standard » sous UNIX ● Difficile d'accès ; rebutant ; effrayant ? ● Présent sur quasiment toutes les machines Linux ● Utilisation de base : nécessaire ! ● Lancer « vi » ● Commande « vi mon-fichier.txt »
  • 32.
  • 33. Ligne de Commandes sous Linux : indispensable ! – Pascal MARTIN – 33 { Éditer un fichier : vi ● Deux modes ● Mode « commandes » : « ESC » – « :w » pour sauvegarder – « :q » pour quitter ● « :wq » pour quitter en sauvegardant ● « :q! » pour quitter sans sauvegarder – « dd » pour effacer la ligne courante – « u » pour annuler la dernière opération ● Basculer en mode « édition » – « i » pour passer en insertion – « a » pour passer en ajout – « R » pour passer en remplacement
  • 34. Ligne de Commandes sous Linux : indispensable ! – Pascal MARTIN – 34 { Rendre vi « plus sympa » ? ● Utiliser « vim » ● « VI Improved » ● Coloration syntaxique ● « :syntax on » pour activer ● « :syntax off » pour désactiver ● Rendre persistante l'activation de la coloration syntaxique ● Ajouter la ligne « syntax on » au fichier « ~/.vimrc »
  • 35.
  • 36. Ligne de Commandes sous Linux : indispensable ! – Pascal MARTIN – 36 { Éditer un fichier : nano ● Éditeur de texte simple ● Moins complet ● Plus facile à prendre en main pour un débutant ? ● Mais pas installé sur toutes les machines ● Commandes ● « nano mon-fichier.txt » ● « Ctrl + X » pour quitter ● Cf aide en bas de l'écran
  • 37.
  • 38. Ligne de Commandes sous Linux : indispensable ! – Pascal MARTIN – 38 { Afficher un fichier ? ● « cat mon-fichier.txt » ● Envoi tout le fichier sur la sortie standard ● « tail mon-fichier.txt » ● Envoi la fin du fichier ● « tail -n 15 mon-fichier.txt » ● « head mon-fichier.txt » ● Envoi le début du fichier
  • 39. Ligne de Commandes sous Linux : indispensable ! – Pascal MARTIN – 39 { Suivre un fichier (de logs) ● « tail -f mon-fichier.txt » ● Affiche la fin du fichier ● En l'actualisant à chaque fois que de nouvelles lignes y sont ajoutées
  • 40.
  • 41. Ligne de Commandes sous Linux : indispensable ! – Pascal MARTIN – 41 { Naviguer dans un fichier ● Navigation paginée ● « more mon-fichier.txt » ● « less mon-fichier.txt » ● Quelques touches ● « Enter » : ligne suivante ● « Space » : page suivante ● « / » + « Enter » : recherche ● « q » : quitter
  • 43. Ligne de Commandes sous Linux : indispensable ! – Pascal MARTIN – 43 {Redirections vers/depuis fichier ● 3 I/O standard ● stdout : sortie standard ● stderr : sortie d'erreurs ● stdin : entrée standard ● Sortie standard vers un fichier : ● Nouveau fichier : « commande > nom-fichier » ● Ajout : « commande >> nom-fichier »
  • 44. Ligne de Commandes sous Linux : indispensable ! – Pascal MARTIN – 44 {Redirections vers/depuis fichier ● Sortie d'erreurs vers un fichier : ● « commande 2> nom-fichier » ● Ajout : « commande 2>> nom-fichier » ● Rediriger les deux sorties vers le même fichier ● « commande > mon-fichier 2>&1 » ● Lire depuis un fichier : ● « commande < nom-fichier » ● Envoi le contenu du fichier vers l'entrée standard de la commande
  • 45.
  • 46.
  • 47. Ligne de Commandes sous Linux : indispensable ! – Pascal MARTIN – 47 { Filtres : Quid ? ● Chaque outil fait une seule chose, mais le fait bien. ● Plein de petits outils ● Réalisant des opérations unitaires ● Mais que l'on peut chaîner ● Filtre : commande qui ● lit des données sur l'entrée standard, ● effectue des traitements sur les lignes reçues, ● et écrit le résultat sur la sortie standard
  • 48. Ligne de Commandes sous Linux : indispensable ! – Pascal MARTIN – 48 { Filtres : comment ? ● Enchaînement de commandes ● Utilisation d'un « pipe » (« tube ») : « | » ● « commande1 | commande2 | ... » ● Quelques filtres courant ● « tail » / « head » : fin / début de fichier ● « cut » : extraire des colonnes d'un fichier ● « grep » : filtre par expressions rationnelles ● « sed » : remplacement par regex
  • 49.
  • 51. Ligne de Commandes sous Linux : indispensable ! – Pascal MARTIN – 51 { Création d'une archive ● Commandes « tar », puis « gzip » ou « bzip2 » ● Archive ● « tar -cvf archive.tar fichier1 fichier2 … » ● Compression ● « gzip archive.tar » ● « bzip2 archive.tar »
  • 52. Ligne de Commandes sous Linux : indispensable ! – Pascal MARTIN – 52 { Extraction d'une archive ● Décompression ● « gzip -d mon-fichier.gz » ● « bzip2 -d mon-fichier.gz » ● Extraction d'une archive ● « tar -xvzf mon-archive.tar.gz » ● « tar -xvjf mon-archive.tar.bz2 » ● Et pour les zip/rar ? ● « unzip -d mon-fichier.zip » ● « unrar x mon-fichier.rar »
  • 54. Ligne de Commandes sous Linux : indispensable ! – Pascal MARTIN – 54 { Processus ● Lister les processus en cours d'exécution ● Commande « ps » ● Options ? « -A », « -l », « -f », ... ● Monitoring ● « top », ou « htop » ● Tuer un processus ● « kill PID » ● « kill -9 PID »
  • 55.
  • 56.
  • 57. Ligne de Commandes sous Linux : indispensable ! – Pascal MARTIN – 57 { « En vrac » ● Informations sur un fichier ● « file mon-fichier » ● Extraction de champs ● « cut -f NUM -dSEPARATEUR mon-fichier » ● Tri ● « sort mon-fichier » ● Lignes uniques... se suivant ● « uniq mon-fichier »
  • 58. Ligne de Commandes sous Linux : indispensable ! – Pascal MARTIN – 58 { « En vrac » ● Compter des lettres / mots / lignes ● « wc mon-fichier » ● Copier / déplacer un fichier ● « cp origine destination » ● « mv origine destination » ● Générer / appliquer des patchs ● « diff » + « patch »
  • 59.
  • 60.
  • 61. Ligne de Commandes sous Linux : indispensable ! – Pascal MARTIN – 61 { Recherche de fichiers ● Commande « find » ● Permet de rechercher des fichiers et d'effectuer des  opérations dessus ● Extrêmement puissant ! ● Principe ● « find REPERTOIRE MOTIF ACTION » ● Exemple ● « find /home/user -name '*.txt' -print »
  • 62.
  • 63. Ligne de Commandes sous Linux : indispensable ! – Pascal MARTIN – 63 { Conclusion ● Archaïque et dépassé ? ● Quelques commandes à connaître ● Plus efficace ! ● Assez pour travailler ● « Peur de tout casser » ? ● Non ! ● Essayez !
  • 64. Ligne de Commandes sous Linux : indispensable ! – Pascal MARTIN – 64 { Et PHP alors ? ● Programme utilisable en CLI ;-) ● Nombreuses options ● « php -f fichier.php » : exécuter un fichier ● « php -i » : phpinfo() ● « php -m » : liste des modules chargés ● « php -r 'code php;' » : exécuter du code ● « php -h » : liste des options
  • 65. Merci ! Pascal MARTIN – SQLI http://blog.pascal-martin.fr contact@pascal-martin.fr @pascal_martin http://joind.in/2077

Notas do Editor

  1. http://en.wikipedia.org/wiki/Unix_directory_structure