Howtos GNU/Linux .: kozaki :. Howtos GNU/Linux

consoleCommandes et Shell sous Linux : débuter

Un tableau sur les commandes de base, suivi de guides complémentaires plus fournis, pour débuter ou vous répérer en mode console sous Linux :)

Commandes pour débuter

Bon c'est pas tout ça, voici les commandes de shell (console) de base sous Linux :

Le tableau est l'oeuvre (légèrement retouchée) de Jean-Christophe, Marc et Anne de lea-linux.org. Certaines commandes sont détaillées sur la page Détail des commandes de base sous linux, avec quelques astuces pratiques.

Pour vous repérer :

  • Linux est sensible à la casse, c'est à dire qu'il distingue les majuscules des minuscules. Ainsi, si je vous dit que la commande est 'mkdir', ce n'est pas la peine d'essayer MKDIR ou mKdiR, cela ne fonctionnera pas. Il en va de même pour les noms de fichiers et de répertoires.
  • De plus, sous Unix, les dossiers (càd. les répertoires, les chemins) sont séparés par des slash : écrivez /etc/X11/xorg.conf (et jamais etc\X11\xorg.conf par pitié :)
  • Répertoires spéciaux :
      . représente le répertoire courant (ou actuel, où on est),
      .. représente le répertoire parent (celui au-dessus dans l'arborescence).
      ~ représente le répertoire maison (home) de l'utilisateur.
  • Fichiers cachés : sous les systèmes dérivés d'Unix, les fichiers cachés commencent par un point. Par exemple, ~/.bashrc est un fichier caché, dans le répertoire maison de l'utilisateur (et il contient la configuration éventuellement personnalisée du shell de l'utilisateur).
Commande shell équivalent M$Dos À quoi ça sert Exemple
cd cd va dans le répertoire indiqué.

cd .. : va dans le répertoire parent (au-dessus) du répertoire courant

cd /home/user/.nsmail/ : va dans ce répertoire
cd ~/.nsmail/ : m^eme chose.

ls dir affiche le contenu d'un répertoire

ls affiche le contenu du répertoire courant
ls -l affiche le contenu du répertoire courant de manière détaillée
ls -a /home/user (ou ls -la ~ affiche le contenu du répertoire de l'utilisateur avec les fichiers cachés.

cp copy
xcopy
copie un ou plusieurs fichiers

cp toto /tmp copie le fichier toto dans le répertoire /tmp
cp toto titi copie le fichier toto sur/à la place du fichier titi
cp -R ~/ /tmp/bak copie le répertoire /home/user ainsi que tout ce qu'il contient dans /tmp/bak

rm del efface un ou plusieurs fichiers

rm toto titi efface les fichiers toto et titi
rm -f toto titi efface les fichiers toto et titi sans demander confirmation

rm -rf deltree efface un répertoire et son contenu

rm -rf /dossiernonvide/* efface (sans demander de confirmation) tous les fichiers et répertoire de /dossiernonvide

mkdir md crée un répertoire

mkdir ~/mes\ documents crée le répertoire mes documents dans le sous répertoire /home/user
L'emploi de l'anté-slash \ est nécessaire en raison de l'espace entre "mes" et "documents".

rmdir rm efface un répertoire s'il est vide

rmdir ~/.nsmail efface le répertoire .nsmail de /home/user si celui-ci est vide.

mv ren
move
déplace ou renomme  un ou des fichiers

mv tata titi renomme tata en titi
mv * *.bak ne fonctionne pas !!!!
mv * /tmp/bak déplace tous les fichiers du répertoire courant vers le répertoire /tmp/bak.

find dir -s trouve un fichier répondant à certains critères

find /home -name "*blabla*" trouve tous les fichiers contenant le mot blabla dans leur nom et se trouvant dans le répertoire /home.

locate dir -s trouve un fichier d'après son nom

locate blabla tous les fichiers contenant le mot blabla dans leur nom complet (avec le répertoire) : à la différence de find, locate trouve ses informations dans une base de donnée créée par updatedb.

man help affiche l'aide concernant une commande particulière

man ls affiche l'aide (page de manuel) de la commnade ls. On quitte man en appuyant sur la touche q.

chmod pas d'
équivalent
modifie les permissions d'un fichier

chmod o+r /home/user autorise les autres (o=other) (ie: ceux qui ne sont ni le propriétaire, ni membre du groupe propriétaire) à lire (r=read) le répertoire /home/user
chmod a+rw ~/unfichier autorise tout le monde (a=all) à lire et écrire (w=write) dans le fichier /home/user/unfichier.

chown pas d'
équivalent
modifie le propriétaire d'un fichier

chown user unfichier rend user propriétaire de unfichier.

chgrp pas d'
équivalent
modifie le groupe proprétaire d'un fichier

chgrp -R nobody /home/httpd rend le groupe : nobody (un groupe ayant très peu de droits sur un système linux) propriétaire de /home/httpd ainsi que tout les fichiers qu'il contient (-R).

ln -s pas d'
équivalent
crée un lien vers un fichier

ln -s /dev/fd0 /dev/disquette crée un lien vers /dev/fd0 (le lecteur de disquette) nommé /dev/disquette. La manipulation de /dev/fd0 et /dev/disquette est équivalente, sauf l'effacement.

grep pas d'
équivalent
recherche une chaine dans un fichier (en fait recherche une expression régulière dans plusieurs fichiers)

grep chaine *.txt recherche le texte 'chaine' dans tous les fichier se terminant par .txt.

which pas d'
équivalent
trouve le répertoire dans lequel se trouve un commande

which emacs retourne le nom du répertoire dans lequel se trouve la commande emacs.

cat type affiche un fichier à l'écran

cat ~/.bashrc affiche le contenu du fichier ~/.bashrc

La ligne de commandes sous Linux : Guides

Bouquins, manuels

Un bouquin papier n'a pas ces utiles commentaires d'utilisateurs, de forum associé (quoique ;), n'est pas mis à jour et ne permet pas d'y trouver un mot clé facilement comme une page ou un site web ; il est mal adapté aux cas particuliers... OK mais il est stable, permet d'être mieux guidé que NNN sources web, d'anoter les pages, de lire au soleil ou de de le balancer quand on pige plus le schmilblick... Et il permet de rétribuer un auteur dont on apprécie le blog ou le style.
Difficile d'être objectif sur le choix des bouquins ici comme ailleurs, mais bon en voici au moins un

  • Le shell bash : Exploitez et programmez votre shell, de Cameron Newham & Bill Rosenblatt, éd. O'Reilly. ~40 €
    Ce livre permet une approche pratique et une exploitation du shell bash (le plus répandu).
    eyrolles.com

Taper ses premières commandes sous Linux

Quelle est la structure générale d'une commande ?

L'unité de base d'une commande simple ou complexe, c'est sa structure :
commande argument1 argument2 ...
Ici, commande est un ordre bien précis, et les arguments sont des précisions données à l'ordre.
Ainsi, quand on tape ls -l fichier.txt, l'ordre est ls, et on lui donne comme consignes supplémentaires d'utiliser un format long (ou détaillé) -l, et de ne lister que le fichier fichier.txt.
Il en va de même pour la commande : firefox [adresse_internet].
On peut construire des commandes plus évoluées à partir de ce schéma élémentaire.

Aller plus loin / sources :
  - http://www.normalesup.org/~george/old-site/info/shell.html
  - Le paragraphe "Syntaxe générale des commandes" de l'article Ligne de commande de wikipedia

Le shell ou le retour du C:\> ! (et les commandes)

La suite de l'article de Jean-Christophe, Marc et Anne sur lea-linux.org est vraiment à lire si vous débutez avec la ligne de commande. En effet on y voit comment utiliser :

  • Jokers : ? et * :
    On utilise les caractères ? et * pour représenter (remplacer) des caractères quelconques dans les noms de fichiers et de répertoires.
    ? représente un seul caractère, tandis que * en représente un nombre quelconque. Par exemple ?ierre.txt représente tout fichier commençant par un caractère quelconque et se poursuivant par "ierre.txt" (comme pierre, Pierre et lierre) ; *.jpg représente tous les fichiers se terminant par jpg ; "*toto*" tous les fichiers contenant "toto". Oui vous avez bien vu : on peut mettre plusieurs étoiles en même temps !!! Il faut également savoir que c'est le shell qui interprète ces caractères avant de transmettre (càd. d'éxécuter) la ligne de commande. Par exemple, si vous tapez : rm -Rf *.tmp, le shell transformera cette ligne de commande en : rm truc1.tmp truc2.tmp truc3.tmp.
    Jokers avancés : []
    Vous pouvez aussi utiliser les crochets pour spécifier des caractères : [a] signifie : égal à 'a'. Exemple : rm *[a]* efface tous les fichiers contenant la lettre 'a'. [!a] signifie : différent de 'a'. Exemple : rm *[!a]* efface tous les fichiers, sauf ceux contenant la lettre 'a'. [abc] signifie : l'un des caractères a, b ou c. Exemple : rm [abc]*.tmp efface tous les fichiers commençant par a, b ou c. [a-l] : signifie : tous les caractères compris entre a et l. Exemple : rm fic_[a-l]* efface tous les fichiers commençant par fic_ suivi d'une quelconque lettre entre a et l.
  • Options de la commande ls : comment trier sur la date, afficher les fichiers cachés, lire les droits sur un fichier
  • Obtenir des informations sur les commandes ou comment se débrouiller en console sans presque rien y connaître ;)
    La commande apropos : très très utile pour afficher les commandes en rapport avec un mot clé. Exemple :

    $ apropos effacer clear : effacer l'écran du terminal klogctl [syslog] : Lire et/ou effacer les tampons circulaires de messages du noyau rm : Effacer des fichiers syslog : Lire et/ou effacer les tampons circulaires de messages du noyau userdel : Effacer un compte utilisateur et les fichiers associés

  • Afficher des informations sur le système : version de Linux, microprocesseur, RAM, état des partitions...
  • Obtenir des Informations sur les fichiers : Où suis-je, taille d'un répertoire, type d'un fichier...
  • Utiliser les raccourcis :
      - Taper une fois la touche [Tab] permet de compléter automatiquement un nom de programme, de fichier et de répertoire s'il est unique : cd /et[Tab]c/X[Tab]11/ par exemple.
      - Flèches du curseur : vers le haut (ou Ctrl-P) et vers le bas (ou Ctrl-N) permet de remonter et redescendre dans l'historique des commandes, et donc de retrouver toutes les commandes passées précédemment par cet utilisateur. Détails dans "Astuces Shell" ci-dessous.
      - [Ctrl] [C] arrête le processus (ou programme) en cours.
      - [Ctrl] [Alt] [Fn] nous place sur la console virutuelle numéro 'n' (il y a en général 6 consoles virtuelles, la 7è étant réservée au serveur graphique X).
      - [Ctrl] [Alt] [Backspace] permet de tuer X et de revenir soit au gestionnaire d'affichage (et au login graphique), soit au shell. À éviter si possible : il est plus sain de quitter X en se déconnectant proprement.
      - [Ctrl] [Alt] [Del] : Suivant votre configuration, ces touches permettent de rebooter votre ordinateur (commee reboot ou shutdown -r now). Si vous souhaitez juste arrêter votre ordinateur afin de l'éteindre, tapez halt, ou shutdown -h now.
  • L'article passe ensuite à l'utilisation du Shell où il fait toujours merveille... :)

Introduction au shell et commandes

l'enveloppe shell"L'interpréteur de commandes est l'interface (autrement dit l'enveloppe) entre l'utilisateur et le système d'exploitation, d'où son nom anglais «shell», qui signifie «coquille». Le shell est ainsi chargé de faire l'intermédiaire le système d'exploitation et l'utilisateur grâce aux lignes de commandes saisies par ce dernier. Son rôle consiste ainsi à lire la ligne de commande, interpréter sa signification, exécuter la commande, puis retourner le résultat (...)" Comment ça marche démysthifie le shell et l'invite de commande, et explique clairement l'entrée - sortie standard, les redirections ou encore les tubes de communication (pipes).

Utiliser bash pour tous

SAIT (Site d'Aide Informatique de Tian) propose de vous guider quel que soit votre niveau avec cet article.
Les 2 premières phrases expliquent comment taper une commande ; les exemples suivants présentent les alias, les fonctions, variables d'environnement et comment éxécuter (= lancer) un fichier de script en console).
http://www.c-sait.net/cours/bash.php

Astuces lignes de commande

Des fiches pratiques sur les meilleures astuces en ligne de commande rédigées de façon claire par différents utilisateurs de CCM :)

Utilisation de programmes en mode console : présentation et exercices

Au passage, présente les systèmes de fichiers LINUX.
http://www.ac-creteil.fr/reseaux/systemes/linux/

Les commandes fondamentales de Linux

Voir les guides et liens plus détaillés et/ou plus avancés sur la page suivante : Commandes détaillées

Éditer des fichiers en ligne de commande

Ces éditeurs se contrôlent avec le clavier, et ne nécessitent pas de souris (inopérante en mode console)

Modifier des fichiers en mode console : Un bon petit guide simple et à jour pour sortir de X, utiliser vim, et nano

VI : les bases

  • Un résumé bien utile des commandes de VI (quand le site fonctionne ;) :
    http://www.linuxfocus.org/Francais/May2000/article153.shtml
  • Notez que vim (pour VI iMproved) remplace avantageusement VI, surtout si vous débutez avec ce puissant éditeur (il reprend toutes les fonctionnalités de VI et en ajoute de manière à simplifier l'utilisation...)
  • Vim en 3 pages ... : François Poulain de parinux.org propose un guide - synthèse pour Vim :
    "Résumé: Vi Improved est un éditeur très puissant qui a trop de commandes pour pouvoir toutes les énoncer dans un document comme celui-ci, mais l'objectif de ce document est de rassembler l'ensemble des commandes efficaces de Vim en 3 pages, afin de vous permettre d'utiliser simplement et rapidement Vim."
    Une adresse alternative de ce guide au cas où...

nano

Éditeur de texte en ligne de commande fonctionnel et simple d'accès. Il gère la coloration syntaxique, la recherche et le remplacement de texte avec des expressions rationnelles, le défilement ligne par ligne...
Touches : Par exemple, >Ctrl<>O< enregistre le fichier en cours d'édition et >Ctrl<>W< ouvre le menu de recherche. Nano dispose d'une barre d'état de deux lignes au bas de l'écran, dans laquelle sont listées les raccourcis des commandes disponibles dans le contexte actuel. La commande >Ctrl<>G< permet d'obtenir un écran d'aide, avec une liste plus complète des commandes...

Emacs

Débuter efficacement avec Emacs : Document de Philippe Marsalle, d'après une conférence de Thierry Stoehr, sur parinux.org.

Utiliser le Shell

  • Le shell est un logiciel fournissant une interface pour un utilisateur. C'est lui qui interprète les ligne de commande.
  • Bash (pour Bourne-Again Shell), est le shell du projet GNU. Basé sur le nom du shell historique d'Unix (le Bourne shell ;), il y apporte de nombreuses améliorations. Bash est un logiciel libre publié sous Licence publique générale (GPL). Il est l'interprète par défaut sur de nombreux Unix libres, notamment sur les systèmes GNU/Linux. C'est aussi le shell par défaut de Mac OS X et il a été porté sous Windows par le projet Cygwin.
    Les liens contenus en bas de l'article Wikipedia constituent des sources sûres pour apprendre, utiliser & maîtriser le Shell Bash.

Le shell ou le retour du C:\> ! (et les commandes)

Décidement l'article de Jean-Christophe, Marc et Anne sur lea-linux.org est épatant pour découvrir en profondeur le shell et la ligne de commande :)
(re)Voyez comment retrouver et utiliser le résultat de la dernière commande tapée : !, Remplacer un caractère par un autre : ^, Lancer un programme directement en tâche de fond : &, Lancer plusieurs programmes en même temps : &, &&, ||, rediriger la sortie standard d'un programme vers l'entrée d'un autre | ; Gérer les processus ; comprendre et utiliser les Aliases et variables d'environnement...

Au sujet des redirections, le Memo redirection : La redirection des fichiers sous Bash, Tcsh et Csh de Karles est concis et bien présenté :).

Fiches de CCM

Articles de GuideLinux.org

Automatisation des tâches répétitives avec les scripts Bash

  • Vous devriez apprendre un peu de BASH-scripting ! Ça apporte pas mal de plaisir et est susceptible de vous faire économiser beaucoup de temps et de prises de tête et de travail.
    http://en.linuxreviews.org/BASH-scripting

Autres bons liens pour débuter la ligne de commande ou simplement voir ce qu'on peut faire avec

  • Command line, are you afraid ? : "Most people I know, whom aren’t very used to linux yet, are afraid of the command line, they think it’s hard to learn and somehow useless but that is entirely false… The command line is very easy to learn, well at least the basics of it, but you should know that the shell is much more powerful than anything you have, or will, ever use...
    In this small article I will try to show you all the basics on the command line, but first things first, let’s start with the directory layout:
    " (...)
Trop cool pour Internet Explorer