Guide d'utilisation du Shell pour débutant

Décembre 2016


SHELL BASH - GUIDE D'UTILISATION - Niveau Débutant





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

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"


Revenir dans le terminal


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é


Explication :

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 \

XXXVIII. Exécuter un script


shell executer un script

A voir également :

Ce document intitulé «  Guide d'utilisation du Shell pour débutant  » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.