Mise à jour : Debian 10.3 / Buster
Références
Sommaire
Une liste de toutes les commandes prises en charge par le shell est fournie par la commande compgen avec l'option -c pour "all commands":
# Liste des 10 premières commandes par ordre alphabétique
$ compgen -c |sort |uniq |head
!
.
:
[
[[
]]
{
}
2to3-2.7
411toppm
# Liste des 10 ernières commandes par ordre alphabétique
$ compgen -c |sort |uniq |tail
zip
zipcloak
zipdetails
zipgrep
zipinfo
zipnote
zipsplit
zless
zmore
znew
Elles peuvent être classées en 5 types :
$ compgen -b # Option -b builtin
$ type cd
cd est une primitive du shell
$ compgen -k # Option -k keywords
$ type if
if est un mot-clé du shell
$ compgen - c # Liste des commandes
$ type apt # Commandes accessibles avec les droits utilisateurs
apt est /usr/bin/apt
$ su -l -c 'type blkid' # Commandes accessibles avec les droits privilégiés seulement
Mot de passe :
blkid est /usr/sbin/blkid
$ compgen -A function # Liste des fonctions
$ type quote
quote est une fonction
quote ()
{
local quoted=${1//\'/\'\\\'\'};
printf "'%s'" "$quoted"
}
$ compgen -a # Option -a alias
$ type ls
ls est un alias vers « ls --color=auto »
$ type cd
cd est une primitive du shell
$ which cd
$ cd test
$ /usr/bin/cat test
$ cat test
$ printenv PATH
/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
$ echo 'PATH=$PATH:$HOME/script' >> ~/.bashrc
Pour que le répertoire script soit prioritaire, la commande d'ajout serait
$ echo 'PATH=$HOME/script:$PATH:' >> ~/.bashrc
Lorsque les programmes sont fournis par des fichiers installés par des paquets, il est possible de trouver le nom du paquet à l'aide de l'option -L de la commande dpkg
On peut distinguer
$ type cut
cut est /usr/bin/cut
$ dpkg -S /usr/bin/cut
coreutils: /usr/bin/cut
$ type sed
sed est /usr/bin/sed
$ dpkg -S /bin/sed # A partir de Debian 10, /bin est un lien vers /usr/bin
sed: /bin/sed
$ type dmesg
dmesg est /usr/bin/dmesg
$ dpkg -S /bin/dmesg # A partir de Debian 10, /bin est un lien vers /usr/bin util-linux: /bin/dmesg
$ su -l -c 'type blkid'
Mot de passe :
blkid est /usr/sbin/blkid
$ dpkg -S /sbin/blkid # A partir de Debian 10, /bin est un lien vers /usr/bin util-linux: /sbin/blkid
$ type ls
ls est un alias vers « ls --color=auto »
$ unalias ls
$ type ls
ls est/usr/bin/ls
$ dpkg -S /bin/ls # A partir de Debian 10, /bin est un lien vers /usr/bin coreutils: /bin/ls
$ type touch
touch est haché (/usr/bin/touch)
ce qui signifie que le chemin vers la commande (/usr/bin/touch dans l'exemple ci-dessus) a été mémorisé par bash pour accélérer le lancement de la commande. La liste des commandes hachées peut-être affichée avec la commande hash
$ hash -l
$ hash -l
builtin hash -p /usr/bin/aptitude aptitude
builtin hash -p /usr/bin/dpkg dpkg
builtin hash -p /usr/bin/sudo sudo
builtin hash -p /usr/bin/locate locate
builtin hash -p /usr/bin/ls ls
Chaque session bash possède sa propre liste, initialement vide au début de la session, puis complétée au fur et à mesure par les commandes passées dans la session