exit
, pour quitter le shell (ce qui équivaut à se déconnecter (logout))
/etc/profile
communs à tous les users y compris root
umask
/etc/profile.d/*.sh
(parcourir alias.sh
et numlock.sh
)
$HOME/.bash_profile
(la variable $HOME contient le chemin vers le répertoire personnel). Il s'agit ainsi d'un fichier de démarrage personnel et paramétrable.
$HOME/.bashrc
dans lequel il est recommandé de placer toutes les fonctions ou alias personnels (car .bashrc
est exécuté dans tout shell)
/etc/bashrc
, dans lequel on place les alias globaux et la définition symbolique du prompt $PS1
/etc/bashrc
étant le dernier script d'initialisation du shell bash, root
peut y définir des alias globaux pour tous les utilisateurs
vi
(pour utiliser l'éditeur de Midnigth Commander lancer mc
)
# vi /etc/bashrc alias lll="ll | less" alias x="startx" alias m="mc" :wq (pour écrire dans le fichier et quitter vi)
exit
) pour que ces nouvelles commandes soient prises en compte par le nouveau shell.
~/.bash_profile
clear salut="Bonjour $USER !\nJe te souhaite bon courage ...\n\ # le dernier \ pour pouvoir continuer la commande sur la ligne suivante # $( ..) pour obtenir le résultat de l'exécution de la commande incluse Nous sommes le $(date) " # -e option indispensable pour interpréter les \n echo -e $salut
echo
permet d'obtenir la valeur d'une telle variable. echo $PATH
, echo $USER
PATH
en majuscules !)PATH="$PATH:/home/jean/bin"
PATH="$PATH :./"
$HOME
contient le chemin du rép. personnel.cd $HOME
est abrégée en cd
$USER
contient le nom de l'utilisateur$SHLVL
donne le niveau du shell courant
Historique des commandes
Cette liste numérotée est accessible en tapant history | less
Pour relancer la commande numéro n, saisir (sans espace) !n
On peut aussi parcourir les précédentes lignes de commandes
avec les flèches (comme doskey) et les éditer. Ceci permet très facilement de reprendre une précédente commande pour l'éditer et la modifier.
Le clic-droit
Dans un terminal console, sélectionner un texte quelconque. Un clic-droit recopie ce texte sur la ligne de commande, même dans une autre console.
Le tilde ~ suivi d'un nom d'user, par ex jean, renvoie au rép.
personnel de jean, c-à-d /home/jean
Ainsi par cette commande cd ~stagiaire3 tente en vain d'aller dans le rép. /home/stagiaire3
.bash_logout
situé dans votre répertoire personnel pour que le contenu du cache de Netscape soit effacé au moment de votre déconnexionroot
, compléter le script "modèle" /etc/skel/.bash_logout
, afin que ce "nettoyage" soit effectué pour tout nouvel utilisateur.
echo -n "Bonjour $USER ! Nous sommes le "; date
TAB
, l'interpréteur
cherche à compléter le nom du fichier.
home/toto ]$ less /etc/fs TAB
S'il y a plusieurs propositions, il y a attente d'un complément
d'info de la part de l'utilisateur (avec un "tut").
Un autre TAB et l'interpréteur affiche toutes les possibilités
ou en indique le nombre, s'il y en a beaucoup !
Exo : poursuivre ainsi jusqu'à afficher le contenu du fichier de configuration de l'interface Ethernet /etc/sysconfig/network-scripts/ifcfg-eth0
méta-caractères
) dans les noms de fichiers, permet de générer des modèles pour désigner ces ensembles.*, ? , [] et ^
.
Modèle | Signification |
---|---|
* | remplace une chaine de longueur qcq, même vide |
? | remplace un seul caractère qcq |
[ ] | un caractère qcq de la liste ou de l'intervalle |
[^ ] | n'importe quel caractère sauf ceux de la liste |
Attention ! en raison de certaines ressemblances, ne pas confondre ces constructeurs d'ensembles de fichiers avec les expressions rationnelles (utilisées par exemple dans grep
ou sed
)
X*Y
où X et Y sont 2 chaînes quelconques, éventuellement vides, désigne l'ensemble des noms de fichiers de la forme XZY
où Z est une chaîne quelconque elle aussi éventuellement vide.
X?Y
désigne l'ensemble des noms de fichiers de la forme XuY
, où u est un seul caractère
ll /*/*.d tous les fichiers d'un rép de / qui se terminent par .d
ll -d /home/* tous les sous-répertoires de /home
rm * attention ! commande dangereuse, supprime tout le rép courant !
cp /lib/modules/*/*/*.? /home/toto toto copie tous les pilotes dans son répertoire personnel
cp /home/stage? /root/tmp
[ ]
X [abc...z ]Y
où X et Y peuvent être vides, désigne l'ensemble des noms de fichiers suivants: XaY, XbY ... XzY
.
abc ...z
, on peut utiliser la notation intervalle a-z
.
[a-z].[0-9]
, ensemble des fichiers a.0, a.1, .., b.0 b.1 etc ...
root
# lister tous les répertoires dont le nom commence par stage, avec une variable
user=stage echo $user ll -d home/$user*
man bash
stagex
, x=1..9 déjà crées.grep -n stage. /etc/passwd
La commande grep
attend des options précédées de -, puis un modèle (expression rationnelle) des chaines à chercher, et enfin un ensemble de fichiers où elle doit chercher.
grep -n sta /etc/passwd
---> recherche dans le fichier /etc/passwd
la sous-chaine sta, en indiquant les N° de lignes (option -n)
grep -nw sta /etc/passwd
---> recherche ... (l'option -w impose la recherche d'un mot entier, et pas d'une sous-chaine
grep -nw stage. /etc/passwd
---> recherche ...
grep -nw stage? /etc/passwd
---> quelle signification pour grep du ?
grep -nw stage? /etc/*
--->
grep -n ftp* /etc/rc.d/init.d/*
-->
$?
contient toujours la valeur de retour de la précédente commande. On peut afficher cette valeur avec la commande echo
[toto@p00]$ ll ~ [toto@p00]$ echo $? --> 0 [toto@p00]$ ll /root [toto@p00]$ echo $? --> 1, si toto n'est pas root !
grep -i "jules toto" /etc/passwd
;
a le rôle de séparateur de séquence inconditionnel. $?
Si toto6 n'est pas un utilisateur valide ? [root@p00]$ grep toto6 /etc/passwd ; echo $? le groupe root existe déjà, il ne peut pas être recréé, prévoir les codes de retour [root@p00] # $ who am i; echo $?; groupadd root; echo $?; date; echo $?
&&
et ||
sur la ligne de commande sont des séparateurs qui jouent les rôles d'opérateurs conditionnels, en ce sens que la 2ème commande sera exécutée en fonction du code de retour de la 1ère commande.
commande1 && commande2
, commande2 ne sera exécutée que si le code de retour de commande1 est 0 (exécution correcte)commande1 || commande2
, commande2 ne sera exécutée que si le code de retour de commande1 est différent de 0 (exécution erronnée)
cd ~/tmp || mkdir $HOME/tmp extrait de /etc/rc.d/inet.d/inetd [ -f /usr/sbin/inetd ] || exit 0
stdout
) pour envoyer des résultats
stderr
).
less
(ou more) pour examiner l'affichage sur le moniteur.
ll --help | less
Ctrl-d
(symbole EOF
=end-of-file)
pour sauvegarder.lpr
est la commande d'impression sur la file d'attente par défaut.wc
(=word count) compte le nombre de lignes, de mots et de caractères
du fichier en entrée (suivant les options -l, -w, -c
).cd cat > essai.txt cat essai.txt sort < essai.txt cat >> essai.txt sort < essai.txt sort < essai.txt > essai-tri.txt cat essai-tri.txt cat essai.txt essai-tri.txt
essai.txt
est le fichier créé précédemment)
wc -w < essai.txt > mots.txt
Que se passe t-il si on enlève l'option -w
?
cd /etc ll > /tmp/liste.txt cat /tmp/liste.txt wc -l < /tmp/liste.txt
ll ll /etc | less ll | sort ll | wc -l
who who | sort cat | sort > essai-pipe.txt Pouvez-vous prévoir la différence entre : cat essai.txt | lpr cat essai.txt > lpr
` Alt-Gr7
ou être placée dans un parenthèsage précédé de $(...)
.
D'une manière générale, il est recommandé d'entourer l'expression de " "
echo "`whoami`, nous sommes le `date` " attention, pas d'espace entre $ et ( echo "$(whoami), nous sommes le $(date) "
pwd echo pwd echo `pwd` echo "Il y a `ls | wc -l ` fichiers dans `pwd` "
echo -n "Votre mot de passe ? read mdp mdp = $(echo $mdp | tr 'A-Z' 'a-z')
echo "Nombre de fichiers du répertoire personnel : $( ls -l $( pwd ))" | less
grep
et cut
, quelle est la signification de :
nom=toto numero=$(cat /etc/passwd | grep -wi "^$nom" | cut -d: -f3)