exit, pour quitter le shell (ce qui équivaut à se déconnecter (logout))
/etc/profile est d'abord exécuté pour tous les utilisateurs y compris root. On y trouve la définition initiale du PATH et de umask
/etc/profile.d/*.sh, grâce à la boucle -à comprendre !-:
for i in /etc/profile.d/*.sh ; do
if [ -x $i ] ; then
.$i
fi
done
En particulier, parcourir les alias.sh et numlock.sh
$HOME/.bash_profile (la variable $HOME contient le chemin vers le répertoire personnel). Contrairement à /etc/profile, il s'agit ainsi d'un fichier de démarrage personnel et paramétrable.
$HOME/.bashrc, s'il existe, dans lequel il est recommandé de placer toutes les fonctions ou alias personnels
/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 global, root peut y définir des commandes globales, pour tous les utilisateurs.
vi (pour utiliser l'éditeur "Midnigth Commander" lancer mc)
# vi /etc/bashrc alias ll="ls -l --color=tty -F -b -T 0" alias lll="ll | less" # commentaire : c'est pour les paresseux ! 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_profileclear 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
export BON="Bonjour"
/etc/bashrc, en faisant afficher un message de bienvenue aux utilisateurs.
.bash_logout situé dans votre répertoire personnel pour que ce fichier 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.
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'utilisteur, renvoie à son répertoire personnel (ainsi la commande cd ~stage conduit à /home/stage)
TAB, l'interpréteur
cherche à compléter, nom du fichier ou nom de commande, suivant le contexte.[home/toto ]$ less /etc/f <TAB> [home/toto ]$ less /etc/fs <TAB> [home/toto ]$ less /etc/fstab
echo -n "Bonjour $USER ! Nous sommes le "; date
$ cd /etc <TAB> there are 216 possibilities. Do you really wish to see them all ? (y or n) $ cd /etc/s <TAB> samba/ ssh/ security services syslog.conf etc .. $ cd /etc/sys<TAB> # on tape y, le système complète s et ... attend sysconfig/ syslog.conf ... $ cd /etc/sysc<TAB> # on ajoute co, le système complète aussitôt à sysconfig $ cd /etc/sysconfig/ <Entr> Puis afficher le contenu du fichier de configuration de l'interface Ethernet /etc/sysconfig/network-scripts/ifcfg-eth0 $ less n <TAB>
/home/jean/bin à la variable d'environnement PATH (voir supra)
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 régulières (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
/home, à comparer avec ll /home/*
[ ]
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 ...
rootLister 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, grep analyse -n comme une option, puis cherche à interpréter
un modèle (ou expression rationnelle) dans la chaine présentée, pour le confronter à un ensemble de fichiers.
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 ?
grep -nw stage? /etc/* --->
grep -n ftp* /etc/rc.d/init.d/* -->
/etc/httpd/conf/commonhttpd.conf, utiliser grep -ni pour rechercher les numéros des lignes contenant
un des mots-clés suivant, sans tenir compte de la casse : userdir , directoryIndex , indexes
$? contient toujours la valeur de retour de la précédente commande. On peut afficher cette valeur avec la commande echo $ ll ~ $ echo $? --> 0 $ ll /root $ 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. $?
Supposons que toto6 ne soit pas un utilisateur connu du système [root@se3pdc]# grep toto6 /etc/passwd ; echo $? On sait que le groupe root existe déjà [root@se3pdc] # who am i; echo $?; groupadd root; echo $? [root@se3pdc] # date; echo $? [root@se3pdc] # date > /dev/null; 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 cd /root && echo "root rentre chez lui !" extrait de /etc/rc.d/inet.d/inetd [ -f /usr/sbin/inetd ] || exit 0
stdin=standard input) pour lire des données,
stdout) pour envoyer des résultats
stderr).
less (ou more) pour examiner l'affichage sur le moniteur.ls --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 > wc cat essai.txt | wc
` Alt-Gr7 ou être placée dans un parenthèsage précédé 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 echo Vous avez écrit : $mdp mdp = $(echo $mdp | tr 'A-Z' 'a-z') echo Votre mot de passe sera : $mdp
echo "Nombre de fichiers du répertoire personnel : $( ls -l $( pwd ))" | less
nom=toto numero=$(cat /etc/passwd | grep -wi "^$nom" | cut -d: -f3)