Obtenir de l'aide sous Linux

Sous Linux il existe 3 façons d’obtenir de l’aide, il est possible d’invoquer l’aide pour les commandes internes au shell, l’aide pour les commandes externes et enfin de consulter directement le manuel en ligne.

# help                 # Donne la liste des commandes internes au shell
# help <cmd> # Aide de la commande interne <cmd>

# <cmd> --help # Aide incluse au sein du programme <cmd>

# man <cmd> # Manuel en ligne de la commande <cmd>
# man n <cmd> # Section n du manuel en ligne de la commande <cmd>
# man -k <cmd> # Listing de toutes les commandes liées à la commande <cmd>

Reconnaître les commandes externes et internes

Pour savoir si une commande est interne ou externe au shell il suffit de vérifier son type avec la commande type

Les commandes externes

Les commandes externes sont des fichiers localisés dans l’arborescence Linux. Par exemple, lorsqu’on lance la commande chmod, le shell va demander au noyau Linux de charger en mémoire le fichier /bin/chmod

# type chmod
chmod est /bin/chmod

# type wget
wget est /usr/bin/wget

Les commandes internes

Les commandes internes sont directement intégrées au processus shell et ne sont pas, comme le sont les commandes externes, un fichier sur le disque qui est lancé.

# type cd
cd est une primitive du shell

# type kill
kill est une primitive du shell

L’aide pour les commandes externes et internes

L’aide pour les commandes internes

Les commandes internes sont directement intégrées au processus shell, la commande # help permet de toutes les lister et on peut par exemple trouver cd, pwd, echo, kill, …

# help

job_spec [&] history [-c] [-d décalage] [n] ou history -anrw>
(( expression )) if COMMANDES; then COMMANDES; [ elif COMMANDES;>
. nom_fichier [arguments] jobs [-lnprs] [jobspec ...] ou jobs -x commande>
: kill [-s sigspec | -n signum | -sigspec] pid | >
[ arg... ] let arg [arg ...]
[[ expression ]] local [option] nom[=valeur] ...
alias [-p] [nom[=valeur] ... ] logout [n]
bg [job_spec ...] mapfile [-d délim] [-n nombre] [-O origine] [-s>
bind [-lpvsPSVX] [-m keymap] [-f nomfichier] [-q> popd [-n] [+N | -N]
break [n] printf [-v var] format [arguments]
builtin [shell-builtin [arg ...]] pushd [-n] [+N | -N | rép]
caller [expr] pwd [-LP]
case MOT in [MOTIF [| MOTIF]...) COMMANDES ;;]..> read [-ers] [-a tableau] [-d delim] [-i texte] >
cd [-L|[-P [-e]] [-@]] [rép] readarray [-n nombre] [-O origine] [-s nombre] >
command [-pVv] commande [arg ...] readonly [-aAf] [nom[=valeur] ...] ou readonly >
compgen [-abcdefgjksuv] [-o option] [-A action] > return [n]
complete [-abcdefgjksuv] [-pr] [-DE] [-o option]> select NOM [in MOTS ... ;] do COMMANDES; done
compopt [-o|+o option] [-DE] [nom ...] set [-abefhkmnptuvxBCHP] [-o nom-option] [--] [>
continue [n] shift [n]
coproc [NOM] commande [redirections] shopt [-pqsu] [-o] [nom_opt ...]
declare [-aAfFgilnrtux] [-p] [nom[=valeur] ...] source nom_fichier [arguments]
dirs [-clpv] [+N] [-N] suspend [-f]
disown [-h] [-ar] [jobspec ... | pid ...] test [expr]
echo [-neE] [arg ...] time [-p] pipeline
enable [-a] [-dnps] [-f nomfichier] [nom ...] times
eval [arg ...] trap [-lp] [[arg] signal_spec ...]
exec [-cl] [-a nom] [commande [arguments ...]] [> true
exit [n] type [-afptP] nom [nom ...]
export [-fn] [nom[=valeur] ...] ou export -p typeset [-aAfFgilnrtux] [-p] nom[=valeur] ...
false ulimit [-SHabcdefiklmnpqrstuvxPT] [limite]
fc [-e ename] [-lnr] [premier] [dernier] ou fc -> umask [-p] [-S] [mode]
fg [job_spec] unalias [-a] nom [nom ...]
for NOM [in MOTS ... ] ; do COMMANDES; done unset [-f] [-v] [-n] [nom ...]
for (( exp1; exp2; exp3 )); do COMMANDES; done until COMMANDES; do COMMANDES; done
function nom { COMMANDES ; } ou nom () { COMMAND> variables - Noms et significations de certaines>
getopts chaineopts nom [arg] wait [-n] [id ...]
hash [-lr] [-p nomchemin] [-dt] [nom ...] while COMMANDES; do COMMANDES; done
help [-dms] [motif ...] { COMMANDES ; }

Exemple avec l’aide de la commande pwd

# help pwd

pwd: pwd [-LP]
Print the name of the current working directory.

Options:
-L    print the value of #PWD if it names the current working directory
-P    print the physical directory, without any symbolic links

By default, `pwd' behaves as if `-L' were specified.

Exit Status:
Returns 0 unless an invalid option is given or the current directory cannot be read.

Puisque pwd est une commande interne, si on utilise --help, la commande sera considérée comme un argument et renverra une erreur.

# pwd --help

bash: pwd: -- : option non valable

L’aide pour les commandes externes

L’option --help devant une commande permet d’afficher l’aide de cette dernière en allant directement la chercher au sein même du programme.

Exemple avec l’aide de la commande date

# date –-help
Utilisation : date [OPTION]... [+FORMAT]
ou : date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]
Affiche la date actuelle selon le FORMAT spécifié ou initialise la date système.

-d, --date=STRING affiche la date selon le format STRING, sans « now »
-f, --file=DATEFILE identique à --date pour chaque ligne de DATEFILE
-r, --reference=FILE affiche la dernière heure de modification de FILE
-R, --rfc-2822 affiche la date et l'heure selon le format RFC 2822.
[...]
--help affiche l'aide et quitte
--version affiche des informations de version et quitte

FORMAT contrôle l'affichage. Les séquences interprétées sont :

%% un caractère %
%a les noms abrégés des jours de la semaine (p. ex. lun.)
%A les noms complets localisés des jours de la semaine (p. ex. lundi)
[...]

Manuel en ligne

Le manuel est standard sur tous les Unix, on utlise man ou info pour afficher le manuel d’une commande

# man man         # Affiche le manuel du... manuel !
# man date        # Affiche le manuel de la commande date

# info man # Affiche le manuel du... manuel !
# info date        # Affiche le manuel de la commande date

Comment naviguer dans le manuel

Touches Résultats
[Espace] Défile une page complète
[Entrée] Défile ligne par ligne
[Haut] Défile d’une ligne vers le haut
[Bas] Défile d’une ligne vers le bas
[Pageup] Défile d’une demi-page vers le haut
[Pagedown] Défile d’une demi-page vers le bas
[Début] Va au début du manuel
[Fin] Va à la fin du manuel
q Quitte l’aide et revient au shell
h Affiche l’aide du manuel
/ Permet une recherche. (/abcd recherche abcd)
? Permet une recherche. (?abcd recherche abcd)
n Cherche l’occurrence suivante
N Rrecherche la précédente

Les sections du manuel

Les pages de manuel sont réparties dans des sections distinctes :

  1. Programmes exécutables ou commandes du shell
  2. Appels système (Fonctions fournies par le noyau)
  3. Appels de bibliothèque (fonctions fournies par des bibliothèques)
  4. Fichiers spéciaux (situés généralement dans /dev comme sd, hd, pts, etc.)
  5. Format des fichiers et conventions (/etc/passwd, /etc/hosts, etc.)
  6. Les jeux, économiseurs d’écran, gadgets, etc.
  7. Divers, commandes non standard, ne trouvant pas place ailleurs
  8. Commandes d’administration du système Linux (généralement réservées au superutilisateur)
  9. Interface du noyau Linux et Sous-programmes du noyau (souvent vide)

Il est possible d’accéder directement à l’une d’entre elle depuis la commande man .

# man <N°Section> <Commande>

Par exemple pour accéder directement à la section 7 du manuel pour man ou à la section 5 de crontab:

# man 7 man
# man 5 crontab

En cas d’oubli du nom d’une commande

Pour connaître toutes les commandes liées à un mot il faut utiliser l’option -k, ici à user :

# man -k user

adduser.conf (5)     - Fichier de configuration d'adduser(8) etaddgroup(8).
deluser.conf (5)     - Fichier de configuration de deluser(8) etdelgroup(8).
adduser (8)          - Ajouter un utilisateur ou un groupe au système
defoma-user (1)      - le gestionnaire de polices Debian pour les utilisateurs
deluser (8)          - Retirer un utilisateur ou un groupe du système
newusers (8)         - Mettre (`a jour, ou cr('eer de nouveaux utilisateurs par lots
su (1)               - change user ID or become superuser
useradd (8)          - creer un nouvel utilisateur ou modifier les informations par ...
userdel (8)          - supprimer un compte utilisateur et les fichiers associées
usermod (8)          - Modifier un compte utilisateur
[...]

Documentation

https://blog.microlinux.fr/formation-bash-commandes-internes/
https://doc.ubuntu-fr.org/man
Manuel en ligne, accessible depuis la commande man

> Partager <