BASH - LGEP

Transcription

BASH - LGEP
•
6. L'interpréteur de commande : BASH
•
6.1 Les fichiers d'initialisation
•
6.2 Les variables du Bash
•
6.3 Les alias
•
6.4 La fonction shell
•
6.5 L'édition de la ligne de commandes
•
6.6 Les utilitaires (history, complétion...)
•
6.7 Quelques commandes internes
•
6.8 Ecriture et exécution d'un script
•
6.9 Exercices
Olivier HUBERT - LGEP/CNRS
1
•
6. L'interpréteur de commande : BASH
•
Le plus répandu dans le monde Linux
•
Compatible avec le Bourne Shell (sh)
•
Interface entre l'utilisateur et le système
•
•
•
En mode console
Langage interprété
•
Écriture de scripts
•
Utilisation de vi ou emacs pour les écrire
Lancement d'un programme à un instant donné
•
processus
Olivier HUBERT - LGEP/CNRS
2
•
•
•
•
6. L'interpréteur de commande : BASH
Lors de la connexion, le processus /bin/bash
défini dans /etc/passwd est lancé
Processus
•
PID (Process Identifier)
•
Processus père
•
Processus fils
Types de processus
•
Les commandes définies (fonction ou alias)
•
Les commandes internes (shell)
•
Les commandes externes (/usr/bin, /sbin..)
Olivier HUBERT - LGEP/CNRS
3
•
•
•
6. L'interpréteur de commande : BASH
Exemple d'alias :
•
alias ld= ''ls -ld ''
•
alias freebox='lftp -u freebox,passwd hd1.freebox.fr'
Les variables shell
•
•
•
•
VAR_SHELL='VALEUR'
Variables internes (shell)
Variables d'environnement (shell et
processus fils)
Le caractère _ (souligné) est le seul
caractère non alphanumérique utilisable
Olivier HUBERT - LGEP/CNRS
4
•
•
6. L'interpréteur de commande : BASH
6.1 Les fichiers d'initialisation :
•
•
•
•
•
•
/etc/profile
géré par l'administrateur
.bash_profile
géré par l'utilisateur
VAR_SHELL='VALEUR'
Variables internes (shell)
Variables d'environnement (shell et
processus fils)
.bashrc exécuté par .bash_profile à la
connexion sinon en mode intéractif
➔ Fichier commun
Olivier HUBERT - LGEP/CNRS
5
•
•
6. L'interpréteur de commande : BASH
6.1 Les fichiers d'initialisation :
•
•
BASH_ENV si variable initialisée et
lancement d'un script shell, le script contenu
dans BASH_ENV est exécuté avant.
Lors de la déconnexion
• exit ou <ctrl-d>
➔ Exécution de .bash_logout
Olivier HUBERT - LGEP/CNRS
6
•
•
6. L'interpréteur de commande : BASH
6.3 Les variables du BASH :
•
•
Les variables bouléennes
• echo $SHELL_OPTS
• Modifie le comportement de l'interpréteur
Les variables ordinaires
• set
liste les variables et leur valeur
• nom_variable=valeur
➔ Variables exportées (d'environnement)
• export nom_variable=valeur
• declare -x nom_variable
Olivier HUBERT - LGEP/CNRS
7
•
•
6. L'interpréteur de commande : BASH
6.2 Les variables du BASH :
➔
Exemples de variables bouléennes
•
history
•
noclobber redirection interdite vers un fichier existant
•
notify
le Bash indique immédiatement la fin d'un
travail en arrière plan (background job)
•
xtrace
permet de suivre l'exécution en détail d'un
programme
historique des commandes
Olivier HUBERT - LGEP/CNRS
8
•
•
6. L'interpréteur de commande : BASH
6.2 Les variables du BASH :
➔
Variables ordinaires
•
set
liste les variables et leur valeur
•
unset
supprime une variable
➔
Les principales variables du shell
•
ENV
IFS
PWD
•
HISTSIZE
OLDPWD
TERM
•
HISTFILE
PATH
TMOUT
•
HOME
PS1
...
•
HOSTNAME
PS2
Olivier HUBERT - LGEP/CNRS
9
6. L'interpréteur de commande : BASH
•
•
6.2 Les variables du BASH :
➔
Variables ordinaires
•
PS1
•
•
•
•
•
•
•
\h
\u
\t
\w
\W
\!
\$
valeur du prompt (par défaut ‘‘\s-\v\$ ’’)
nom de l'ordinateur,
nom du login
heure courante
chemin du répertoire de travail
nom du répertoire de travail
numéro de la commande dans l'historique
# pour l'administrateur sinon $
Olivier HUBERT - LGEP/CNRS
10
•
•
6. L'interpréteur de commande : BASH
6.3 Les alias :
➢
alias nom_alias='commandes'
Permet de définir des commandes personnalisées
ualias nom_alias
➔
➢
Permet de supprimer l'alias
Exemples :
➔
➢
alias md='mkdir'
➔ alias vdir='ls –color=auto –format=long'
➔ alias sshroot='ssh -X root@localhost'
➔ Alias tidy2html='tidy -utf8 -indent $1 -file errors.log
>output.log 2>warnings.log'
➔
Olivier HUBERT - LGEP/CNRS
11
6. L'interpréteur de commande : BASH
•
•
6.4 La fonction shell :
➢
function nom_fonction { liste de commandes }
➢
nom_fonction () { liste de commandes; }
Lancée dans le shell courant, pas de création de
processus. Permet de créer des fonctionnalités
complexes impossibles en script.
Exemple :
➔
➔
•
•
•
•
cdd () {
tempo=$(find . -name $1 -type d -print 2>/dev/null)
cd $(echo $tempo | cut -f1 -d' ')
}
Olivier HUBERT - LGEP/CNRS
12
•
•
6. L'interpréteur de commande : BASH
6.5 L'édition de la ligne de commandes
➢
➢
On retrouve certaines commandes de l'éditeur emacs
Permet de retrouver rapidement des commandes dans
l'historique (history)
➢
↑ ou <ctrl-P> ou <ctrl-p>
➢
↓ ou <ctrl-N> ou <ctrl-n>
➢
<ctrl-R>motif ou <ctrl-r>motif
➢
<meta-p>motif<return>
➢
!n
➢
!ls
➢
!!
Olivier HUBERT - LGEP/CNRS
13
•
•
6. L'interpréteur de commande : BASH
6.6 Les utilitaires du Bash
➢
Recherche et complément d'une fonction avec la touche
<tab>
➢
Recherche et complément des noms de fichiers
➢
~/
➢
~nom_user = $HOME/nom_user
➢
~+
= $PWD
➢
~-
= $OLDPWD
= $HOME
Olivier HUBERT - LGEP/CNRS
14
•
•
6. L'interpréteur de commande : BASH
6.7 Quelques commandes internes
➢
alias
hash [-r] [nom]
➢
cd [rep]
history
➢
ed [rep]
pwd
➢
command
read [nom]
➢
echo [-ne] ''texte''
set, unset [option] [arg]
➢
enable [-n] cmd
shopt [-su] [opt]
➢
exec cmd
times
➢
exit [n]
trap [arg] [sig]
➢
export [-n] [nom]
type [nom]
Olivier HUBERT - LGEP/CNRS
15
•
•
6. L'interpréteur de commande : BASH
6.8 Ecriture et exécution d'un script
➢
Script appelé fichier de commandes
➢
Appel du script
bash option programme arg1 arg2 arg3
➢ ./programme arg1 arg2 arg3
➢ programme arg1 arg2 arg3 (dans le chemin PATH)
Choix du shell fils
➢
➢
En début de fichier, choix du shell de lancement
➢ #/bin/bash, sh, tcsh...
. pgme Ne crée pas de shell fils, force l'exécution et
prend en compte les variables d'environnement
➢
➢
Olivier HUBERT - LGEP/CNRS
16
•
•
6. L'interpréteur de commande : BASH
6.9 Exercices
➢
Ecrivez votre commande ''dir''
Affiche page par page, utilise ls -l
➢ Inclus les fichiers cachés
Ecrivez un alias confirmant la suppression des fichiers
➢
➢
➢
Ecrivez votre commande ''psme'' (ps)
Liste tous vos processus
Modifier votre prompt (PS1)
➢
➢
Nom ordinateur + répertoire courant
Ecrivez votre fonction ''fdplussize '' permettant de
trouver à partir du répertoire courant les fichiers de taille
>= n octets (ex: fdplussize 10M)
➢
➢
Olivier HUBERT - LGEP/CNRS
17
6. L'interpréteur de commande : BASH
•
•
6.9 Exercices solutions
➢
Ecrivez votre commande ''dir''
➢
Affiche page par page, utilise ls -l
➢
2 solutions alias ou function
➢
•
alias ''ls -Al | more''
•
•
•
•
dir() {
ls -al $* | more
}
Olivier HUBERT - LGEP/CNRS
18
6. L'interpréteur de commande : BASH
•
•
6.9 Exercices solutions
➢
Ecrivez un alias confirmant la suppression des fichiers
alias rm= ''rm -i''
Ecrivez votre commande ''psme'' (ps)
➢
➢
Liste tous vos processus
➢ 2 solutions alias ou function
• alias psme=''ps -f -u $LOGNAME''
• function psme() {
•
ps -u $USER -o pid,%cpu
%mem,bsdtime,command
• }
➢
Olivier HUBERT - LGEP/CNRS
19
6. L'interpréteur de commande : BASH
•
•
6.9 Exercices
➢
Modifier votre prompt (PS1)
➢
•
Nom ordinateur + répertoire courant
PS1=''\h:$PWD''
•
➢
Ecrivez votre fonction ''fdplussize '' permettant de
trouver à partir du répertoire courant les fichiers de taille
>= n octets (ex: fdplussize 10M)
•
•
•
fdplussize () {
find . -name "*" -size "$1" -type f -print
}
Olivier HUBERT - LGEP/CNRS
20

Documents pareils