Shell
Le shell ou invite de commande (command prompt) ou terminal virtuel est une interface en ligne de commande pour accéder à l'OS. Il permet d'exécuter les programme disponibles dans les répertoires listés dans la variable d'environnement path
.
Shells:
Linux:
sh (Bourne Shell, minimal [UNIX philosophy desgined: one program ↔ one function])
ksh (Korn Shell, amélioration de sh)
csh (C Shell, amélioration de sh: fonctions implémentée en C plutôt que dans des programmes séparés)
bash (Bourne again Shell, amélioration de sh, monde linux)
Tcsh (Tenex C Shell)
zsh (Zero Shell)
rsh (Remote Shell)
ash (Almquist Shell, portage linux de sh)
dash (Debian Almquist Shell)
Windows:
Interfaces:
-
-
-
Tout ce que vous avez toujours voulu savoir sur les
redirections
Shell commands
Astuces et explications du comportement de quelques utilitaires GNU Coreutils
Edition
ed (basic)
edit
ex
vi (visual ex)
-
awk (pattern matching)
-
Archivage
tar (archiver GNU)
cpio (archiver UNIX)
pax (archiver, essai de standardisation)
compress
gzip (GNU, utilise Deflate)
bzip2 (comprime mieux que Deflate, mais plus lent, parallélisable)
lzma (comprime mieux que bzip2, mais plus lent)
lzo
xz (comprime avec lzma, wrapper)
rzip (compression de fichier massifs (plusieurs centaines de Mo et potentiellement redondant à longue distance))
rsync (synchronisation de répertoires)
Explorer FS
Manipulation fichier
cp
mv
rm
mkdir
rmdir
-
touch (met à jour la date de modification)
chmod
chown
umask (UserMask, masque pour la mise en place des droits lors de la création d'un fichier).
Gestion de text
echo|print (dépend du shell)
cat
head
tail
grep
wc (WordCount, peut compter des caractères, des mots ou des lignes)
comm (Output common lines between 2 files)
Gestion d'évolution
Environnement
Utilitaires spécifiques
lsusb
pkill
chroot (Changer la racine pour un processus, et donc possiblement lui faire utiliser des bibliothèques en version spécifiques, différentes de celles du système (ex.: 32bits sur 64bits, version d'un langage, ect).
mount (mount -a pour rejouer la fstab, pmount pour monter des pluggable devices)
Réseau
Astuces
Un terminal récupère son entrée sur un fichier texte (stdin ou script). Il parse donc ce texte et agit en conséquence. Toutes les problématiques qui tournent autour du codage des caractères sont donc présentes.
Ctrl-H
Lors d'une connexion à distance sur un hôte UNIX en ksh depuis un client windows, par exemple, ce genre de problème peut se présenter.
Les backspace ou les déplacements via les touches flèches du clavier sont envoyés à l'hôte distant, mais pas forcément imprimés par le terminal client. Il s'en suit des comportement étranges:
Pour contourner ce problème, on peut par exemple configurer PuTTY pour gérer les backspace comme des Ctrl-H.
Debug
Activer l'affichage des données de debug du shell : set -xv
. NB : les outputs de debug sortent sur stderr.
Astuce : changer la Prompt String : PS4=“—$(date +%T)> ”
Il est possible de mixer ce mode debug avec une redirection : exec 2> dump.txt 1>&2
Résumé :
PS4="---$(date +%T)> "
set -xv
exec 2> dump.txt 1>&2
Lister les plus gros fichiers
du -a /var | sort -n -r | head -n 10
Calculs arythémtiques
Manipuler le (x)term
# Set window title
echo -ne "\033]2;"$m"\007"
# In mintty, set the mapping for ANSI colors
echo -ne '\e]4;4;#4965D6\a' # blue