\documentclass{report}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{textcomp}
\usepackage{geometry}
\geometry{top=15mm, bottom=15mm, left=1cm, right=1cm}
\usepackage[french]{babel}
\usepackage{pslatex}
\usepackage[colorlinks=true,urlcolor=black]{hyperref}
\usepackage{graphicx}
\usepackage{fancyhdr}
\pagestyle{fancy}
\renewcommand{\footrulewidth}{0.4pt}
\fancyfoot[L]{Uubu.fr}
\fancyfoot[R]{mar. juil. 6 10:46:56 CEST 2010}
\lfoot{\Large \textit{Uubu.fr}}
\hypersetup{pdfinfo={
Title={expr},
Author={Sylvain Girod},
Creator={Bash script from uubu.fr's format version 1},
Producer={Bash script and PDFLaTeX},
Subject={Évalue des expressions et écrit le résultat sur stdout},
CreationDate={D:20100706104656},
ModDate={D:20100706104656},
Keywords={coreutils;GNU}
}}
\begin{document}
 
\begin{center}
{\Huge expr }
\end{center}
\vspace{1cm}
 
\begin{flushleft}
 
{\large Évalue des expressions et écrit le résultat sur stdout}
 
\vspace{10mm}
 
\hspace{1mm}  \textbf{expr} évalue une expression et écrit le résultat sur la sortie standard. les opérandes sont soit des entiers soit des chaînes. Les chaînes ne sont pas entre guillemet pour \textbf{expr}, mais peut être requis pour le shell. Une opérande chaîne ne devrait pas être un parenthèse ou un opérateur de \textbf{expr}. Vous ne devriez pas passer d'entier négatif ou de chaîne avec un '-' final comme premier argument de \textbf{expr}. Cela peut être évité avec des parenthèses.
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge Codes de status }
 
\
 
\begin{description} \normalsize
\item[\hspace{1mm} 0]{si l'expressions est ni null ni 0}
\item[\hspace{1mm} 1]{si l'expression est null ou 0}
\item[\hspace{1mm} 2]{si l'expression est invalide}
\item[\hspace{1mm} 3]{si une erreur interne s'est produite.}
\end{description}
 
\vspace{1cm}{\huge Expressions chaîne }
 
\
 
\begin{description} \normalsize
\item[\hspace{1mm} STRING: REGEX]{Effectue une correspondance de motif. Les arguments sont convertis en chaîne et le second est considéré comme une expression régulière, avec un '\textbf{\textasciicircum }' implicite devant. s'il y'a correspondance et que \textbf{REGEX} utilise '\textbf{\textbackslash{}(}' et '\textbf{\textbackslash{})}', retourne la partie de la chaîne qui correspond. Dans l'expression régulière, '\textbf{\textbackslash{}+}', '\textbf{\textbackslash{}?}', et '\textbf{\textbackslash{}|}' sont des opérateurs qui correspondent respectivement à une correspondance d'un ou plus, zéro ou un, et séparés.}
\item[\hspace{1mm} match STRING REGEX]{correspondance de motif alternatif. identique au précédent.}
\item[\hspace{1mm} substr STRING POSITION LENGTH]{retourne le sous-chaîne de \textbf{STRING} commençant à \textbf{POSITION} avec \textbf{LENGH} longueur. si \textbf{POSITION} ou \textbf{LENGTH} sont des valeurs négatives, retourne une chaîne null.}
\item[\hspace{1mm} index STRING CHARSET]{retourne la première position de \textbf{STRING} où le premier caractère dans \textbf{CHARSET} a été trouvé. retourne 0 si rien n'est trouvé.}
\item[\hspace{1mm} length STRING]{retourne la longueur de STRING}
\item[\hspace{1mm} + TOKEN]{Interprète \textbf{TOKEN} comme une chaîne, même si c'est un mot clé comme \textbf{MATCH} ou un opérateur comme '\textbf{/}'}
\item[\hspace{1mm} ]{pour que \textbf{expr} interprète les mots clés comme chaîne, vous devez utiliser "\textbf{'}"}
\end{description}
 
\vspace{1cm}{\huge Expressions numériques }
 
\
 
\begin{description} \normalsize
\item[\hspace{1mm} + - ]{addition et soustraction. les arguments sont convertis en entiers; une erreur se produit s'ils ne peuvent être convertis.}
\item[\hspace{1mm} * / \% ]{mulitplication, division, modulo. les arguments sont convertis en entiers ; une erreur se produit s'ils ne peuvent être convertis}
\end{description}
 
\vspace{1cm}{\huge Relations pour expr }
 
\
 
\begin{description} \normalsize
\item[\hspace{1mm} | ]{retourne le premier argument s'il est non null ni zéro. sinon le deuxième argument s'il est non null ni zéro.}
\item[\hspace{1mm} \& ]{retourne le premier argument s'il est non null ni zéro, sinon retourne 0. N'évalue pas le deuxième argument.}
\item[\hspace{1mm} < <= = == != >= >]{Compare les arguments et retourne 1 si la relation est vrai, 0 sinon. == est équivalement à =.}
\end{description}
 
\vspace{1cm}{\huge Exemples }
 
\
 
\hspace{1mm} ajouter 1 à la variable shell foo \\
\hspace{1mm} \textbf{foo=`expr \$foo + 1`} \\
\hspace{1mm} afficher la partie non-répertoire du nom de fichier stocké dans \$fname \\
\hspace{1mm} \textbf{expr \$fname : '.*/\textbackslash{}[.*\textbackslash{}]' '|' \$fname} \\
\hspace{1mm} exemple montrant que \textbackslash{}+ est un opérateur \\
\hspace{1mm} \textbf{expr aaa : 'a\textbackslash{}+'} \\
\hspace{1mm} affiche 3 \\
\hspace{1mm} \textbf{expr abc : 'a\textbackslash{}(.\textbackslash{})c'} \\
\hspace{1mm} affiche b \\
\hspace{1mm} \textbf{expr index abcdef cz} \\
\hspace{1mm} affiche 3 \\
\end{flushleft}
\end{document}
