Guide d'utilisation du Shell pour débutant
SHELL BASH - GUIDE D'UTILISATION - Niveau Débutant
- Introduction
- II. C'est quoi le shell ?
- III. Comment accéder à la ligne de commande
- IV. Les consoles virtuelles
- V. Connexion dans une console virtuelle
- VI. L'invite de commande du shell après la connexion
- VII. Revenir au mode graphique depuis une console virtuelle
- VIII. L'environnement shell
- IX. Variables d'environnement à connaître
- X. Fichiers de configuration
- XI. Pourquoi utiliser la ligne de commande ?
- XII. Notions de commande
- XIII. Où se trouvent les commandes ?
- XIV. La documentation (les pages "man")
- XV. La structure d'une page de man
- XVI. Quelques règles pour comprendre SYNOPSYS et/ou OPTIONS
- XVII. Commandes de base
- XVIII. Exécution d'une commande
- XIX. Changer d'identité (changer d'utilisateur)
- XX. La racine
- XXI. Les répertoires "." et ".."
- XXII. Où je suis ? (position dans l'arborescence)
- XXIII. Le chemin absolu
- XXIV. Le chemin relatif
- XXV. Comment se déplacer dans l'arborescence
- XXVI. Historique
- XXVII. La complétion des commandes
- XXVIII. Edition de fichiers (vi,vim)
- XXIX. Les alias
- XXX. Les redirections et les pipelines
- XXXI. Les métacaractères du Shell
- XXXII. Trucs et Astuces
- XXXIII. Midnight Commander (alias mc)
- XXXIV. Erreur: command not found
- XXXV. Erreur: Aucun fichier ou répertoire de ce type
- XXXVI. Erreur: Permission non accordée
- XXXVII. Conseils de rédaction
- XXXVIII. Exécuter un script
Introduction
Appel aux membres CCM
J'invite les membres contributeurs CCM, à faire les corrections nécessaires ainsi que de modifier ou ajouter des trucs utiles pour un débutant en ligne de commande (en évitant quand même les choses trop compliquées, ce n'est pas le but de ce tuto :-)).
J'invite aussi les membres non contributeurs CCM, à me faire part d'éventuelles erreurs et de leurs suggestions par le biais de "Messages Privés".
Merci
Le but de ce tuto est de permettre à un débutant de la ligne de commande de s'en sortir de façon honorable.
Loin d'être complet, ce petit tuto vous permettra de faire connaissance avec le Shell en tant que logiciel et pas en tant que langage de programmation.
Je vais essayer d'être assez court au niveau de chaque chapitre (des explications concises et claires), en revanche ce tuto risque d'être assez long, d'où l'idée de créer plusieurs chapitres.
Il n'est pas nécessaire de parcourir le tuto du début à la fin. Vous pouvez accéder directement au chapitre qui vous intéresse en fonction de vos besoins.
II. C'est quoi le shell ?
Pour avoir une réponse plus exacte je vous recommande de visiter ce site SHELL
Le shell c'est un programme qui se trouve dans le répertoire /bin.
On distingue plusieurs shells
- le /bin/sh shell Bourne - le /bin/bash shell Bourne Again SHell - le /bin/csh C shell - le /bin/ksh Korn shell - le /bin/tcsh C shell amélioré - le /bin/zsh/ Z shell
La suite de ce tutoriel traite uniquement shell du shell bash qui est le shell par défaut pour les distributions GNU/Linux.
Le shell permet d'exécuter des commandes, d'explorer l'arborescence du système, de créer, d'éditer et de supprimer des fichiers, etc.
III. Comment accéder à la ligne de commande
Pour accéder à la ligne de commande, il est possible d'utiliser un terminal (xterm, kterm, gterm) ou encore konsole.
kterm - est un terminal émulateur multilingue basé sur le xterm.
Les différences principales entre kterm et xterm sont :
- la possibilité de traiter le texte multilingue codé dans ISO2022, * montrer le texte coloré (Voir man kterm).
Pour ce faire, deux possibilités sont offertes :
- utiliser le menu du bureau (Gnome, Kde, etc.). Il s'agit de la méthode conseillée.
- utiliser le menu lancer une application. Dans la fenêtre ainsi ouverte, taper le nom de terminal et valider. La fenêtre lancer une application peut être ouverte avec Alt+F2
- Utiliser les consoles virtuelles (il y en a 6).
IV. Les consoles virtuelles
La console virtuelle (tty1 à tty6) est un écran noir où une invite de commande apparaît, de la forme login :
Depuis l'interface graphique, il est possible de se connecter à une console virtuelle en utilisant la combinaison de touches Ctrl+Alt+FN, où N est un chiffre de 1 à 6
Exemple : Accéder à la console 3 depuis l'interface graphique
CTRL+ALT+F3
Une fois dans une console virtuelle, la navigation entre les différentes consoles virtuelles se fait avec la combinaison de touches Alt+FN, où N est un chiffre de 1 à 6
V. Connexion dans une console virtuelle
A l'invite login:, saisir l'identifiant (login) de l'utilisateur, puis valider en appuyant sur Entrée, l'invite Password: s'affichera. Saisir le mot de passe de l'utilisateur et valider.
- le mot de passe n'est pas affiché à l'écran pour des raisons de sécurité. Le fait de ne pas voir à l'écran ce que vous tapez, ne doit pas vous inquiéter.
- Si le mot de passe est valide, une invite de commande comme suite doit s'afficher, indiquant que la connexion a réussi
Exemple:
VI. L'invite de commande du shell après la connexion
L'invite de commande (ou prompt) du shell a en général la forme suivante :
nom@machine ~ $
- nom - représente l'identifiant de l'utilisateur connecté
- machine- représente le nom de la machine
- ~ est un raccourci qui signifie le répertoire personnel /home/utilisateur
- $ signifie que vous êtes connecté en tant qu'utilisateur
Si au lieu de $ le signe # apparaît, alorsvous êtes connecté en tant que superutilisateur (root).
Gardez à l'ésprit que les systèmes Gnu/Linux utilisent par convention # pour root et $ pour un utilisateur autre que root.
Ce comportement peut être changé en modifiant la variable d'environnement PS1, mais cela est vivement déconseillé!
VII. Revenir au mode graphique depuis une console virtuelle
Pour revenir au mode graphique depuis une console virtuelle, utiliser la combinaison de touches ALT+F7
VIII. L'environnement shell
Après connexion, l'utilisateur est connecté dans son environnement. Cela signifie que le shell met à sa disposition des variables d'environnement, c'est-à-dire un conteneur mémoire dans lequel des données sont stockées.
Pour afficher le contenu d'une variable d'environnement, la commande echo $NOM_VARIABLE peut être utilisée.
Le nom des variables d'environnement est par convention en majuscules, il est donc nécessaire de respecter la casse.
IX. Variables d'environnement à connaître
HOME, USER, GROUPS, UID, PWD, SHELL, PATH, HOSTNAME
- HOME contient le répertoire d'utilisateur
- USER contient le login d'utilisateur
- PWD contient le répertoire courant
- SHELL contient le nom du shell de connexion
- PATH contient la liste des répertoires où se trouvent les commandes que l'utilisateur peut exécuter
- HOSTNAME contient le nom de la machine
- HISTSIZE contient la taille maximale des commandes exécutées contenues dans le fichier historique
- PS1 contient les paramètres d'affichage de l'invite de commande (le prompt)
Exemple d'affichage :
La commande set permet d'afficher les variables et leur contenu.
X. Fichiers de configuration
Au moment de la connexion, dans une console virtuelle ou à l'ouverture d'un terminal en mode graphique, le shell utilise des informations qui se trouvent dans certains fichiers (.bashrc, .bash_profile, etc)
Le comportement du shell peut être modifié en éditant ces fichiers.
Le fichier .bashrc est par exemple utilisé dans le chapitre sur les alias.
Pour ce qui est de la configuration de votre shell vous devez attendre un peu, ça ne sera pas pour tout de suite. Vous allez apprendre à le faire avec le temps, donc ne soyez pas si impatients.
XI. Pourquoi utiliser la ligne de commande ?
Beaucoup de solutions sont données en ligne de commande, non pas que GNU/Linux n'ait pas d'interface graphique, mais pour certaines tâches, l'utilisation de la ligne de commande s'avère bien plus pratique et plus puissante que la fameuse souris.
XII. Notions de commande
Une commande est un fichier exécutable. L'exécution d'une commande peut être différente suivant le cas.
Les commandes utilisées dans ce chapitre sont données à titre d'exemple, donc ne vous obstinez pas à les comprendre si jamais vous aviez du mal avec certaines d'entre elles. Les commandes de base sont détaillées ultérieurement.
Exemple : la commande ls
La commande ls affiche le contenu d'un répertoire. Voir man ls pour plus de détails.
- sans argument et sans option
- sans argument avec une ou plusieurs option(s)
- avec argument
- avec argument et avec une ou plusieurs option(s)
XIII. Où se trouvent les commandes ?
Les commandes que vous pouvez exécuter depuis votre terminal se trouvent dans certains répertoires de votre système.
La variable PATH (en français : "chemin") contient une liste de répertoires qui contiennent les commandes accessibles. Pour avoir accès à toutes les commandes il faut généralement être root.
Pour trouver l'emplacement d'une commande, on utilise "whereis" (en français "où est") :
ou encore "which" (en français "lequel•laquelle•lesquels•lesquelles•que•qui•ce qui•ce que•quel•quelle ") :
La différence entre whereis et which
- whereis - recherche les fichiers exécutatbles, les sources et les pages de manuel d'une commande
- which - cherche dans la variable PATH les fichiers exécutables
Exemple : recherche de l'existance de la commande iptables avec which
1. l'utilisateur yogi cherche si la commande iptables existe sur le système, le résultat pour lui est NON
2. on vérifie en tant que root
En réalité la commande iptables existe sur le système dans /sbin. Le répertoire /sbin ne se trouvant pas dans le PATH d'utilisateur yogi, c'est normal que which ne retourne pas un résultat.
En bref whereis est plus rassurante.
XIV. La documentation (les pages "man")
Accéder à la documentation en ligne de commande
man commande
man N commande
N - le numéro de la page man (vous le verrez en haut à gauche)
En règle générale dans la partie SEE ALSO d'une page de "man", vous trouverez la liste des commandes qu'il est conseillé de consulter ayant un rapport direct avec la commande dont vous lisez le manuel.
Exemples :
1. exécution de la commande man crontab
2. l'invite de commande (le prompt) va disparaître et la page man sera affichée
Regardez la partie SEE ALSO et vous remarquerez les pages qui sont conseillées de consulter. Cela veut dire qu'on peut taper :
man 5 crontab
man 8 cron
3. la touche "q" pour quitter la page man et revenir à l'invite de commande (prompt)
Pour obtenir la description succincte d'une commande, on va utiliser l'option "-f"
man -f commande
whatis commande
Pour connaître les rubriques qui contiennent dans leur présentation un mot clé, l'option "-k" :
man -k commande
XV. La structure d'une page de man
COMMAND(1) Manuel de l'utilisateur Linux COMMAND(1) NAME commande - résumé de l'action de la commande SYNOPSYS <syntaxe complète de la commande> DESCRIPTION Des explications concernant l'exécution de la commande OPTIONS Liste des options disponibles et ce qu'elles font FILES Les fichiers utilisés par la commande SEE ALSO commande_cousine(1), commande_frere(5), etc. BUGS les bugs existants dans la commande AUTHOR Le nom de l'auteur
XVI. Quelques règles pour comprendre SYNOPSYS et/ou OPTIONS
- Tout texte isolé, sans [] (crochet), {} (accolade), <> (chevron), est à taper tel qu'il apparaît
- le texte entre crochets [] est facultatif
- le texte entre accolades {} contient les choix à faire.
les choix sont séparées par | (pipe) ou par une virgule ,
commande -{a|b} veut dire commande -a ou commande -b mais pas commande -ab
- le texte entre chevrons <> doit être remplacé par le texte approprié
- les parenthèses (...), utilisées pour les paramètres tels que les noms de fichiers
- les crochets [] et les chevrons <> peuvent être combinés
[<nom_fichier>] - facultatif mais si vous les utilisez alors il faut écrire le nom du fichier
- les crochets [] et les accolades {} peuvent être combinés
[--option={a|b|c}]
XVII. Commandes de base
cat - Lit (concatène) un ou plusieurs fichier(s), affichage sur la sortie standard cd - ChangeDirectory, change de répertoire chmod - CHangeMODe - change le mode d'accès (permissions d'accès) d'un ou plusieurs fichier(s) chown - CHangeOWNer - change le propriétaire d'un ou de plusieurs fichier(s) cp - copier des fichiers crontab - planification de tâches cut - Retire des parties précises de texte dans chaque ligne d'un fichier date -Affiche la date selon le format demandé dd - DevicetoDevice - Recopie octet par octet tout ou partie du contenu d'un périphérique (habituellement de stockage) vers un autre péripherique. df - affichage de la quantité d'espace libre disponible sur tous les systèmes de fichiers du - DiksUsage - l'utilisation de disque echo - Affiche du texte sur la sortie standard (à l'écran) exit - arrête l'exécution du shell find - recherche de fichiers fsck - FileSystemChecK - vérification d'intégralité de système de fichiers grep - recherche dans un ou plusieurs fichiers les lignes qui correspondent à un motif groupadd- Ajouter un groupe d'utilisateurs gunzip - décompression de fichiers gzip - compression de fichiers head - affiche les premières lignes (par défaut 10) d'un fichier help - affiche une aide sur les commandes internes de bash kill - envoyer un signal à un processus less - programme d'affichage à l'écran ln - création de liens ls - liste le contenu des répertoires man - affiche les pages de manuel mkdir - MaKeDIRectory - crée un répertoire mkfs - MaKeFileSystem - création de systèmes de fichiers more - programme d'affichage à l'écran mount - monter un système de fichiers mv - déplacer, renommer un fichier ps - affiche les processus en cours d'exécution pwd - Print name of current/working directory - affiche le chemin complet du repertoire courant rm - suppression de fichiers rmdir -Remove empty directories - suppression d'un dossier vide tail - affiche les 10 dernières lignes d'un fichier tar - création d'archives su - Substitute User identity ou Switch User - prendre l'identité d'un utilisateur uname - Affiche des informations sur le système. useradd - ajouter un utilisateur whereis - localiser une commande
XVIII. Exécution d'une commande
Il y a plusieurs façons d'exécuter une commande.
- en utilisant tout simplement son nom
- en utilisant le chemin absolu
- en utilisant le chemin relatif
- utilisation des alias (pratique pour les commandes employées souvent et qui sont longues)
Une commande peut être exécutée en arrière plan en utilisant l'esperluette (&) après le nom de la commande.
L'exécution d'une commande en arrière plan permet de redonner la main au shell après l'exécution.
Exemple: lancement de firefox depuis la ligne de commande
XIX. Changer d'identité (changer d'utilisateur)
Depuis votre shell vous avez la possibilité de prendre l'identité d'un autre utilisateur existant sur votre système, y compris l'utilisateur "root".
Pour faire cela vous avez à votre disposition la commande su ou su -
Regarder utiliser la commande su pour plus de détails.
XX. La racine
Dans les systèmes de la famille Unix, la racine représente le sommet de l'arborescence des répertoires.
Elle est représentée par le caractère / (slash) et signifie "root" (racine en français)
Tous les répertoires de votre système sont liés à la racine de façon directe ou indirecte.
XXI. Les répertoires "." et ".."
- . indique le répertoire courant
- .. indique le répertoire parent
XXII. Où je suis ? (position dans l'arborescence)
Une chose très importante à savoir quand on est connecté dans un shell, c'est de savoir où on se trouve dans l'arborescence
La commande pwd (PrintWorkingDirectory) affiche votre localisation dans l'arborescence.
XXIII. Le chemin absolu
Le chemin absolu représente l'arborescence complète de fichiers, en partant de la racine
Exemple :
Le fichier b.txt se trouve dans /home/user/doc/text
Vous vous trouvez dans /home/user/ascii
Le chemin absolu vers b.txt est /home/user/doc/text/b.txt
Quelque soit votre localisation dans l'arborescence l'utilisation du chemin absolu est le moyen le plus sûr pour accéder au fichier désiré.
XXIV. Le chemin relatif
Le chemin relatif pour accéder à un fichier c'est l'arborescence rapporté à votre localisation dans le shell.
On utilise les notations . et/ou ..
. nous permet de descendre dans l'arborescence du répertoire courant
.. nous permet dans un 1er temps de monter en arborescence dans le but d'atteindre d'autres répertoires
Exemple : le répertoire courant .
Le fichier b.txt se trouve dans /home/user/doc/text
Vous vous trouvez dans /home/user
Le chemin relatif vers b.txt est ./doc/text/b.txt
Exemple : le répertoire parent ..
Le fichier b.txt se trouve dans /home/user/doc/text
Vous vous trouvez dans /home/user/ascii
Le chemin relatif vers b.txt est ../doc/text/b.txt
Le répertoire ascii se trouve dans /home/yogi donc en écrivant .. je vais utiliser le répertoire parent /home/yogi comme point de départ puis ensuite je vais dans doc/text (remarqué que je n'ai pas dit /doc/text - qui aurait lié doc de la racine / )
XXV. Comment se déplacer dans l'arborescence
Pour ce déplacer dans l'arborescence utiliser la commande cd
cd /chemin/vers/répertoire
Avec pwd vous pouvez vérifier votre nouvelle localisation dans la racine
XXVI. Historique
Les commandes exécutées sont enregistrées dans un historique.
La variable HISTSIZE contient le nombre maximal des commandes à enregistrer.
Vous pouvez accéder à l'historique avec la commande history
history [n] | less
- n - l'option n permet d'afficher les n dernières commandes (facultatif)
- less - la commande "less" vous permet de naviguer dans l'historique
- les flêches haut et bas vous permettent de naviguer dans l'historique
- !n - permet d'exécuter la commande correspondant au numéro "n" dans la liste sans avoir à la retaper
XXVII. La complétion des commandes
Tapez une commande dans un terminal n'est pas une chose toujours facile.
Malgré ça, ne vous inquiétez pas trop. Le shell vous permet la complétion des commandes.
Exemple: commande tail en utilisant le chemin absolu
- ça suppose que je dois taper /usr/bin/tail
La complétion nous permet de faire des économies en ce qui concerne l'écriture de la commande et dans le même temps la sûreté de la syntaxe.
La complétion s'obtient en utilisant la touche TAB
Pour ça on va commencer avec le 1er caractère...
- Je tape /u et j'appuie sur TAB
- Le shell va compléter et il va écrire /usr/
- A ce moment j'ajoute un b donc je suis avec /usr/b
- J'appuie de nouveau sur TAB et j'aurai /usr/bin/
- A ce moment j'ajoute ta, donc j'aurai /usr/bin/ta
- J'appuie 2 fois sur TAB
- Le shell sur mon système trouve 4 correspondances
- tac tack tail tasksel
- Je vais continuer et je vais ajouter un i
- donc j'aurai /usr/bin/tai
- J'appuie de nouveau sur TAB
- et j'obtiens /usr/bin/tail
- Le shell sur mon système trouve 4 correspondances
ls /u + TAB + b + TAB + ta + TAB + TAB + i + TAB
C'est vrai qu'en expliquant on a l'impression que c'est long.
Rassurez vous, c'est très rapide, même si vous tapez avec un seul doigt :-)
XXVIII. Edition de fichiers (vi,vim)
L'éditeur vi
Très utile surtout quand on a un problème avec le mode graphique.
Etape I - TRÈS FORTEMENT CONSEILLE
Sauvegarde du fichier original, on utilise la commande "cp (copie) suivie du fichier source lui-même suivi du fichier cible (ici inexistant), on décide de rajouter ".original" à la fin du nom de fichier pour distinguer la sauvegarde de son fichier :
Etape II - Ouverture du fichier
Etape III - Édition du fichier
- appuyez sur la touche i pour passer en mode insertion
Dans le coin bas gauche vous verrez --INSERTION--
- utilisez les flêches (droite, gauche, haut, bas) ou Pg Suiv. et Pg Prec. pour naviguer dans le fichier
- l'insertion des caractères se fait au dessus du curseur avec un déplacement à droite du curseur
- la touche suppression permet de supprimer le caractère se trouvant au dessus du curseur
Etape IV - Fin de l'édition du fichier
Appuyez sur la touche Echap dès que vous avez fini l'édition.
--INSERTION-- va disparaître
Etape V - Enregistrement des modifications et quitter vi
- appuyez sur la touche : (vous devez les voir apparaître dans le coin en bas à gauche)
- écrivez wq (pour WriteQuit)
- appuyez sur "Entrée"
Voilà pour l'édition en ligne de commande avec vi ou vim
XXIX. Les alias
L'utilisation des alias est très pratique pour les commandes longues qui sont utilisées régulièrement. Ca évite de les retaper.
L'utilisation excessive des alias peut vous faire oublier les commandes et leurs options.
A vous de gérer l'utilisation des alias.
Les alias on les écrit dans le fichier .bashrc de la manière suivante
(voir le chapitre XXVIII Edition de fichiers (vi, vim))
alias nom='commande'
Une fois le fichier /home/user/.bashrc édité, tapez
source /home/user/.bashrc
pour prendre en compte immédiatement les alias.
La commande alias affiche les alias existants
XXX. Les redirections et les pipelines
D'abord on va commencer avec une petite explication concernant les descripteurs des "entrées - sorties" :
- tout ce que vous écrivez dans le shell s'appelle STDIN (STandarDINput)
- tout ce que vous voyez à l'écran peut être :
- STDOUT (STandarDOUTput)
- STDERR (STandarDERRor)
Ces descripteurs sont numérotés comme suit :
0: entrée standard (STDIN) <---------------- clavier Processus 1: sortie standard (STDOUT) ---------------> écran 2: sortie erreurs (STDERR) ----------------> écran
Les redirections
Ce quoi une redirection ?
C'est la possibilité de diriger le résultat d'une commande en utilisant d'autres destinations que les descripteurs standards.
Pour réaliser une redirection on utilise :
commande > fichier - redirection en mode écriture vers le fichier
le fichier est créé s'il n'existe pas
son contenu sera remplacé par le nouveau si le fichier existe déjà
commande >> fichier - redirection en mode ajout vers le fichier
le fichier est créé s'il n'existe pas
le résultat sera ajouté à la fin de fichier
commande < fichier - la commande lit depuis le fichier
Exemples de redirections :
- envoyer le contenu de fichier1 dans le fichier2
si le fichier2 existe son contenu d'origine sera supprimé, le fichier2 est créé s'il n'existe pas
- envoyer le contenu de fichier1 dans le fichier2 - mode ajout
si le fichier2 existe, le contenu du fichier1 est ajouté à la fin de fichier2, si le fichier2 n'existe pas, il sera créé
- recherche dans la racine le fichier appelé fichier.txt, les erreurs au lieu d'être envoyées sur STDERR (à l'écran) sont envoyées dans /dev/null (sorte de poubelle sans fin)
- recherche dans la racine le fichier appellé fichier.txt, les erreurs au lieu d'être envoyées sur STDERR (à l'écran) sont envoyées dans le fichiers erreur.txt
Les pipelines
commande1 | commande2 - le résultat de la commande1 est utilisé par la commande2 commande1 & commande2 - les commandes sont exécutées simultanément, commande1 s'exécutant en arrière-plan commande1 && commande2 - si la commande1 réussi la commande2 est executée commande1 || commande2 - la commande2 s'exécute seulement si la commande1 échoue commande1;commande2 - les commandes sont exécutées dans l'ordre
Exemple de pipelines
- le tube | (pipe)
Dans un premier temps j'exécute perl -ne 'print unless /^\s*$/' guideshell dans le but d'afficher le fichier à l'écran, les lignes vides étant eliminées.
Au lieu d'afficher à l'écran j'utilise | pour passer le résultat à la commande wc qui va compter le nombre de lignes de ce fichier
- le parallélisme &
Les 2 commandes s'exécutent simultanément.
- la dépendance &&
Vous remarquez que dans le 1er cas les 2 commandes s'exécutent.
En revanche dans le 2ème cas j'ai fait volontairement une erreur de syntaxe pour la 1ère commande.
Le shell ne regarde même pas le 2ème commande et il s'arrête en nous disant que ech n'est pas une commande connue.
- l'alternative ||
Dans le 1èr cas vous remarquez que seulement la 1ère commande s'exécute.
Dans le 2ème cas le shell affiche une erreur pour la 1ère commande mais il exécute quand même la 2ème.
- le séquencement ;
echo a s'exécute
j'attends 1 seconde
echo b s'exécute
j'attends 2 secondes
echo c s'exécute
XXXI. Les métacaractères du Shell
Pour facilier la saisie des commandes le shell met à votre dispositon des métacaractères, appelés également caractères génériques ou jokers.
* - correspond à n'importe quel caractère et nombre de caractère ? - correspond à un seul caractère [...] - correspond à un caractère se trouvant entre les crochets
Avec les crochets on peut aussi utiliser des intervalles.
[0-9] - tout caractère compris entre 0 et 9 [a-zA-Z] - toute lettre comprise dans l'intervalle (minuscule et majuscule)
XXXII. Trucs et Astuces
cd : revenir dans le répertoire personnel
cd - : revenir dans le répertoire précédent (uniquement si vous avez exécuter un cd)
Ctrl+l : effacer l'écran
Ctrl+c : arrêt d'une commande
Ctrl+z : suspendre(mettre en pause) une commande
CTRL+t : corréction d'une erreur de frappe en inversant 2 lettres
Ctrl+a : aller au début de ligne
Ctrl+e : aller à la fin de ligne
Ctrl+s : interruption de la sortie de terminal (masquer la saisie)
Ctrl+q : annuler l'interruption de la sortie (afficher la saisie)
Ctrl+u : efface tout à gauche du curseur
Ctrl+w : efface le mot à gauche du curseur
Ctrl+k : efface le mot à droite du curseur
Ctrl+y : coller la saisie précédente
Ctrl+d : efface le caractère courant, si la ligne est vide deconnexion
Alt+b : se déplacer en avant, mot par mot dans la ligne de commande
Alt+f : se déplacer en arrière mot par mot dans la ligne de commande
Alt+d : efface le mot suivant
Alt+t : échange le mot courant avec le mot précédent
Alt+c : met en majuscule la lettre courante, tout le reste dut mot courant en minuscules, puis se deplace au mot suivant
Alt+l : met en majuscules à partir de la lettre courante jusqu'à la fin de mot, puis se deplace au mot suivant
Alt+u : met en minuscules à partir de la lettre courante jusqu'à la fin de mot, puis se deplace au mot suivant
Alt+Backspace : effacer le mot précédent (équivalent Ctrl+w)
XXXIII. Midnight Commander (alias mc)
Midnight Commander - gestionnaire en ligne de commandes et une capture d'écran
Cet utilitaire vous permet de naviguer, créer, éditer, supprimer des fichiers,etc.
Avec mc vous pouvez modifier des droits, changer de propriétaire, faire des recherches, vous connecter à un serveur ftp, etc...
mc peut être utilisé en tant qu'explorateur
XXXIV. Erreur: command not found
Lisez ce tuto (Chapitre IV.3) La variable d'environnement PATH
Une autre origine de cette erreur : vous n'avez pas respecté la casse des caractères
Exemple : Ls au lieu de ls
XXXV. Erreur: Aucun fichier ou répertoire de ce type
Erreur affichée par le shell quand vous essayez d'exécuter une commande sur un fichier qui n'existe pas dans le chemin précisé.
Solutions
- trouvez le fichier avec la commande find pour savoir s'il existe sur le disque afin, si c'est le cas, de connaître son véritable chemin.
XXXVI. Erreur: Permission non accordée
C'est un problème de droits d'accès.
Lisez ce tuto pour les droits d'accès
XXXVII. Conseils de rédaction
Le shell est très exigeant concernant la rédaction de commandes.
Les caractères qui ont un sens spécial pour le shell doivent être échappés pour obtenir le caractère littéral.
Caractères qui ont un sens spécial pour le shell :
- l'espace
- le point virgule ;
- le slash /
- l'antislash \
- le caractère | (pipe)
- l'esperluette &
- le point .
- les apostrophes simples ( ' ) et doubles ( " )
En général il faut faire attention aux caractères non-alphanumériques.
1. sensibilité à la casse des caractères
Si la commande s'appelle ls alors soyez sûr que Ls ne va pas fonctionner.
Pareil pour le nom de fichiers et/ou répertoires.
2. l'espace
Prenons l'exemple d'un fichier qui s'appelle : mon fichier.txt
Si vous taper ls -l mon fichier.txt pour voir les attributs de ce fichier alors, prenez garde, puisque vous n'obtiendrez pas le résultat voulu.
Pourquoi?
Par ce que le Shell va lire : Afficher les attributs des fichiers "mon" et "fichier.txt"
Pour obliger le Shell à afficher ce que l'on souhaite, on va utiliser ce qu'il met à notre disposition
ls -l mon\ fichier.txt - syntaxe ok (l'antislash permet de lire l'espace comme un caractère et pas comme un séparateur d'arguments de la commande)
ls -l 'mon fichier.txt' - syntaxe ok (les apostrophes simples traite chaque caractère de façon littérale)
QUESTION : Comment puis-je lire une apostrophe simple de façon littérale entre 2 apostrophes simples ?
L'espace a aussi pour rôle de séparer les arguments en ligne de commande.
Un simple espace utilisé dans un endroit où il ne faut pas peut être fatal pour le système entier
Exemple : suppression de la racine à cause d'un simple espace
Scénario :
Le root veut supprimer un certain dossier . Pour ça il va utiliser la commande rm avec les options f (force) et R (recursif).
Le dossier à supprimmer s'appelle a_supprimer et se trouve dans /home/yogi/a_supprimer
a. commande correcte
b. commande incorrecte (erreur de frappe) => système supprimé
Vous remarquez que dans le 2ème cas, par erreur j'ai tapé un espace entre / et home.
Que ce passe-t-il?
Le shell va croire que la commande rm doit supprimer d'abord la racine / et puis home/yogi/a_supprimer.
Je dois vous dire que vous venez d'effacer toutes les données de votre système.
Que "home/yogi/a_supprimmer" n'existe pas, on s'en f**** complétement, votre système n'existe plus.
DONC ATTENTION A CE QUE VOUS TAPER DANS LE SHELL !!!
Une solution pour éviter tout ça c'est d'UTILISER LA COMPLETION des commandes.
Si vous tapez / et ensuite la touche TAB 2 fois, plusieurs choix s'afficheront à l'écran. Normalement ce sont les répertoires de la racine : boot,bin...home...,var.
Vous n'avez qu'à ajouter un h pour home et de nouveau TAB 2 fois et ainsi de suite.
PRENEZ LE TEMPS DE LIRE CET AVERTISSEMENT POUR NE PAS REGRETER PLUS TARD!!!
Un autre exemple avec l'espace
Pour reconnaître l'espace en tant que caractère et pas en tant que séparateur de paramètres il faut le protéger (mettre un antislash devant)
Créer un fichier vide qui s'appelle "aa bb"
On remarque que le résultat obtenu n'est pas conforme à ce qu'on voulait.
On voulait avoir un seul fichier aa bb et pas le fichier aa et le fichier bb
Pourquoi a-t-on obtenu ça?
Puisque le shell, quand on a tapé
touch aa bb
,
a compris qu'il fallait créer un fichier aa et un fichier bb
Corrigeons ça :
Maintenant vous allez dire : Mais on n'a pas créé aa bb mais aa\ bb !!!
En réalité vous avez créé aa bb
Le caractère \ permet de reconnaître l'espace en tant que caractère littéral.
D'ailleurs la commande ls -l vous montre bien l'existence de fichier aa bb
Au lieu d'antislash vous pouvez utiliser les apostrophes simples touch 'aa bb'
Que peut-on retenir de tout cela?
Chaque fois quand vous voulez utiliser des caractères non alphanumériques, tel que $, espace, \, etc. en tant que caractère littéral alors il faut les antislasher ou les mettres entre des apostrophes simples.
3. Les commandes longues qui tiennent sur plus d'une ligne
Si la commande devienne trop longue vous pouvez passer à la ligne suivante en utilisant le caractère \