Verified Commit 98f75f2a authored by Stephane Bonnet's avatar Stephane Bonnet
Browse files

Fini les bases

parent 9a447999
Pipeline #33730 passed with stage
in 23 seconds
......@@ -414,30 +414,258 @@ ls: impossible d'accéder à 'c': Aucun fichier ou dossier de ce type
\end{frame}
\subsection{Afficher des fichiers}
\begin{frame}
\frametitle{Voir des fichiers}
\begin{frame}[fragile]{Voir des fichiers}
Inutile d'utiliser un éditeur pour afficher un fichier
\begin{block}{\cmd{cat}}
\emph(conCATetnate) prend une liste de fichiers et ``affiche'' leur contenu.
\end{block}
\begin{beamercolorbox}[rounded=true,shadow=true]{terminal}
\begin{Verbatim}
$ cat /etc/issue
Ubuntu 18.04.1 LTS \textbackslash{}n \textbackslash{}l
\end{Verbatim}
\end{beamercolorbox}
\begin{block}{\cmd{less}}
Affiche un ou plusieurs fichiers. Utiliser les flèches pour faire défiler le texte, \cmd{q} pour quitter.
\end{block}
\begin{beamercolorbox}[rounded=true,shadow=true]{terminal}
\begin{Verbatim}
$ less /usr/share/dict/words
\end{Verbatim}
\end{beamercolorbox}
\begin{alertblock}{\cmd{less} et \cmd{man}}
C'est \cmd{less} qui est utilisé par \cmd{man} pour afficher les pages de manuel.
\end{alertblock}
\end{frame}
\subsection{Redirections}
\begin{frame}
\frametitle{Les fichiers standards}
%% stdin, stdout, stderr
\begin{frame}{Les fichiers standards}
A l'exécution, chaque programme se voit attribuer trois canaux de communication:
\begin{description}
\item[stdin] représente tout ce qui est tapé au clavier
\item[stdout] représente tout ce qui est affiché à l'écran
\item[stderr] est une autre sortie destinée aux messages d'erreur
\end{description}
\end{frame}
\begin{frame}{Descripteurs de fichier}
Du point de vue du programme, ces canaux sont des fichiers particuliers. Un programme peut ouvrir de
nombreux fichiers, identifiés par un descripteur de fichier.
\begin{block}{Descripteur de fichier}
Numéro associé à chaque fichier ouvert dans un programme. Utilisé par le programme pour accéder au fichier.
\end{block}
\end{frame}
\begin{frame}{Descripteurs de fichiers et fichiers standard}
Les fichiers standards sont associés dans tous les programmes aux trois premiers descripteurs.
\begin{center}
\begin{tabular}{|c|c|}
\hline
\textbf{Fichier} & \textbf{Descripteur} \\
\hline\hline
stdin & 0 \\
\hline
stdout & 1 \\
\hline
stderr & 2 \\
\hline
\end{tabular}
\end{center}
\end{frame}
\begin{frame}{Redirections}
Elles consistent à associer aux descripteurs standards d'autre fichiers que ceux par défaut.
\begin{description}
\item[Redirections de sortie] Redirigent \cmd{stdout} vers un fichier
\item[Redirections d'erreur] Redirigent \cmd{stderr} vers un fichier
\item[Redirections d'entrée] Redirigent \cmd{stdin} depuis un fichier
\end{description}
\end{frame}
\begin{frame}[fragile]{Redirection de sortie: opérateurs \cmd{>} et \cmd{>>}}
\begin{block}{Opérateur \cmd{>}}
Redirige \cmd{stdout} vers un fichier. Le contenu du fichier est préalablement effacé.
\end{block}
\begin{block}{Opérateur \cmd{>>}}
Redirige \cmd{stdout} vers un fichier. Ajoute la sortie à la fin du fichier.
\end{block}
\begin{beamercolorbox}[rounded=true,shadow=true]{terminal}
\begin{Verbatim}
$ echo "Une première ligne" \textcolor{yellow}{>} fichier.txt
$ cat fichier.txt
Une première ligne
$ echo "Une seconde première ligne" \textcolor{yellow}{>} fichier.txt
$ cat fichier.txt
Une seconde première ligne
$echo "Une seconde ligne" \textcolor{yellow}{>>} fichier.txt
$ cat fichier.txt
Une seconde première ligne
Une seconde ligne
\end{Verbatim}
\end{beamercolorbox}
\end{frame}
\begin{frame}{Redirection de sortie: \cmd{cat}}
\cmd{cat} prend tout son sens avec les redirection de sortie. La commande
\begin{exampleblock}{}
\cmd{cat fichier1 fichier2 > fichier3}
\end{exampleblock}
concatène fichier1 et fichier2 dans fichier3.
\begin{block}{\cmd{cat} pour créer des fichiers}
\cmd{cat} est très utile pour créer des fichiers quand on n'a pas d'éditeur:
il suffit de rediriger sa sortie vers un nouveau fichier.
\cmd{cat > newfile}
Pour terminer, utiliser \cmd{CTRL+D}
\end{block}
\end{frame}
\begin{frame}[fragile]{Redirection d'entrée: opérateur <}
Redirige le contenu d'un fichier vers \cmd{stdin}.
\begin{block}{\cmd{bc}}
\cmd{bc} est un programme de calcul en précision arbitraire. Utiliser \cmd{CTRL+D} ou ``quit'' pour quitter.
\end{block}
\begin{beamercolorbox}[rounded=true,shadow=true]{terminal}
\begin{Verbatim}
$ echo 1+1 > calcul
$ bc \textcolor{yellow}{<} calcul
2
\end{Verbatim}
\end{beamercolorbox}
\begin{alertblock}{}
\cmd{bc} a lu son entrée dans le fichier \cmd{calcul} et pas au clavier.
\end{alertblock}
\end{frame}
\begin{frame}[fragile]{Redirection d'erreur}
On peut indiquer optionnellement le descripteur redirigé.
\begin{block}{Redirection de stderr}
Il suffit d'indiquer dans la redirection que c'est le descripteur 2 qui est redirigé:
\cmd{ls toto 2> erreur}
\end{block}
\begin{beamercolorbox}[rounded=true,shadow=true]{terminal}
\begin{Verbatim}
$ ls foo
ls: impossible d'accéder à 'foo': Aucun fichier ou dossier de ce type
$ ls foo \textcolor{yellow}{2>} erreurs
$ cat erreurs
ls: impossible d'accéder à 'foo': Aucun fichier ou dossier de ce type
\end{Verbatim}
\end{beamercolorbox}
\end{frame}
\begin{frame}
\frametitle{Redirections}
\begin{frame}{Redirection vers un descripteur}
On peut indiquer optionnellement le descripteur de destination
\begin{block}{Redirection vers un descripteur}
Il suffit d'indiquer le numéro de descripteur préfixé par \cmd{\&}
\end{block}
\begin{exampleblock}{Redirection de \cmd{stderr} vers \cmd{stdout}}
\cmd{ls -lR / >filelist 2>\&1 }
Redirige la sortie standard dans filelist et la sortie d'erreur vers la sortie standard.
Les erreurs de \cmd{ls} apparaitront dans \cmd{filelist}.
\end{exampleblock}
\begin{alertblock}{Attention à l'ordre}
\cmd{ls -lR / 2>\&1 >filelist} ne produit pas le même résultat
\end{alertblock}
\end{frame}
\subsection{Économiser le clavier}
\begin{frame}
\frametitle{Pour les flemmards: l'autocomplétion}
\begin{frame}{L'autocomplétion}
Accessible par \cmd{TAB} après avoir tapé le début de ce qu'on cherche.
\begin{block}{Autocomplétion dans le système de fichiers}
\begin{enumerate}
\item[\cmd{TAB}] complète les première lettres s'il n'y a pas d'ambiguïté
\item[\cmd{TAB TAB}] affiche une liste des possibilités d'autocomplétion
\end{enumerate}
\end{block}
\begin{block}{Autocomplétion en général}
\cmd{TAB} peut aussi autocompléter des commandes, des arguments, etc.
Il faut en abuser!
\end{block}
\begin{alertblock}{Contexte}
Sensible au contexte et ne présente que des
propositions qui ont du sens... en général.
\end{alertblock}
\end{frame}
\begin{frame}{Éditer la ligne de commande}
On peut se déplacer dans la ligne de commande avec les flèches et l'éditer.
Inutile de tout recopier.
\cmd{bash} permet aussi l'édition avec des raccourcis clavier de style \emph{emacs}.
\begin{center}
\begin{tabular}{|c|c|}
\hline
\textbf{Raccourci} & \textbf{Action} \\
\hline\hline
\cmd{ALT+f} & Avance d'un mot \\
\hline
\cmd{ALT+b} & Recule d'un mot \\
\hline
\cmd{CTRL+a} & Va en début de ligne \\
\hline
\cmd{CTRL+e} & Va en fin de ligne \\
\hline
\cmd{ATL+d} & Supprime jusqu'à la fin du mot \\
\hline
\cmd{ATL+Backspace} & Supprime jusqu'au début du mot \\
\hline
\cmd{CTRL+y} & Réinsère la suppression \\
\hline
\cmd{CTRL+k} & Supprime la fin de ligne \\
\hline
\cmd{CTRL+u} & Supprime de début de ligne \\
\hline
\cmd{CTRL+\_} & Annule le dernier changement \\
\hline
\end{tabular}
\end{center}
\end{frame}
\begin{frame}{Et si j'aime pas Emacs?}
\cmd{bash} supporte aussi un mode \cmd{vi}.
\begin{block}{Activer le mode \emph{vi}}
\cmd{set -o vi}
\end{block}
\begin{block}{Activer le mode \emph{emacs}}
\cmd{set -o emacs}
\end{block}
\begin{alertblock}{RTFM}
Il y a beaucoup d'autres raccourcis... lisez la doc : \cmd{man bash}.
\end{alertblock}
\end{frame}
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment