Outils pour utilisateurs

Outils du site


workshop_shell

Ceci est une ancienne révision du document !


Workshop Shell Unix (Interpréteur de commandes)

Guidelines pour l'atelier

  • Deconseiler de prendre des notes le workshop est disponible sur le wiki.
  • Proposer d'interrompre et poser des questions à chaud.
  • Demander à l'assemblé ce que va produire une ligne commande avant de l'exécuter.

Intro: shell / terminal

On désigne souvent le shell par :

  • le terminal
  • la console
  • le shell
  • le bash

Le shell Unix est une Interface en Ligne de Commande (CLI) qui permet à un utilisateur d’interagir avec un système d'exploitation Unix en entrant du texte. Le premier shell Unix date de 1971, et depuis, plusieurs sont nés avec chacun ses subtilités, ses avantages, et ses préférences. Dans les grandes lignes, tous les shell Unix se ressemblent. Dans la suite de cet article nous le désignerons simplement le shell.

Exemples de shell

  • sh (Bourne shell) le plus répendu
  • bash (Bourn again shell) le plus populaire ?
  • zsh le plus geek ?
  • ksh (Korn shell)
  • ...

Présentation avec GUI ouvert.

pwd
cd /tmp
pwd
cd
pwd
ls
ls -a

Manipulation des fichiers : touch ; cp ; mv ; rm ; mkdir

Présentation avec GUI ouvert.

touch foo
cp foo bar
mv bar baz
rm foo
mkdir pif
mkdir -p paf/pouf

Permissions des fichiers : ls -l ; chmod ; chown

ls -l foo
chmod u-r foo
ls -l foo
sudo chown root:root foo
ls -l

Obtenir de l'aide : man ; help

La commande man permet d'obtenir de l'aide sur les programmes installés. On peut rechercher le mot clé "foo" dans le manuel en tappant "/foo".

man man

Sur certains vieux shell, l'aide des commandes internes au shell n'est pas disponible dans le manuel man. La commande help permet d'obtenir une aide sommaire sur les commandes du shell. Cette commande n'est pas disponible dans tous les shell.

help
help pwd

Administration : ps ; top ; du ; df ; free ; mount

id
last
ps u
ps aux
uptime
top
du -h
df -h
free -h
mount

Expansion : * ? ~ {1..5} {Z..A} $USER

TODO : Attention les expansions dependent beaucoup du shell (sh, bash, zsh, ...)

rm -rf work1 ; mkdir work1 ; cd work1
touch foo bar baz
ls f*
ls b*
ls b?z
echo {A..C}
echo $USER

IO (Entrées Sorties) : redirection / pipelines

TODO: Utiliser des schéma

Ecriture dans fichier

rm -rf work2 ; mkdir work2 ; cd work2
echo "Hello World" > foo
cat foo
> foo
cat foo

Ecrire à la fin d'un fichier

> bar
echo hello > bar
cat bar
echo world >> bar
cat bar

Ecrire sur les sortie standard et d'erreur

echo "sur la sortie standard"
>&2 echo "sur la sortie d'erreur"

Rediriger l' entree

cat < bar

Rediriger les sorties

echo "pif" > stdout
>&2 echo "paf" 2> stderr
>&2 echo "pouf" > stdout 2>&1

Pipeline

cat bar | grep "lo"

Logique : ; && ||

echo "un" ; echo "deux"
echo "OR_1" || echo "OR_2"
echo "AND_1" && echo "AND_2"
false ; echo "RC=$?"
true || echo "second statement" ; echo "RC=$?"
false || echo "second statement" ; echo "RC=$?"
true && echo "second statement" ; echo "RC=$?"
false && echo "second statement" ; echo "RC=$?"

Variables : $PS1 $PATH $?

echo $USER
echo $PATH
echo $HOME
export
echo $PS1
echo $?
echo $!
 
 
## Scripts : philosophie tests loops fonctions
 
### Fil rouge : un script pour trier ses photos
- variables
- conditions
- fonctions
- boucles
- return code (exit)
 
### Philosophie UNIX
- Écrivez des programmes qui effectuent une seule chose et qui le font bien.
- Écrivez des programmes qui collaborent.
- Écrivez des programmes pour gérer des flux de texte [en pratique des flux d'octets], car c'est une interface universelle.
workshop_shell.1699088048.txt.gz · Dernière modification : 2023/11/04 08:54 de bigMax