
FAQ LinuxConsultez toutes les FAQ
Nombre d'auteurs : 56, nombre de questions : 260, derni�re mise � jour : 27 juin 2022 Ajouter une question
Cette FAQ a �t� r�alis�e � partir des contributions des membres du forum Linux de Developpez.com et de l'�quipe de r�daction. Merci � eux !
Nous sommes perp�tuellement � l'�coute de vos suggestions et corrections, n'h�sitez pas � nous en faire part sur le forum.
6.1. Les commandes de bases (17)
6.2. Commandes avanc�es (22)
6.3. La commande sed (14)
- Qu'est-ce que le Shell
- Pourquoi est-il important de ma�triser la ligne de commande sous Linux ?
- Comment fonctionne le Shell ?
- Comment trouver un fichier ?
- Comment renommer plusieurs fichiers � la fois ?
- Comment trouver un fichier avec une taille sp�cifique ?
- Comment emp�cher la fermeture du terminal ?
- Comment afficher ce que le script ex�cute ?
L'interpr�teur de ligne de commande (ou "shell") est une interface en mode texte, qui permet � un utilisateur d'interagir avec le noyau afin d'effectuer des op�rations diverses : afficher la date, lire un fichier, r�cup�rer des donn�es distantes...
Il comporte des commandes qui lui sont propres (commandes internes), et peut ex�cuter toutes les commandes disponibles sur le syst�me (commandes externes) pourvu que les ressources soient disponibles : on ne peut pas lancer un programme X* (gedit, firefox...) si X* n'est pas d�marr� !
Certaines commandes internes de l'interpr�teur de commandes sont aussi disponibles en tant que commandes externes : elles portent le m�me nom, mais n'ont pas obligatoirement les m�mes options, ou les m�mes options ne se comportent pas exactement de la m�me mani�re (c'est le cas de time).
Le fonctionnement apparent du shell est simple :
il attend que l'utilisateur appuie sur 'Entr�e' apr�s avoir saisi le nom d'une commande ;
il ex�cute la commande ;
il attend que l'utilisateur appuie sur 'Entr�e'...
Les Shells principaux sont :
- Bash (bourne Shell)
- Csh (C shell)
- Ksh (Korn 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�che, 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 par exemple la modification des param�tres du noyau ou autres �l�ments du syst�me.
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 multit�che, 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...).
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 :
Code bash : | S�lectionner tout |
$ 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 !
P.-S. Pour que la commande locate fonctionne, il faut pr�alablement cr�er sa base de donn�es utile. Il faut pour cela ex�cuter 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 :
Code bash : | S�lectionner tout |
$ 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 :
Code bash : | S�lectionner tout |
$ 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 :
Code bash : | S�lectionner tout |
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 cha�ne ou une regexp dans une arborescence :
Code bash : | S�lectionner tout |
1 2 | find <repertoire_depart> -type f -exec grep -H "<chaine>" {} ; find <repertoire_depart> -type f -exec egrep -H "<regexp>" {} ; |
Lorsqu'il s'agit de gros volumes de fichiers :
Code bash : | S�lectionner tout |
1 2 | find <repertoire_depart> -type f | xargs grep -H "<chaine>" find <repertoire_depart> -type f | xargs egrep -H "<regexp>" |
Renommer tous les fichiers contenant chaine en chene :
Code bash : | S�lectionner tout |
for f in ./*chaine*; do mv "$f" "${f/chaine/chene}"; done
En r�cursif sur une arborescence :
Code BASH : | S�lectionner tout |
1 2 | shopt -s nullglob globstar for f in ./**/*chaine*; do mv "$f" "$(echo "$f" | sed 's/chaine/chene/')"; done |
Code bash : | S�lectionner tout |
find . -type f -name '*chaine*' -execdir sh -c 'echo mv "$1" "$(echo "$1" | sed "s/chaine/chene/")"' sh {} \;
De plus, on utilise -execdir plut�t que -exec, pour �viter [...voir infra l'explication de jack-ft]
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 r�cursif en gardant une copie de sauvegarde :
Code bash : | S�lectionner tout |
find . -type f -name "*.conf" | xargs perl -pi.save -e 's/option\=true/option\=false/'
Certes, mv permet de renommer des fichiers. Toutefois, l'outil n'est pas tr�s adapt� pour renommer un grand nombre de fichiers. Il est �vident que vous pourriez rapidement �crire une boucle for, ou m�me un script pour arriver � votre fin, mais pourquoi s'emb�ter alors qu'un outil est l� pour �a.
En effet, rename permet de renommer une multitude de fichiers et cela tr�s facilement.
Voici un exemple d'utilisation, permettant de changer l'extension de tous les fichiers de foo � txt du dossier courant :
Code bash : | S�lectionner tout |
rename 's/.foo/.txt/' *
Comme vous le voyez, la syntaxe est simple. Voici l'usage :
Code bash : | S�lectionner tout |
rename [ -v ] [ -n ] [ -f ] perlexpr [ fichiers ]
L'outil utilise les expressions r�guli�res de Perl.
La commande find pour trouver des fichiers propose l'option -size.
Ainsi pour trouver des fichiers de plus de 100 m�ga-octets, vous pouvez utiliser la commande :
Code bash : | S�lectionner tout |
find / -size +100M
- b : pour des blocs de 512 octets ;
- c : pour des octets ;
- w : pour des mots de deux octets ;
- k : pour des kilo-octets (unit�s de 1 024 octets) ;
- M : pour des m�ga-octets (unit�s de 1 048 576 octets) ;
- G : pour des giga-octets (unit�s de 1 073 741 824 octets) ;
Vous pouvez toujours effectuer une recherche plus pr�cise en pr�cisant plusieurs tailles :
Code bash : | S�lectionner tout |
find / -size +100M -size -1000M
Lorsqu'on lance un script � travers l'interface graphique, le terminal se ferme � la fin de l'ex�cution du script, et ce qu'il y eu une erreur ou non.
Vous pouvez emp�cher la fermeture du terminal de multiples fa�ons. En voici deux int�ressantes :
Code bash : | S�lectionner tout |
1 2 | echo "Appuyez sur entr�e..." read |
Code bash : | S�lectionner tout |
$SHELL
Vous venez de cr�er un script shell et vous souhaitez v�rifier les commandes ex�cut�s par le script (avec leurs options). Pour cela, bash propos� l'option -x. En l'utilisant, bash �crira les commandes lanc�es par le script.
Par exemple, pour le script suivant :
Code shell : | S�lectionner tout |
1 2 3 4 | FOLD=/tmp/toto touch main.c cd /tmp/ mkdir ${FOLD} |
+ touch main.c
+ cd /tmp/
+ mkdir /tmp/toto
Proposer une nouvelle r�ponse sur la FAQ
Ce n'est pas l'endroit pour poser des questions, allez plut�t sur le forum de la rubrique pour �aLes 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 � 2025 Developpez Developpez LLC. Tous droits r�serv�s Developpez LLC. Aucune reproduction, m�me partielle, ne peut �tre faite de ce site et 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.