Stage Unix

Environnement de travail

  • Téléchargez l’archive suivante : petit prince
  • Placez la dans votre répertoire stage_unix. Ce répertoire n’existant pas, pensez à le créer.
  • Extraire le contenu.
  • Bougez des fenêtres et dockez les. Jouez avec les bureaux.

Faire glisser la fenêtre à gauche, ou à droite, ou en haut. Pour changer de bureau: Ctrl - Alt - fleches

  • Créer des filtres.

Traitement de texte

Vous trouverez des informations bien utiles sur latex ici

  • Créer un dossier petit-prince dans votre maison.
  • Ouvrir un terminal et vous rendre dans le dossier crée juste avant (cd petit-prince)
  • Ouvrir et éditer le ficher petit-prince.tex à l’aide d’emacs
  • Copier / coller dans emacs le texte ci-dessous. Le sauvegarder..
\documentclass[a4paper,10pt]{article} % Appel a une classe de document
\usepackage{amsmath} % Appel a un paquet optionnel de math
\usepackage{graphicx} % Ajouter le paquet de gestion des images
\usepackage[utf8]{inputenc} % Reconnaissance de l'UTF-8
\usepackage[T1]{fontenc} % Chargement de fontes truetype (caractères accentués)
\usepackage[french]{babel} % Localisation en français

% Personnalisation du style global
\pagestyle{empty}
\begin{document}

% Contenu du document
Bonjour le monde de LaTeX !

\end{document}
  • Avec Ctrl+x 1, Ctrl+x 2, Ctrl+x 3, on peut partitionner son emacs. Partitionnez votre éditeur en trois parties. Revenir à une seule.
  • Générer un pdf.

    pdflatex petit-prince.tex

  • Le regarder
  • Récupérer le contenu du chapitre 1 du petit prince. Remplacer avec le contenu du fichier petit-prince.tex
  • Régénérer le pdf
  • Reformattez les différents paragraphes

Commande fill-paragraph ou fill-region, raccourci M-q

  • Rajouter une page de garde (l’auteur est “Antoine De Saint-Exupéry” et le titre “Le petit prince”)

    \maketitle Si on veut obtenir une page de garde sur un page à part, il faudra changer la classe de document, par exemple en report. Pour cela: \documentclass[a4paper,10pt]{article}

  • Pour l’imprimer en deux par page et le laisser lisible, essayez d’augmenter la taille de la fonte de base.

Changer la taille de police dans documentclass

Voici quelques commandes utiles en latex :

Commande Effet
emph mise en emphase (italique)
textbf mise en gras (bold font)
$ mettre une formule
$$ ouvrir un environnement math
label créer une étiquette
ref afficher la valeur d’une référence
input insérer un autre fichier
includegraphics insérer une image
  • Rajouter les images qui vont bien dans le premier chapitre.

    \includegraphics[scale=0.8]{mon_image.jpg} 
    
  • Rajouter l’équivalent du tableau suivant

Nom (à droite) Prénom (Aligné à gauche) Date (centrée)
Rollet Antoine 29/02
Morandat Floréal 21/12
Bienvenu Jean-Luc 21/12
Renault David 21/12
\begin{tabular}{rgc}
Rollet    &	Antoine  &	29/02\\
Morandat  & Floréal  &	21/12\\
Bienvenu  & Jean-Luc &	21/12\\
Mystérion &	Sauveur  &  21/12\\
\end{tabular}
  • Matérialiser les colonnes et la ligne d’en-tête avec un trait
\begin{tabular}{|r|g|c|}
\hline
Rollet    &	Antoine  &	29/02\\
\hline
Morandat  & Floréal  &	21/12\\
Bienvenu  & Jean-Luc &	21/12\\
Mystérion &	Sauveur  &  21/12\\
\hline
\end{tabular}
  • Rajouter la formule suivante (juste pour faire joli) au document
$$ E \neq \frac{MC^2}{\Pi}$$
  • On veut rajouter d’autres chapitres. On se propose de les séparer en plusieurs fichiers (un par chapitre par exemple).

Utiliser la commande \input

  • Essayez de changer le style de article à report.

Normalement ça a déjà été fait pour pouvoir obtenir une page de garde. \documentclass{report}

  • Rajouter la table des matières

\tableofcontents

  • Transformer les images en figures. Leur attribuer un nom et faire référence à ces figures en lieu et place des images originales.
\begin{figure}
  \includegraphics[width=\linewidth]{image.jpg}
  \caption{Une belle image}
  \label{fig:monimage}
\end{figure}
Figure \ref{fig:monimage} présente une superbe image.
  • Rajouter la table des figures.

\listoffigures

  • Transformer les dialogues en une liste d’item.
\begin{itemize}
\item Un premier item
\item un autre 
\item et encore un
\end{itemize}
  • Ajouter quelques fautes d’orthographe, puis utiliser le mode Flyspell pour détecter ces fautes.

Dans emacs: M-x ispell-change-dictionnary choisir la langue (francaise ici) puis M-x flyspell-mode

  • Rechercher toutes les occurrences du mot prince

C-s

  • Remplacez toutes les occurrences du mot prince par le mot crabe

M-x query-replace

  • Vous en avez trop remplacé, revenez en arrière

C-_

  • Allez (automatiquement) à la ligne 15

M-x goto-line

  • Sauvegardez et quitter.

C-x C-s puis C-x C-c

  • Supposons que vous n’avez pas accès au serveur graphique, par exemple, connectez vous sur une autre machine (au hasard, celle de votre voisin). Retrouvez votre petit prince ; rajoutez la date de demain et recompilez, le tout en mode console.

Plusieurs possibilités: utiliser des petites programmes d’édition comme nano, vi, ou encore emacs en mode “no window”: emacs -nw

Terminal

Répertoires

  • Dans votre répertoire racine, créer un répertoire init_unix

mkdir init_unix

  • Dans le répertoire init_unix, créer l’arborescence suivante (convention: le nœuds terminant par des slashs sont des répertoires, les autres sont des fichiers). Utiliser la commande touch pour créer des fichiers vides.
foo/
 |-- bar
 |-- quux/
 |   |-- baz
 |-- rny/
     |-- heak
     |-- gpq

Plusieurs possibilités selon l’endroit où on se place, et qu’on utilise des chemins absolus ou relatifs. Par exemple, en se plaçant dans le répertoire foo (cd foo): ~~~ mkdir quux mkdir rny touch bar touch quux/baz touch rny/heak touch rny/gpq ~~~ ou en condensé ~~~ mkdir quux rny touch quux/baz rny/heak rny/gqp ~~~

  • Donner le chemin absolu vers le fichier bar

/home/username/init_unix/foo/bar (sur un distribution Unix standard, à adapter dans le cas de l’Enseirb-Matmeca)

  • Donnez le chemin relatif du fichier bar depuis le répertoire ~/init_unix/foo/rny/

../bar

  • Comment se rendre dans son répertoire utilisateur (Home) ?

cd ou cd ~

  • Donnez les commandes qui permettent d’aller à la racine du système, puis de revenir.

cd / puis cd - ; ou encore pushd / puis popd

  • A quel endroit de l’arborescence vous trouvez vous si vous tapez: cd ~/..

dans /home/ (sur une distribution Unix standard, à adapter dans le cas de l’Enseirb-Matmeca)

  • Vérifiez grâce à la commande pwd

Commandes

  • Testez la commande echo, sans option, puis avec l’option -n
  • Ouvrez un terminal. Tapez la commande man man
  • Faites défiler le contenu du manuel, jusqu’à la fin, puis quittez.
  • Cherchez à quoi sert l’option -k

Utiliser la commande man. Rappel: pour recherche une chaîne dans le man: shift / (la touche shift)

  • Utilisez la commande date pour afficher la date directement en UTC.

Utiliser la commande man (que l’on traduit parfois par “rtfm” pour “read the f*** man”)

  • A quoi sert la commande sort? et la commande who?

Utiliser la commande man

Processus

  • Ouvrir un interpréteur de commande. Créer un répertoire init_unix dans votre répertoire utilisateur HOME. Placez vous dans ce répertoire.

  • Taper la commande echo "Hello tout le monde" > hello.txt qui permet de créer un fichier texte hello.txt contenant le texte Hello tout le monde. Vérifier son contenu.

Par exemple cat hello.txt ou more hello.txt ou less hello.txt

  • Créer un fichier hello.pdf à partir de hello.txt (penser à utiliser a2ps avec l’option -o et ps2pdf)

a2ps hello.txt -o hello.ps ; ps2pdf hello.ps

  • Utilisez la commande evince pour visualiser le fichier hello.pdf

evince hello.pdf

  • Quittez, puis essayez la commande evince &. Quelle différence observez-vous?

L’interpréteur de commandes “rend la main”. En fait, le & permet de lancer la commande en arrière-plan.

Ouvrez deux interpréteurs de commande. - Dans le premier, exécutez sleep 10000 - Dans le deuxième, essayez de trouver le PID du premier processus - Dans le premier terminal: faites passer le programme en arrière plan, puis revenir au premier plan

C-z bg (pour “background”) puis C-z fg (pour “foreground”)

  • Le programme sleep 10000 semble bloqué. Proposez deux solutions pour le terminer, une depuis le premier interpréteur, l’autre depuis le deuxième

C-c ou kill -9 PID

Fichiers sur disque

Les questions ci-dessous concernent les wildcards (ou jokers) en shell (à ne pas confondre avec les expressions régulières).

  • Soit l’expression ab[ab]*a, parmi les mots suivants, lesquels sont reconnus par cette expression?

    | | –|—|— abababa | aaba | aabbaa

abababa

  • Soit l’expression a?c, parmi les mots suivants, lesquels sont reconnus par cette expression?

    | | –|—|— abc | ac | abbb

abc

  • Soit l’expression a?[bc]*, parmi les mots suivants, lesquels sont reconnus par cette expression?

         
    abc ac atccbbbcccc

abc et atccbbbcccc

  • Affichez l’ensemble des fichiers présents dans votre répertoire racine. Afficher ensuite les fichiers cachés. Afficher le descriptif long. Afficher les tailles de fichiers sous un format plus lisible (Kilo-octets, Mega-octets).

ls -al puis ls -alh

  • Avec la commande cp, copier le répertoire foo/rny vers foo/ohka (on souhaite le renommer). Est-ce qu’on aurait pu s’y prendre autrement?

cp -r foo/rny foo/ohka Attention, ça déplace et renomme le répertoire; on aurait pu aussi faire par exemple: cp -r foo/rny/ foo ; mv foo/rny foo/ohka

  • Avec la commande mv, déplacer et renommer le fichier foo/rny/heak en foo/ohka/zab

mv foo/quux/baz foo/ohka/zab

  • Créer un lien symbolique foo/quux/zanb qui pointe vers foo/rny/gpq

ln -s ../rny/gpq foo/quux/zanb

  • Effacer le répertoire quux/

rm -rf quux

  • Avec la commande find, trouvez tous les fichier .tex contenus dans votre répertoire utilisateur (et ses sous répertoires).

find ~ -name "*.tex"

Droits d’accès

  • Créez un fichier fichier.txt. Interdisez le en écriture, et essayer d’écrire dedans.
  • Idem en lecture. Puis restaurez les droits en lecture et écriture.

chmod a-w fichier.txt ; puis chmod a-r fichier.txt ; puis chmod a+rw fichier.txt

  • Utiliser la commande chmod pour donner successivement les droits suivants. A chaque fois vérifier avec ls -l que les droits sont bien ceux voulus:

         
    rwxrwxrwx r-x------ r--r--r--
    rwxrwxr-x r--r----- rw-rw-rw-
    rwxr-xr-x rw-r--r-- rwx------
     
chmod a+rwx fichier.txt chmod u=rx fichier.txt chmod ugo=r fichier.txt
chmod ugo=rwx,o-w fichier.txt chmod ug=r fichier.txt chmod ugo=rw fichier.txt
chmod u+rwx,go=rx fichier.txt chmod u=rw,go=r fichier.txt chmod u+rwx fichier.txt

Redirections et tube

  • Écrivez une ligne de commande qui exécute ls -al et qui redirige la sortie standard dans sortie.txt.
  • Afficher le fichier sous forme triée.

ls -al > sortie.txt ; puis cat sortie.txt | sort

Personnalisation

  • Visualiser tout votre environnement actuel

commande env ou commande set (plus détaillée)

  • Regardez ce que contient la variable PWD

On peut à nouveau utiliser les commandes env ou set. Possible d’utiliser un filtre: env | grep PWD. On peut aussi afficher le contenu de la variable avec echo: echo $PWD

  • Affectez 12345 à la variable VAR. Vérifiez, puis réinitialisez VAR.

VAR=12345 ; echo $VAR ; unset VAR On peut aussi utiliser la commande set pour affecter et affcher les contenu de VAR

  • Listez les alias définis sur votre compte

Commande alias

  • Définir un alias ll qui exécute la commande ls avec l’option -l

alias ll='ls -l'

  • Définir un alias ls qui exécute la commande ls avec des couleurs

alias ls='ls --color' ou alias ls='ls --color=auto'

  • Finalement, supprimer cet alias

unalias ls

  • Ajoutez un alias dans votre fichier .bash_alias. Vérifiez qu’il a bien été pris en compte.

Quelques commandes

  • En vous servant de wc, donner le nombre de groupes listés dans /etc/group

wc /etc/group ou cat /etc/group | wc

  • Ecrire une commande, permettant d’obtenir le nombre de fichiers ou sous-répertoires dans le répertoire courant
ls -al | wc (penser à retirer les trois premiers du décompte), ou mieux `ls -al tail -n +4
  • En utilisant, grep sur le fichier /etc/group trouvez toutes les lignes qui contiennent un s, puis toutes celles qui commencent par s. Enfin retirez celles qui comportent des d.

grep "s" /etc/group grep "^s" /etc/group grep -v "d" /etc/group

  • Trouver tous les fichiers dans votre compte utilisateur qui contiennent votre login à l’intérieur du fichier (ne pas confondre avec le nom de fichier), en ignorant la casse.

grep -ri <login> ~/

  • Reprendre l’arborescence précédente.
    • Avec la commande tar, créez une archive foo.tar.gz compressée via gzip de tout le répertoire foo/, puis listez son contenu, enfin extrayez le dans /tmp

tar czf foo.tar.gz foo/ puis tar tf foo.tar.gz puis tar xf foo.tar.gz

  • Avec la commande find, trouvez tous les fichiers dans foo (y compris dans les sous-répertoires) qui ont un a dans leur nom

find foo/ -type f -name "*a*"

  • Créez un répertoire vide. Puis avec la commande find, trouvez tous les répertoires vides de votre compte utilisateur.

find ~/ -type d -empty

  • Afficher l’ensemble des lignes du fichier /etc/group de façon triée

sort /etc/group ou cat /etc/group | sort

  • Afficher l’ensemble des lignes du fichier /etc/group en extrayant les noms de groupe (i.e. en n’affichant pas le reste)

cat /etc/group | cut -d':' -f1

  • Ecrire un commande qui liste l’ensemble des fichiers et répertoires à la racine de votre répertoire utilisateur ayant les droits en lecture, écriture et exécution.

A la racine, on tape: ls -al | grep rwxrwxrwx

  • Afficher l’ensemble des lignes du fichier /etc/group en remplaçant tous les a par des @ et tous les i par des !

cat /etc/group | tr a @ | tr i !

  • faire la même chose en remplaçant cette fois la chaîne :x: par :iks:.

cat /etc/group | sed s/:x:/:iks:/g

  • Rechercher dans votre historique de commandes tous les appels à une commande que vous venez de beaucoup utiliser. Relancez automatiquement la plus pertinente.

C-r (plusieurs fois pour faire défiler) ouhistory puis !numero pour relancer la commande (remplacer numero par le nombre correspondant à la commande