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.
- Comment obtenir la liste de toutes les commandes de Bash ?
- Comment exécuter un programme ?
- Comment lister les variables d'environnement ?
- Comment écrire un script Shell simple ?
- Comment ajouter des alias ?
- Comment modifier un fichier en mode console ?
- Comment rajouter la coloration syntaxique dans vim ?
- Comment ouvrir une autre console ?
- Comment connaître le type d'un fichier ?
- Comment afficher/concaténer des fichiers ?
- Comment connaître le temps d'exécution d'une commande ?
- Quels raccourcis bash pour gérer mes commandes ?
- Qui est connecté à cette machine ?
- Comment envoyer un message à toutes les personnes connectées ?
- Comment enlever les Bips-Bips des consoles ?
- Quels sont les raccourcis clavier intéressants en ligne de commande ?
- Comment faire des opérations arithmétiques en Shell ?
Dans votre terminal, tapez la commande suivante :
Code : | Sélectionner tout |
help -d ''
(( ... )) - Evaluate arithmetic expression.
. - Execute commands from a file in the current shell.
: - Null command.
[ - Evaluate conditional expression.
[[ ... ]] - Execute conditional command.
alias - Define or display aliases.
bg - Move jobs to the background.
bind - Set Readline key bindings and variables.
break - Exit for, while, or until loops.
builtin - Execute shell builtins.
caller - Return the context of the current subroutine call.
case - Execute commands based on pattern matching.
cd - Change the shell working directory.
command - Execute a simple command or display information about commands.
compgen - Display possible completions depending on the options.
complete - Specify how arguments are to be completed by Readline.
compopt - Modify or display completion options.
continue - Resume for, while, or until loops.
coproc - Create a coprocess named NAME.
declare - Set variable values and attributes.
dirs - Display directory stack.
disown - Remove jobs from current shell.
echo - Write arguments to the standard output.
enable - Enable and disable shell builtins.
eval - Execute arguments as a shell command.
exec - Replace the shell with the given command.
exit - Exit the shell.
export - Set export attribute for shell variables.
false - Return an unsuccessful result.
fc - Display or execute commands from the history list.
fg - Move job to the foreground.
for - Execute commands for each member in a list.
for (( - Arithmetic for loop.
function - Define shell function.
getopts - Parse option arguments.
hash - Remember or display program locations.
help - Display information about builtin commands.
history - Display or manipulate the history list.
if - Execute commands based on conditional.
jobs - Display status of jobs.
kill - Send a signal to a job.
let - Evaluate arithmetic expressions.
local - Define local variables.
logout - Exit a login shell.
mapfile - Read lines from the standard input into an indexed array variable.
popd - Remove directories from stack.
printf - Formats and prints ARGUMENTS under control of the FORMAT.
pushd - Add directories to stack.
pwd - Print the name of the current working directory.
read - Read a line from the standard input and split it into fields.
readarray - Read lines from a file into an array variable.
readonly - Mark shell variables as unchangeable.
return - Return from a shell function.
select - Select words from a list and execute commands.
set - Set or unset values of shell options and positional parameters.
shift - Shift positional parameters.
shopt - Set and unset shell options.
source - Execute commands from a file in the current shell.
suspend - Suspend shell execution.
test - Evaluate conditional expression.
time - Report time consumed by pipeline's execution.
times - Display process times.
trap - Trap signals and other events.
true - Return a successful result.
type - Display information about command type.
typeset - Set variable values and attributes.
ulimit - Modify shell resource limits.
umask - Display or set file mode mask.
unalias - Remove each NAME from the list of defined aliases.
unset - Unset values and attributes of shell variables and functions.
until - Execute commands as long as a test does not succeed.
variables - Common shell variable names and usage.
wait - Wait for job completion and return exit status.
while - Execute commands as long as a test succeeds.
{ ... } - Group commands as a unit.
Pour exécuter un programme, il faut dans un premier temps que celui-ci possède le format adéquat (elf) et puisse être exécuté sur son architecture (i386, mips, sparc, etc.). Vous pouvez vérifier cela avec la commande file :
Code bash : | Sélectionner tout |
$ file nom_du_programme
Ensuite, il faut que le fichier possède les droits en exécution pour vous :
Code bash : | Sélectionner tout |
$ chmod u+x programme
Il ne vous reste plus qu'à l'exécuter en spécifiant le chemin absolu du fichier :
Code bash : | Sélectionner tout |
$ /usr/local/bin/xmms
Cela est assez fastidieux. Pour résoudre ce problème, il suffit de rajouter dans la variable PATH de votre Shell le chemin de l'exécutable. Pour le Shell sh/Bash :
Code bash : | Sélectionner tout |
$ export PATH="${PATH}:/usr/local/bin"
Pour les Shells csh, tcsh :
Code bash : | Sélectionner tout |
$ setenv PATH "${PATH}:/usr/local/bin"
Sans option, la commande export affiche la liste des variables d'environnement – tandis que, toujours sans option, la commande set, et en moins exhaustive, mais fonctionnant avec tous les Shells la commande env, affichent la liste des variables locales :
Code bash : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | $ export (...) declare -x HOME="/u/moi" declare -x PATH="/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/X11R6/bin" declare -x LOGNAME="moi" declare -x SHELL="/bin/bash" declare -x MAIL="/mail/moi/inbox" declare -x USER="moi" declare -x HOSTNAME="moi.exemple" (...) $ set # ou env (...) HOME=/u/moi HOSTNAME=moi.exemple HOSTTYPE=i686 IFS=$' \t\n' INPUTRC=/etc/inputrc LD_LIBRARY_PATH=/usr/local/lib MAIL=/mail/moi/inbox (...) |
Ouvrez votre éditeur de texte et tapez les différentes commandes que le script exécutera :
Code bash : | Sélectionner tout |
1 2 3 4 | #!/bin/bash echo "lancement d'un script simple.." # on lance mozilla mozilla& |
La ligne #!/bin/bash (ou shebang) est une convention. Cela signifie que l'interpréteur de commande sera le Bourne Again Shell (bash). Si rien n'est précisé, il prendra le Shell par défaut de l'utilisateur.
Attention à ne pas confondre le shebang avec une ligne en commentaire (# ceci est un commentaire).
Pour exécuter le script vous devrez au préalable appliquer les permissions nécessaires :
Code bash : | Sélectionner tout |
1 2 | $ chmod +x nomduscript.sh $ ./nomduscript.sh |
Code bash : | Sélectionner tout |
$ alias ll='ls -l'
Grâce à cet alias, lorsque vous taperez :
Code bash : | Sélectionner tout |
$ ll
Dans votre terminal, cela exécutera la commande :
Code bash : | Sélectionner tout |
$ ls -l
Pour voir la liste des alias activés, vous pouvez taper :
Code bash : | Sélectionner tout |
$ alias
Pour rendre cet alias persistant, vous pouvez l'ajouter au script par défaut lancé à démarrage d'une session Shell. Sous GNU/Linux avec Bash il s'agit généralement du fichier ~/.bashrc :
Code bash : | Sélectionner tout |
1 2 | echo "alias ll='ls -l'" >> ~/.bashrc source ~/.bashrc |
Il existe plusieurs éditeurs de texte en console, mais le plus répandu est sans doute vi. Quelle que soit votre distribution, vous êtes sûr de pouvoir compter sur lui .
Utilisation :
Code bash : | Sélectionner tout |
$ vi fichier
Pour modifier le texte, appuyer sur « a » (curseur placé avant la lettre), « i » ou INSERT (curseur placé après). Une fois les modifications faites, appuyer sur ESCAPE, ensuite on donne les commandes à exécuter en tapant « : » (deux-points) suivi de la lettre qui correspond à la commande : en résumé, vi est simple et très complet. Notez qu'il existe aussi vim (pour vi improved), avec l'ajout notamment de la coloration syntaxique, et aussi gvim, en mode graphique...
- :w pour sauver les modifications ;
- :q pour quitter ;
- :wq pour sauver et quitter.
Malheureusement, les éditeurs les plus « classiques » et « puristes » sous Linux sont aussi les plus complexes à utiliser, et sont fort déroutants pour les débutants. Il existe toutefois des éditeurs nettement plus simples comme nano ou pico (fort semblables), qui s'utilisent avec les touches normales et intuitives (flèches du clavier, touches home et end...). Par ailleurs, l'utilisation de nano est très simple :
Code bash : | Sélectionner tout |
nano monfichier.txt
Ouvrez le fichier monfichier.txt pour l'éditer, « nano » tout court va créer un nouveau fichier.
Dans le programme, Ctrl+W (w pour « write ») permet de sauver le fichier, et Ctrl+X quitte le programme (en vous demandant s'il faut enregistrer les modifications le cas échéant).
Une autre solution appréciée de bien des gens est le programme mc (midnight comander), le couteau suisse en mode console de Linux, équivalent au Norton commander de l'époque héroïque du DOS. Ce programme regroupe donc un gestionnaire de fichiers (avec la vue à deux panneaux classique), un éditeur de texte, des utilitaires de recherche, de copie de fichiers...
Pour rajouter la coloration syntaxique :
Code bash : | Sélectionner tout |
vi /etc/vim/vimrc
Enlever le " devant :
Code : | Sélectionner tout |
" syntax on
En mode console :
Alt+F1, Alt+F2, etc. où le chiffre représente la console désirée (il y en a quatre disponibles par défaut).
En mode graphique, tapez dans un Shell :
Code bash : | Sélectionner tout |
$ xterm &
Il est possible d'utiliser un autre terminal graphique que xterm en fonction de l'environnement de bureau que vous utilisez.
Sous Gnome :
Code bash : | Sélectionner tout |
$ gnome-terminal &
Sous KDE :
Code bash : | Sélectionner tout |
$ konsole &
La commande file vous renseigne sur le type et le format d'un fichier :
Code bash : | Sélectionner tout |
1 2 3 4 | $ file code.c code.c: ASCII C program text $ file file.png file.png: PNG image data, 1014 x 704, 16-bit/color RGB, non-interlaced |
La commande cat permet d'afficher le contenu d'un ou plusieurs fichiers (à la suite dans le second cas) :
Code bash : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 | $ cat fichier1 contenu du fichier1 $ cat fichier2 contenu du fichier2 $ cat fichier3 contenu du fichier3 $ cat fichier1 fichier2 fichier3 contenu du fichier1 contenu du fichier2 contenu du fichier3 |
Pour afficher le contenu d'un fichier, d'autres solutions sont possibles et plus ou moins adaptées à des besoins spécifiques : more, less, tail...
Exécutez le programme time avec la commande pour argument :
Code bash : | Sélectionner tout |
1 2 3 4 | $ time commande
real 0m15.953s
user 0m14.500s
sys 0m1.320s |
Il faut savoir qu'un processus s'exécute dans plusieurs modes : user mode ou kernel mode. Le changement de mode s'effectue lorsque le processus utilise des appels du système. Ce sont des fonctions dans les programmes pour accéder à des fonctionnalités du noyau (comme écrire sur un terminal, ouvrir un fichier...). C'est ce que représentent les valeurs user et sys.
Vous devez maintenant vous poser la question suivante : l'addition des temps du user mode et du kernel mode ne me donne pas la valeur du temps total d'exécution.
Pourquoi ? C'est très simple : un système d'exploitation ne fait pas tourner en temps réel tous les processus (vous n'avez qu'un processeur). Il doit jongler entre les processus (on nomme cela un scheduler). Mais il fait cela tellement vite que vous avez l'impression que vos processus tournent en parallèle.
Vous avez donc compris que le temps total qui s'est écoulé représente : le temps d'exécution de votre processus + celui des autres processus qui se sont écoulés dans le même temps.
- real : temps total qui s'est écoulé ;
- user : temps du CPU qui s'est écoulé en user mode ;
- sys : temps du CPU qui s'est écoulé en kernel mode.
La plupart des gens connaissent les rappels de commandes avec bash en utilisant simplement les touches « flèche haut » et « flèche bas ».
Mais il existe une série de rappels moins utilisés, plus ou moins connus :
- !! : relance la dernière commande utilisée ;
- !32 : relance la commande 32 de l'historique (history pour lire l'historique) ;
- !ls : relance la dernière commande de l'historique qui commence par ls ;
- !-2 : relance l'avant-dernière commande ;
- !!s:/ls /ls -l/ : relance la dernière commande en modifiant ls par ls -l.
Quand vous avez beaucoup d'utilisateurs sur votre machine Linux, il peut s'avérer intéressant de savoir qui est présent et quelle est son activité ? La commande :
Code bash : | Sélectionner tout |
who
Vous permet de savoir qui est connecté. Pour savoir s'ils sont actifs (utilisation du clavier), il vous suffit de faire un :
Code bash : | Sélectionner tout |
finger nom_du_user
Le temps « idle » correspond au temps entre la dernière pression du clavier et maintenant.
La commande wall permet de lancer un message en broadcast à toutes les personnes connectées à votre machine via un terminal.
Trois méthodes possibles :
- soit vous écrivez un fichier et lancez :
Code bash : Sélectionner tout wall mon_fichier
- soit vous lancez "wall", tapez votre message et terminez par CTRL+D :
- soit vous utilisez le pipe pour envoyer directement un message à partir de la commande echo :
Code bash : Sélectionner tout echo "Message"|wall
Pour faire taire les bruits « bips-bips » de la console qui ont lieu chaque fois que vous appuyez sur tab, éditez le fichier /etc/inputrc et ajoutez juste la ligne :
Code : | Sélectionner tout |
set bell-style none
- C-b Recule d'un caractère (idem flèche à gauche) ;
- C-f Avance d'un caractère (idem flèche à droite) ;
- C-a Va en début de ligne ;
- C-e Va en fin de ligne ;
- C-p Reprend la commande précédente (idem flèche montante) ;
- C-n Reprend la commande suivante (idem flèche descendante) ;
- C-d Détruit le caractère ;
- C-k Détruit le reste de la ligne ;
- C-u Efface la ligne.
C = touche CTRL
Bash ne sait pas travailler avec les nombres réels. Pour faire une opération avec des nombres relatifs, bash suffit :
Code bash : | Sélectionner tout |
1 2 | echo "3*2 = "$[ 3 * 2 ] echo "3*2 = "$(( 3 * 2 )) |
Pour toute opération avec des réels, il faut utiliser bc. Exemple : combien fait 5/2 ?
Code bash : | Sélectionner tout |
echo "5/2"|bc -l
bc m'affiche 2.50000000000000000000, comment limiter le nombre de décimales ? Avec :
Code bash : | Sélectionner tout |
echo "scale=1;(5/2)"|bc -l
Affichera 2.5. « 1 » est le nombre de chiffres après le symbole décimal.
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 © 2024 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.