IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

FAQ LinuxConsultez toutes les FAQ

Nombre d'auteurs : 45, nombre de questions : 192, dernière mise à jour : 11 mai 2012 

 
OuvrirSommaireLe Shell

Contrairement à Windows, linux peut être entièrement piloté en ligne de commande, par laquelle on a accès à toute sa puissance et toute sa configuration. L'interface graphique n'est qu'une couche applicative optionnelle, mais non nécessaire pour des serveurs par exemple (qui ne font basiquement que répondre à des requêtes réseau).

Un administrateur système se doit de maîtriser le shell pour diverses raisons :

  • même si certaines distributions ou applications proposent des assistants de configuration graphiques, c'est en modifiant les fichiers de configuration textuels qu'on arrive à paramétrer le plus finement le système
  • le shell et son langage sont très puissants et bien souvent il est très efficace de réaliser quelques scripts simples pour automatiser certains traitements sur des serveurs, ou modifier des configurations de services à la volée
  • par sécurité on évite d'installer tout élément non strictement nécessaire sur un serveur (exemple typique : une interface graphique), et son administration à distance se fera la plupart du temps en ssh, qui est un protocole d'accès sécurisé à la console par le réseau.
  • la maîtrise du shell permet de contrôler le système à 100% (surveillance complète de l'activité de la machine, démarrage et arrêt d'applications, gestion du multitâches, recherches rapides, etc.), et est donc un moyen très efficace d'administrer une machine

Une autre raison est que sous linux toute la configuration est transparente, stockée dans des fichiers textuels lisibles par tous et généralement bien documentés (commentaires). La configuration de pratiquement n'importe quel logiciel peut donc s'effectuer par un simple éditeur de texte, ou à l'aide de scripts où le langage Perl est assez populaire puisqu'il est spécialement dédié au traitement de chaînes de caractères.

Même pour une utilisation de linux en tant que station de travail où des assistants graphiques vous facilitent les tâches courantes (configuration de base, installation de logiciels, etc.), un minimum de notions de shell s'avéreront nécessaires dès que vous devrez vous plonger dans certaines configurations un peu plus complexes comme par exemple la modification des paramètres noyau, ou autres éléments système.

Mis à jour le 10 décembre 2005  par Olivier Van Hoof (ovh)

Le shell est un interpréteur de commande en mode texte (ou console). Il permet de passer des ordres (commandes) au système, et de "dialoguer" avec lui (on parle de shell interactif).
Il est possible de piloter entièrement linux en ligne de commande : démarrer, suspendre et arrêter des programmes, gérer les services (programmes résidents en mémoire), configurer le système (édition de fichiers texte), gérer les tâches planifiées, le multi-tâches, etc.

Une des premières choses à apprendre sous linux est le shell et ses commandes de base, car cela permet d'avoir une totale maîtrise du système.

Techniquement, le shell est une boucle infinie en C qui lit ce que l'utilisateur tape au clavier et réagit :

  • soit il s'agit d'une commande interne du shell qui est exécutée directement (fonction interne, ou builtin)
  • soit il lance un programme externe
  • il doit aussi interpréter les caractères spéciaux (redirection, pipes, etc)
Créé le 14 juillet 2004  par Olivier Van Hoof (ovh)

Lien : Que signifie le caractère > ou < (redirection) ? Quelle utilité ?
Lien : Que signifie le caractère | (pipe) ? Quelle utilité ?

Il existe plusieurs façons de procéder pour trouver un fichier sous Linux. La méthode la plus utilisée est la commande locate :

 
Sélectionnez
$ locate nom_du_fichier

Cette commande affichera toutes les occurrences trouvées. Que ce soit une partie du nom d'un répertoire ou d'un fichier. Il se peut donc qu'il y ait beaucoup d'occurrences !
ps : Pour que la commande locate fonctionne, il faut préalablement créer sa base de données utile. Il faut pour cela éxecuter la commande updatedb en tant que root. Cette commande permet également de mettre à jour la base de données (sinon les modifications du système de fichier ne seront pas prises en compte) : il est donc judicieux de l'exécuter régulièrement (via un cron), par exemple.
Une autre méthode est d'utiliser la commande find :

 
Sélectionnez
$ find / -name "fichier.txt"

Cette commande affichera tous les fichiers se nommant fichier.txt à partir du répertoire racine.
Il est possible d'utiliser les expressions régulières :

 
Sélectionnez
$ find / -name "toto*"

Le résultat sera tous les fichiers et répertoires commençant par toto, suivi de n'importe quelle occurrence.
Pour éviter d'avoir les "permission denied" sur des répertoires :

 
Sélectionnez

find / -type f -name "le_fichier_a_chercher" 2>/dev/null 

find est très puissant, et permet aussi d'employer les expressions régulières, comme le montre l'exemple suivant qui permet de trouver tous les fichiers contenant une chaine ou une regexp dans une arborescence :

 
Sélectionnez
find <repertoire_depart> -type f -exec grep -H "<chaine_ou_regexp>" {} ;

Lorsqu'il s'agit de gros volumes de fichiers :

 
Sélectionnez
find <repertoire_depart> -type f | xargs grep -H "<chaine_ou_regexp>"

Renommer tous les fichiers conenant chaine en chene :

 
Sélectionnez
for i in `ls *chaine*` ; do mv $i `echo $i | sed 's/chaine/chene'` ; done

En récursif sur une arborescence :

 
Sélectionnez
for i in `find . -type f -name "*chaine*" ; do mv $i `echo $i | sed 's/chaine/chene'` ;done

Il y a même moyen d'effectuer des opérations sur fichier en appelant des scripts externes; par exemple : changer toutes les option=true en option=false dans tous les fichiers *.conf en recursif en gardant une copie de sauvegarde :

 
Sélectionnez
find . -type f -name "*.conf" | xargs perl -pi.save -e 's/option\=true/option\=false/'
Mis à jour le 4 décembre 2005  par nyal, Mathk, vosaray
  

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2013 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.