Home Informatique CV Projets Famille J'aime Mmm Coup de gueule Web Radio Belge B&M Jeux Art-NFT C+ 111

C'est une pub! Ce thême est basé sur w3 css.

Oui vous êtes capable de modifier ce thême

Cool? Oui, avec plein d'exemples faciles à comprendre et à modifier.

Aller sur W3.CSS Tutorial c'est en anglais mais google peux traduire les pages.

Exercices pour débuter

La curiosité n’est pas un vilain défaut mais une qualité fondamentale.

Leçon

Introduction

Lorsque le retour de la commande est trop long, le retour est remplacé par "...".

La liste des commandes va évoluer en fonction du cours.

Le $ signale que vous êtes un utilisateur normal pas l'administrateur (que l'on appelle root).

Le root (administrateur) a un prompt différent #.

Exemple 1

$ ls
Desktop
$ ls -l
total 4
drwxr-xr-x  2 user user 4096 2005-11-25 16:01 Desktop
On obtient la liste des fichiers (ls) et la liste longue (ls -l) où il y a des informations tels que les droits, le propriétaire, le groupe, la taille, la date.

Exemple 2

$ man ls
... 

$ man man 
... 

$ man tty 
... 

$ man 4 tty 
...

Pour quitter le manuel on appuye sur la touche "Q".
La commande man 4 tty va donner une aide différente de man tty.

Exemple 3

$ man ascii
...

On obtient la liste des carctères ASCII.

Exemple 4

Autre type d'aide.

$ ls --help 
Usage: ls [OPTION]... [FICHIER]... 
Afficher les informations au sujet des FICHIERS (du dossier courant par défaut). 
Trier les entrées alphabétiquement si aucune des options -cftuSUX ou --sort n'est utilisée. 
Les arguments obligatoires pour les options de formes longues le sont aussi pour les options de formes courtes. 
 -a, --all ne pas cacher les entrées débutant par .
 -A, --almost-all ne pas inclure dans la liste . et .. 
--author afficher l'auteur de chaque fichier
 -b, --escape afficher en octal les caractères non-graphiques en utilisant des séquences d'échappement 
--block-size=TAILLE utiliser la TAILLE de blocs ...

Exemple 5

$ cd Desktop/
( On se trouve dans le dossier Desktop si celui-ci existe )
$ cd ~
( On est de retour dans son dossier personnel )
$ cd Desktop/
( On se trouve dans le dossier Desktop si celui-ci existe, encore une fois )
$ cd 
( On est de retour dans son dossier personnel aussi )

Exemple 6

$ touch fichier1
$ ls
Desktop  fichier1

Le fichier "fichier1" est créé, il peut y avoir d'autres fichiers.

Exemple 7

$ touch fichier1.extension
$ touch fichier1.extension.
$ ls
Desktop  fichier1  fichier1.extension  fichier1.extension.

On peut avoir des fichiers qui se ressemblent seul le point se trouvant à la fin va distinguer les deux derniers fichiers

Exemple 8

 


$ touch .fichier1
$ ls -l
Desktop  fichier1  fichier1.extention  fichier1.extention.

 

Le fichier ".fichier1" n'est pas visible car le "." situé au début signale que le fichier doit être caché.

Exemple 9

 


$ ls -a
.  ..  .bash_history  .bash_profile  .bashrc  Desktop  fichier1  .fichier1  
fichier1.extention  fichier1.extention.
            

 

La liste est longue car les fichiers de configuration qui vous concerne sont présent et caché, le fichier ".fichier1" est bien dans la liste.

Le résultat affiché est un résultat tronqué.

Exemple 10

 


$ clear

 

La commande clear efface l'écran.

Exemple 11

 


$ ls -a
.  ..  .bash_history  .bash_profile  .bashrc  Desktop  fichier1  .fichier1
fichier1.extention  fichier1.extention.
$ rm fichier1* .fichier1
$ ls -a
.  ..  .bash_history  .bash_profile  .bashrc  Desktop

 

Les fichiers commençant par "fichier1" et le fichier ".fichier1", on été effacé.

Exemple 12

 


$ mkdir -p essai/test

 

Le dossier essai et son sous-dossier test vont être créé, si le dossier essai existe déjà seul le dossier test sera créé, tout cela grâce à l'option -p.

Exemple 13

 


$ pwd
/home/user
$ cd essai
$ pwd
/home/user/essai

 

On peut voir que l'on est dans le dossier "/home/user" puis que l'on change de dossier vers "/home/user/essai".

Exemple 14

 


$ ln -s test test2
$ ls -l
total 4
drwxr-xr-x  2 user users 4096 2006-03-23 08:07 test
lrwxrwxrwx  1 user users    4 2006-03-23 09:53 test2 -> test

 

On crée un lien symbolique "test2" qui pointe sur "test", puis on regarde le résultat via "ls -l".

Exemple 15

 


$ cd test
$ touch toto
$ ls
toto
$ cd ../test2
$ ls
toto

 

On va dans le dossier "test", on crée un fichier toto, on vérifie sa présence, puis on se rends dans le dossier "test2", puis on constate que le fichier toto est présent.

Exemple 16

 


$ echo coucou
coucou
$ echo coucou > toto
$ cat toto
coucou

 

Ici nous abordons les redirections de la sortie standard (STDOUT).
"echo coucou" envoi sur la sortie standard "coucou", par défaut la sortie standard c'est l'écran. Donc on voit apparaître "coucou" à l'écran.
"echo coucou > toto" envoi le texte "coucou" dans le fichier "toto".
Ensuite on vérifie avec la commande "cat" le contenu du fichier.

Exemple 17

 


$ cat toto
coucou
$ echo "à tous" >> toto
$ cat toto
coucou
à tous

 

Les ">>" permettent d'ajouter au fichier "toto" existant.

Exemple 18

 


$ rm toto
$ ls

 

Nous avons effacer le fichier "toto"

Exemple 19

 


$ echo "Coucou" > toto
$ cat toto
Coucou
$ echo -n "à tous" >> toto
$ cat toto
Coucou
à tous$ echo " et à toutes" >> toto
$ cat toto
Coucou
à tous et à toutes

 

Le 1er "echo" crée le fichier toto, le second avec l'option "-n" ajoute au fichier "toto" sans saut de fin de ligne. Le dernier "echo" ajoute " et à toutes" au fichier "toto".

Exemple 20

 


$ echo "<html><head><title>Page de test</title></head><body><h1>Test</h1><p><pre>" > test.html
$ ls
test.html  toto 
$ ls >> test.html 
$ echo "</pre></p></body></html>" >> test.html 

 

Nous composons une page HTML, appelée "test.html" cette page peut être visualisée via un navigateur web de votre choix.

Exemple 21

 


$ ftp 127.0.0.1
...

 

Lorsque la commande "ftp" est démarrée on se trouve en mode interactif, taper "exit" pour revenir au shell.

Exemple 22

 


$ echo "exit" > ftp.txt
$ cat ftp.txt
exit
$ ftp 127.0.0.1 < ftp.txt 

 

On place "exit" dans le fichier "ftp.txt", ensuite on vérifie le contenu du fichier, puis on démarre ftp en redirectionnant l'entrée (STDIN). "ftp" démarre puis se termine grâce au fichier "ftp.txt" qui contient "exit".

Exemple 23

 


$ ls ; ls -l
ftp.txt  test.html  toto
total 12
-rw-r--r--  1 user users   5 2006-03-24 18:07 ftp.txt
-rw-r--r--  1 user users 113 2006-03-24 12:00 test.html
-rw-r--r--  1 user users  19 2006-03-24 11:46 toto

 

On peut exécuter plusieurs commandes sur la même ligne, via ";". Ici "ls" pui "ls -l".

Exemple 24

 


$ cat toto && ls
Coucou
à tous et à toutes
ftp.txt  test.html  toto

 

La ligne de commande contient deux commandes séparée par "&&". Si la première commande s'exécute sans erreur alors la deuxième commande est exécutée. Ce qui est le cas ici.

Exemple 25

 


$ cat tota && ls
cat: tota: Aucun fichier ou dossier de ce type

 

Ici le fichier "tota" n'existe pas, il y a une erreur, la deuxième commande n'est pas exécutée.

Exemple 26

 


$ cat toto || ls
Coucou
à tous et à toutes

 

La ligne de commande contient deux commandes séparée par "||". Si la première commande s'exécute sans erreur alors la deuxième commande n'est pas exécutée.

Exemple 27

 


$ cat tota || ls
cat: tota: Aucun fichier ou dossier de ce type
ftp.txt  test.html  toto

 

Ici le fichier "tota" n'existe pas, il y a une erreur, la deuxième commande est exécutée.

Exemple 28

 


$ history
...
$ history   | less
...

 

"history" donne la liste des commandes exécutées précédemment. "history | less" permet d'avoir la possibilité de se déplacer dans la liste. "q" permet de quitter "less".

Exemple 29

 


$ history -c

 

"history -c" vide l'historique.

Exemple 30

 


$ history
  1  history
$ !1
  1  history
  2  history

 

"history" donne la liste des commandes exécutées. "!1" exécute la commande se trouvant dans la liste d'historique ayant la position dans la liste le numéro 1.

Exemple 31

 


$ cd ~/essai
$ ls
test  test2
$ ls -l
total 4
lrwxrwxrwx  1 user users    5 2006-03-29 22:23 test -> test2
drwxr-xr-x  2 user users 4096 2006-03-24 18:07 test2
$ ls *
test:
ftp.txt  test.html  toto

test2:
ftp.txt  test.html  toto
$ ls * > exercice
$ cat exercice
test:
ftp.txt
test.html
toto

test2:
ftp.txt
test.html
toto

 

On se place dans le dossier "essai" qui se trouve dans votre dossier personnel via la commande "cd ~/essai".
On vérifie le contenu du dossier "~/essai" avec "ls", "ls -l" et "ls *".
On redirige ensuite le résultat du "ls *" vers le fichier "exercice".
Pour finir on vérifie le contenu du fichier "exercice" via la commande "cat exercice".

Exemple 32

 


$ man grep
...

 

On regarde la page de manuel de la commande "grep" via la commande "man grep", vous pouvez sortir de la commande via la touche "q".

Exemple 33

Le fitre grep.

 


$ cat exercice
test:
ftp.txt
test.html
toto

test2:
ftp.txt
test.html
toto
$ grep ":" exercice
test:
test2:
$ grep -v ":" exercice
ftp.txt
test.html
toto

ftp.txt
test.html
toto
 

 

La première commande affiche le contenu du fichier "exercice" ("cat exercice").
"grep \\":\\" exercice" filtre les lignes ne contenant pas ":", il reste donc uniquement les lignes contenant ":".
La commande "grep -v \\":\\" exercice" fait le filtre inverse du précédent grâce à l'option "-v" (pour re"v"erse).

Exemple 34

 


$ grep ".html" exercice
test.html
test.html
$ grep ".html" exercice | uniq
test.html

 

 

Exemple 35

 


$ cat exercice
test:
ftp.txt
test.html
toto

test2:
ftp.txt
test.html
toto
$ cat exercice | uniq
test:
ftp.txt
test.html
toto

test2:
ftp.txt
test.html
toto

 

On affiche le contenu du fichier "exercice" puis on filtre avec "uniq" avec la seconde commande "cat exercice | uniq", on peut constater qu'il n'y a aucune différence malgré la présence de plusieurs textes identiques.

Exemple 36

Le filtre uniq.

 


$ man uniq
...

 

Comme d'habitude maintenant, LA page de manuel de la commande "uniq", et toujours la touche "q" pour quitter le manuel.
Dans le manuel on peut trouver l'information signalant que "uniq" filtre les entrées triées.

Exemple 37

 


$ cat exercice | uniq
test:
ftp.txt
test.html
toto

test2:
ftp.txt
test.html
toto
$ cat exercice | sort | uniq

ftp.txt
test:
test2:
test.html
toto

 

 

Exemple 38

 


$ gedit &
[1] 5392
$

 

"gedit" est un éditeur de texte attention ce n'est pas un traitement de texte, c'est l'équivalent de "wordpad" de Microsoft Windows.
le "&" qui suit permet d'exécuter la commande en arrière plan.
Le numéro de retour, dans mon cas 5392, est le numéro du processus de "gedit".

Exemple 39

 


$ ps
  PID TTY          TIME CMD
 5441 pts/0    00:00:00 bash
 7118 pts/0    00:00:00 gedit
 7229 pts/0    00:00:00 ps

 

La commande ps affiche la liste des processus.

  • La colonne "PID" contient les numéro des différents processus.
  • La colonne "TTY" contient le nom du terminal qui a démarré la commande.
  •  
  •  

 

Exemple 40

La création d'un premier script


$ gedit &
[1] 5392
$

 

Démarrer un éditeur de texte puis copier le texte suivant.
L'éditeur de texte est démarré en arrière plan via le "&" placer après "gedit".

 

#!/bin/bash

echo "Hello World !!!!"

 

Sauver le script sous le nom de "script1".

 


$ chmod +x script1
$ ./script1
Hello World !!!!  

 

"chmod" va permettre de rendre le fichier texte "script1" exécutable via l'option "+x".
Ensuite on démarre le script en le nommant et en le faisant précéder de \\"$config(adresse)/", le point signale que le script est dans le dossier courant et le "/" signale la fin du chemin et le début du nom.

Un peu d'analyse

 

1 #!/bin/bash
2 
3 echo "Hello World !!!!"

 

Sur la première ligne on a un commentaire un peu spécial en effet il signal à l'interprèteur qui démarre le script avec quel interprèteur le script doit être exécuté.

 

La deuxième permet d'aérer le script.

La troisième démarre la commande "echo" qui va affiché le texte "Hello World !!!!".

Exemple 41

Et si on a pas d'éditeur de texte en mode "graphique" que peut-on faire ?
Et bien on peux utiliser la commande cat comme ceci :

 


$ cat <<EOF > script2
> #!/bin/bash
>
> echo "Hello World !!!!"
> EOF
$ cat script2
#!/bin/bash

echo "Hello World !!!!"  

$ chmod +x script2
$ ./script2
Hello World !!!! 

 

On demande à la commande "cat" de stopper l'entrée lorsqu'elle rencontre le texte que l'on a défini en l'occurence "EOF".

Par la suite nous utiliserons cette manière de procéder, car un copier (dans cette page)/coller (dans un terminal) donnera de suite un résultat.

Exemple 42

On va créer une procédure dans notre script.
Mais pourquoi ? pour pouvoir utiliser une séquence de commande sans devoir à chaque fois tout retapper. Seul le "$" ne devra pas être copier.

 


$ cat <<EOF > script3
#!/bin/bash

hello() {
  echo "Hello World !!!!"
  }

hello
hello
EOF

$ chmod +x script3
$ ./script3
Hello World !!!!
Hello World !!!!  

 

Grâce au deux ligne "hello" on exécute deux fois la procédure "hello".

Exemple 43

Pour créer des scripts il est intéressant d'avoir des variables.

 


$ printenv | less
...


(extrait)
SHELL=/bin/bash
TERM=xterm
OLDPWD=/home/user
USER=user
LS_COLORS=no=00:fi=00:di=01;34:ln=01;36:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;
33;01:or=40;31;01:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;
31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.gz=01;31:*.bz2=01;31:*.deb=01;31:*.rpm=01;
31:*.jar=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;
35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;
35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.avi=01;35:*.fli=01;35:*.gl=01;35:*.dl=01;
35:*.xcf=01;35:*.xwd=01;35:*.ogg=01;35:*.mp3=01;35:*.wav=01;35:
USERNAME=user
PATH=/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/games
DOCS=/usr/share/doc
PWD=/home/user/essai
LANG=fr_BE@euro
HOME=/home/user
LANGUAGE=fr_BE:fr_FR:fr:en_GB:en
LOGNAME=user
_=/usr/bin/printenv

 

Voici les variables d'environnement principales.