Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Picasoft
APIs
Init
Linux
Commits
b1a2572a
Verified
Commit
b1a2572a
authored
Jan 21, 2019
by
Stephane Bonnet
Browse files
pipes et exercices
parent
795858a1
Pipeline
#33804
failed with stage
in 13 seconds
Changes
1
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
src/cli/semi-adv.tex
View file @
b1a2572a
...
...
@@ -9,7 +9,8 @@
\end{block}
\begin{block}
{
wildcard (
\emph
{
joker
}
)
}
Lettre spéciale qui représente un caractère ou une suite de caractères quelconques dans un
\emph
{
globbing pattern
}
.
Lettre spéciale qui représente un caractère ou une suite de caractères
quelconques dans un
\emph
{
globbing pattern
}
.
\end{block}
\end{frame}
...
...
@@ -754,10 +755,90 @@ The quick yellow fox jumps over the lazy dog
\end
{
frame
}
\subsection
{
Combiner les commandes: les pipes
}
\begin
{
frame
}
[
fragile
]
{
Pipes
}
\begin
{
frame
}
[
fragile
]
{
Les Pipes
}
\framesubtitle
{
Généralités
}
\begin
{
alertblock
}{
KISS
(
Keep It Simple, Stupid
)
}
Les commandes, aussi complexes qu'elles soient, sont chacune spécialisées dans une
fonction spécifique. C'est la philosophie générale des commandes Unix: ne faire qu'une
chose, mais la faire bien.
\end
{
alertblock
}
\begin
{
block
}{
Les pipes
(
ou tubes
)
}
\begin
{
itemize
}
\item
Connectent la sortie standard d'une commande à l'entrée standard d'une autre.
\item
Permettent de chaîner des commandes pour construire des traitements complexes.
\end
{
itemize
}
\end
{
block
}
\end
{
frame
}
\begin
{
frame
}
[
fragile
]
{
Les Pipes
}
\framesubtitle
{
Comment ça marche?
}
Supposons qu'on veuille voir le listing complet des fichiers du système. On peut
exécuter ``
\cmd
{
ls
-
lR
/
}
'' mais la sortie est trop grande et on ne pourra pas tout voir...
On peut utiliser les services de
\cmd
{
less
}
pour paginer la sortie.
Il suffit de taper:
\begin
{
exampleblock
}{}
\cmd
{
ls
-
lR
/
| less
}
\end
{
exampleblock
}
Le symbole ``|'' représente le pipe entre les deux commandes.
\end
{
frame
}
\begin
{
frame
}
[
fragile
]
{
Les Pipes
}
\framesubtitle
{
Remarques
}
\begin
{
itemize
}
\item
Les pipes ne sont pas de taille infinie. Les commandes qui produisent
les données
(
ici
\cmd
{
ls
}
)
attendent lorsqu'ils sont pleins.
\textbf
{
On ne peut pas perdre
de données dans un pipe.
}
\item
Si on arrête le consommateur
(
ici
\cmd
{
less
}
)
, le producteur se termine également
par fermeture de son fichier de sortie standard.
\item
De même, la fin du producteur entraine la fermeture de l'entrée standard du
consommateur et donc son arrêt.
\end
{
itemize
}
\end
{
frame
}
\begin
{
frame
}
[
fragile
]
{
\cmd
{
tee
}}
\begin
{
frame
}
[
fragile
]
{
Les Pipes
}
\framesubtitle
{
La commande
\cmd
{
tee
}}
On peut vouloir enregistrer la sortie d'une commande dans un fichier en même temps
qu'on la transmet à une autre commande par un pipe.
\begin
{
block
}{
\cmd
{
tee
}}
\begin
{
description
}
\item
[
\cmd
{
tee
}
]
lit son entrée standard, l'enregistre dans un fichier et
la recopie sur sa sortie standard.
\end
{
description
}
\end
{
block
}
\begin
{
exampleblock
}{
Enregistrer la sortie de
\cmd
{
ls
-
lR
}
pendant qu'on compte les fichiers
}
\verb
+
ls
-
lR ~ | tee listing.txt | wc
-
l
+
\end
{
exampleblock
}
\end
{
frame
}
\begin
{
frame
}
[
fragile
]
{
Les Pipes
}
\framesubtitle
{
A vous de jouer
!
}
\begin
{
itemize
}
\item
Téléchargez ``Vingt mille lieues sous les mers'' de Jules VERNE depuis le site du
projet Gutemberg:
\end
{
itemize
}
\begin
{
exampleblock
}{}
\cmd
{
wget http:
//
www.gutenberg.org
/
files
/
54873
/
54873
-
0
.txt
}
\end
{
exampleblock
}
\begin
{
exampleblock
}{
Combien de mots différents sont utilisés par l'auteur?
}
Il faut: lire le fichier, le transformer pour qu'il ait un mot par ligne, trier les mots,
éliminer les mots en double ou plus, compter le nombre de lignes.
\end
{
exampleblock
}
\begin
{
exampleblock
}{
Combien de fois le Capitaine Nemo est
-
il nommé?
}
L'approche est similaire, mais il faut aussi ne garder que le mot ``Nemo''.
\end
{
exampleblock
}
\end
{
frame
}
\subsection
{
Processus et jobs
}
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment