TetaTricks/chap/shell.tex

86 lines
3.0 KiB
TeX
Raw Normal View History

2020-11-02 23:08:45 +01:00
\chapter{Le Shell}\index{shell}
2020-11-16 19:45:21 +01:00
\label{chap:shell}
2020-11-02 23:08:45 +01:00
2021-10-04 22:24:01 +02:00
Le \texttt{shell} est le coquillage qui isole le
MC/P\footnote{Master Control Program} des yusers.
2020-11-02 23:08:45 +01:00
En gros, hein, je vais simplifier, et me limiter aux
bricolages constructifs et/ou amusant. Il y aura du gore\index{gore}
2023-04-02 23:32:29 +02:00
aussi, parce que le shell est à la fois un interpréteur de commande
et un langage de programmation.
Ces deux notions ont beaucoup de choses en commun, comme nous
allons essayer de le voir.
Nous allons nous concentrer sur le \textsl{Bourne again shell}
(aka \texttt{bash}\footnote{aka GNU/shell ?}) qui est un des plus
répandus, du moins dans le monde Linux\index{Linux}.
Mais il en existe d'autres : sh, ksh, ash, zsh, tthsh\dots
2020-11-16 19:45:21 +01:00
2020-11-02 23:08:45 +01:00
% ==============================================================
\section{Interpréteur}\index{cli}
2023-06-29 11:23:11 +02:00
Ceci est un prompt. Son petit nom est \texttt{PS1}. On peut y
mettre plein d'informations utiles et de \textsl{mises en forme} assez
funky\footnote{Un peu de calme, fatalerrors !} permettant
d'enhancer la reliability de votre UI/UX.
2020-11-02 23:08:45 +01:00
% ==============================================================
\section{Langage}\index{script}
2023-06-29 11:23:11 +02:00
Le shell est aussi, et surtout, un langage de programmation, parfois
appelé \textsl{glue-language} parce qu'il permet de "coller" ensemble
plusieurs opérations élémentaires, d'abord avec ses opérateurs internes
et ensuite l'utilisation d'outils
extérieurs\footnote{Grep, Sed, Awk, BwBasic...}
divers. C'est \textsl{très} efficace.
\subsection{Le \textsc{shebang}} \index{shebang}
Le shebang, c'est ce couple de caractères \texttt{\#!} qui apparait
au tout début d'un script shell.
Le 'she' est l'abréviation de 'sharp', coupant en français. C'est
probablement une allusion aux cotés tranchants du \texttt{\#}.
Quand au 'bang', c'est le point d'exclamation après l'explosion
de la forkbomb.
Quand on demande au noyau\index{kernel} d'exécuter un fichier
\texttt{(man 3 exec}), il va en lire d'abord les premiers
octets. Si les deux premiers sont \textsl{0x23 0x21}, le reste
de la première ligne sera interprété pour lancer un autre exécutable,
avec un traitement particuler des options.
2020-11-02 23:08:45 +01:00
% ==============================================================
2021-08-01 14:53:41 +02:00
\section{Le pipeline}\index{pipeline}\label{pipeline}
2023-06-29 11:23:11 +02:00
Une invention géniale, dont vous pouvez voir un exemple d'utilisation
par un gadget sonore en page \pageref{say-uptime} et
2021-08-01 14:53:41 +02:00
un bout de code C en page \pageref{filtre-unix}.
2023-06-29 11:23:11 +02:00
Exemple rapide~:
\begin{verbatim}
$ uptime | tr " " "X"
X09:22:29XupX33Xdays,X14:00,XX8Xusers,XXloadXaverage:X0.12,X0.17,X0.17
\end{verbatim}
% ==============================================================
\section{Les \textsl{locales}}
\index{locales}
% new: Mon Apr 17 10:54:45 UTC 2023
Quelle sont les différences entre \texttt{en\_US.UTF-8} et
\texttt{C.UTF-8} ?
2021-02-04 09:56:36 +01:00
% ==============================================================
2020-11-02 23:08:45 +01:00
\section{Questions à voir}
2020-11-16 19:45:21 +01:00
\begin{itemize}
\item le traitement des chaines de caractères\dots
2023-06-29 11:23:11 +02:00
\item la gestion des co-routines\dots
2020-11-16 19:45:21 +01:00
\end{itemize}
2020-11-02 23:08:45 +01:00
% ==============================================================