Update cours.sty and finish TP1 UNIX

This commit is contained in:
flyingscorpio@arch-desktop 2021-09-09 20:19:51 +02:00
parent 5916e3608f
commit b65175135b
2 changed files with 99 additions and 27 deletions

View file

@ -28,6 +28,59 @@
\usepackage{parskip}
\usepackage{microtype}
\usepackage{listingsutf8}
\lstset{%
inputencoding=utf8/latin1,
basicstyle=\small\ttfamily,
columns=flexible,
breaklines=true,
extendedchars=true,
literate=
{á}{{\'a}}1 {é}{{\'e}}1 {í}{{\'\i}}1 {ó}{{\'o}}1 {ú}{{\'u}}1
{Á}{{\'A}}1 {É}{{\'E}}1 {Í}{{\'I}}1 {Ó}{{\'O}}1 {Ú}{{\'U}}1
{à}{{\`a}}1 {è}{{\`e}}1 {ì}{{\`\i}}1 {ò}{{\`o}}1 {ù}{{\`u}}1
{À}{{\`A}}1 {È}{{\`E}}1 {Ì}{{\`I}}1 {Ò}{{\`O}}1 {Ù}{{\`U}}1
{ä}{{\"a}}1 {ë}{{\"e}}1 {ï}{{\"\i}}1 {ö}{{\"o}}1 {ü}{{\"u}}1
{Ä}{{\"A}}1 {Ë}{{\"E}}1 {Ï}{{\"I}}1 {Ö}{{\"O}}1 {Ü}{{\"U}}1
{â}{{\^a}}1 {ê}{{\^e}}1 {î}{{\^\i}}1 {ô}{{\^o}}1 {û}{{\^u}}1
{Â}{{\^A}}1 {Ê}{{\^E}}1 {Î}{{\^I}}1 {Ô}{{\^O}}1 {Û}{{\^U}}1
{Ã}{{\~A}}1 {ã}{{\~a}}1 {Õ}{{\~O}}1 {õ}{{\~o}}1 {œ}{{\oe}}1
{Œ}{{\OE}}1 {æ}{{\ae}}1 {Æ}{{\AE}}1 {ß}{{\ss}}1 {ű}{{\H{u}}}1
{Ű}{{\H{U}}}1 {ő}{{\H{o}}}1 {Ő}{{\H{O}}}1 {ç}{{\c c}}1
{Ç}{{\c C}}1 {ø}{{\o}}1 {å}{{\r a}}1 {Å}{{\r A}}1
{€}{{\euro}}1 {£}{{\pounds}}1 {«}{{\guillemotleft}}1
{»}{{\guillemotright}}1 {ñ}{{\~n}}1 {Ñ}{{\~N}}1 {¿}{{?`}}1
}
\let\oldlstinputlisting\lstinputlisting
% make \lstinputlisting always have frame
\renewcommand{\lstinputlisting}[2][]{\oldlstinputlisting[frame=single,#1]{#2}}
\lstnewenvironment{console}[1][]{%
\lstset{%
inputencoding=utf8/latin1,
basicstyle=\small\ttfamily\color{white},
columns=flexible,
breaklines=true,
extendedchars=true,
literate=
{á}{{\'a}}1 {é}{{\'e}}1 {í}{{\'\i}}1 {ó}{{\'o}}1 {ú}{{\'u}}1
{Á}{{\'A}}1 {É}{{\'E}}1 {Í}{{\'I}}1 {Ó}{{\'O}}1 {Ú}{{\'U}}1
{à}{{\`a}}1 {è}{{\`e}}1 {ì}{{\`\i}}1 {ò}{{\`o}}1 {ù}{{\`u}}1
{À}{{\`A}}1 {È}{{\`E}}1 {Ì}{{\`I}}1 {Ò}{{\`O}}1 {Ù}{{\`U}}1
{ä}{{\"a}}1 {ë}{{\"e}}1 {ï}{{\"\i}}1 {ö}{{\"o}}1 {ü}{{\"u}}1
{Ä}{{\"A}}1 {Ë}{{\"E}}1 {Ï}{{\"I}}1 {Ö}{{\"O}}1 {Ü}{{\"U}}1
{â}{{\^a}}1 {ê}{{\^e}}1 {î}{{\^\i}}1 {ô}{{\^o}}1 {û}{{\^u}}1
{Â}{{\^A}}1 {Ê}{{\^E}}1 {Î}{{\^I}}1 {Ô}{{\^O}}1 {Û}{{\^U}}1
{Ã}{{\~A}}1 {ã}{{\~a}}1 {Õ}{{\~O}}1 {õ}{{\~o}}1 {œ}{{\oe}}1
{Œ}{{\OE}}1 {æ}{{\ae}}1 {Æ}{{\AE}}1 {ß}{{\ss}}1 {ű}{{\H{u}}}1
{Ű}{{\H{U}}}1 {ő}{{\H{o}}}1 {Ő}{{\H{O}}}1 {ç}{{\c c}}1
{Ç}{{\c C}}1 {ø}{{\o}}1 {å}{{\r a}}1 {Å}{{\r A}}1
{€}{{\euro}}1 {£}{{\pounds}}1 {«}{{\guillemotleft}}1
{»}{{\guillemotright}}1 {ñ}{{\~n}}1 {Ñ}{{\~N}}1 {¿}{{?`}}1,
backgroundcolor=\color{black}, #1
}%
}{}
\usepackage{graphicx}
\usepackage[hyphens]{url}

View file

@ -4,32 +4,6 @@
\author{Tunui Franken}
\usepackage{../cours}
\usepackage{listingsutf8}
\lstnewenvironment{console}[1][]{%
\lstset{%
inputencoding=utf8/latin1,
basicstyle=\small\ttfamily\color{white},
columns=flexible,
breaklines=true,
extendedchars=true,
literate=
{á}{{\'a}}1 {é}{{\'e}}1 {í}{{\'\i}}1 {ó}{{\'o}}1 {ú}{{\'u}}1
{Á}{{\'A}}1 {É}{{\'E}}1 {Í}{{\'I}}1 {Ó}{{\'O}}1 {Ú}{{\'U}}1
{à}{{\`a}}1 {è}{{\`e}}1 {ì}{{\`\i}}1 {ò}{{\`o}}1 {ù}{{\`u}}1
{À}{{\`A}}1 {È}{{\`E}}1 {Ì}{{\`I}}1 {Ò}{{\`O}}1 {Ù}{{\`U}}1
{ä}{{\"a}}1 {ë}{{\"e}}1 {ï}{{\"\i}}1 {ö}{{\"o}}1 {ü}{{\"u}}1
{Ä}{{\"A}}1 {Ë}{{\"E}}1 {Ï}{{\"I}}1 {Ö}{{\"O}}1 {Ü}{{\"U}}1
{â}{{\^a}}1 {ê}{{\^e}}1 {î}{{\^\i}}1 {ô}{{\^o}}1 {û}{{\^u}}1
{Â}{{\^A}}1 {Ê}{{\^E}}1 {Î}{{\^I}}1 {Ô}{{\^O}}1 {Û}{{\^U}}1
{Ã}{{\~A}}1 {ã}{{\~a}}1 {Õ}{{\~O}}1 {õ}{{\~o}}1 {œ}{{\oe}}1
{Œ}{{\OE}}1 {æ}{{\ae}}1 {Æ}{{\AE}}1 {ß}{{\ss}}1 {ű}{{\H{u}}}1
{Ű}{{\H{U}}}1 {ő}{{\H{o}}}1 {Ő}{{\H{O}}}1 {ç}{{\c c}}1
{Ç}{{\c C}}1 {ø}{{\o}}1 {å}{{\r a}}1 {Å}{{\r A}}1
{}{{\euro}}1 {£}{{\pounds}}1 {«}{{\guillemotleft}}1
{»}{{\guillemotright}}1 {ñ}{{\~n}}1 {Ñ}{{\~N}}1 {¿}{{?`}}1,
backgroundcolor=\color{black}, #1
}%
}{}
\begin{document}
@ -153,11 +127,56 @@
\subsection{Quel est l'effet de la commande suivante~: \texttt{echo c'est la commande '`date`'}~?}
L'apostrophe de \texttt{c'est} n'est pas échappé, le shell va donc demander la quote fermante.
En admettant qu'il s'agit d'une erreur, les single quotes autour de la commande \texttt{date} l'empêchent de s'exécuter.
\subsection{Donner une autre solution permettant d'annuler la substitution de la commande \texttt{date} dans la commande \texttt{echo}~?}
On peut échapper les backquotes par un backslash.
On peut échapper les backquotes par des backslashs.
\subsection{Quel est l'effet de la commande suivante~: \texttt{echo "c'est la commande `date`"}~?}
Cette fois la commande est dans des double quotes, donc le shell va interpréter la backticks, et exécuter la commande \texttt{date}.
\subsection{Comparer le résultat des deux commandes suivantes et faites une remarque. \texttt{echo D*} et \texttt{echo "D*"}}
\texttt{echo D*} écrit toute chaîne commençant par `D' dans le répertoire courant (le shell fait une expansion).
\texttt{echo "D*"} écrit la chaîne `D*', tout simplement.
\section{Niveau avancé}
\subsection{Commandes internes et externes}
\subsubsection{Rappeler le principe d'exécution de la commande \texttt{which}.}
La commande \texttt{which} prend une commande en paramètre.
Si la commande existe dans le \texttt{\$PATH}, elle est exécutable et \texttt{which} renverra alors le chemin absolu de la commande.
Si aucun chemin absolu n'existe, cela est dû au fait qu'il s'agit d'une commande interne~: son code fait partie du code du shell (généralement en C).
\subsubsection{Quel est l'intérêt des commandes internes~?}
C'est avant tout une question de performance~: une commande interne ne démarrera pas de processus séparé.
\subsubsection{Donner des exemples des deux types de commandes.}
Bien que les commandes internes varient d'un shell à l'autre, on peut citer \texttt{mkdir} et \texttt{cd} comme commandes internes, et \texttt{ls} ou \texttt{apt} comme commandes externes.
\subsection{Variables shell et Variables d'environnement}
\subsubsection{Essayer les exemples d'affectation des variables données ci-dessous et expliquer les résultats.}
\texttt{NOM=JEAN}, \texttt{X='\$PATH='\$PATH}, \texttt{liste=`ls`}~: ces commandes affectent des chaînes à une variable (chaîne directement, contenu d'une variable, ou sortie d'une commande).
\texttt{echo \$NOM} affiche le contenu de la variable \texttt{\$NOM}.
\texttt{export NOM} rend accessible la variable \texttt{\$NOM} en dehors d'un script.
\texttt{unset NOM} affecte une chaîne vide à la variable \texttt{\$NOM}.
\subsubsection{La variable \texttt{PS1} précise la valeur de l'invite de la ligne de commande. Changer l'invite pour qu'il devienne de la forme \texttt{login@nom-machine \$}}
\begin{console}[gobble=12]
$ echo "PS1='\u@\h $'" >> ~/.bashrc
\end{console}
\end{document}