From b65175135b3a1aa06f5f748e66e1d88b0c01dec5 Mon Sep 17 00:00:00 2001 From: "flyingscorpio@arch-desktop" Date: Thu, 9 Sep 2021 20:19:51 +0200 Subject: [PATCH] Update cours.sty and finish TP1 UNIX --- cours.sty | 53 +++++++++++++++++++++++++++++++ unix/tp1_20210910.tex | 73 +++++++++++++++++++++++++++---------------- 2 files changed, 99 insertions(+), 27 deletions(-) diff --git a/cours.sty b/cours.sty index 3f289a1..9e50dec 100644 --- a/cours.sty +++ b/cours.sty @@ -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} diff --git a/unix/tp1_20210910.tex b/unix/tp1_20210910.tex index ec78b20..731ac48 100644 --- a/unix/tp1_20210910.tex +++ b/unix/tp1_20210910.tex @@ -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}