Shell (coquille) ou interprèteur de commande (comme le command.com de DOS)
Chaque utilisateur à ses préférences dans le fichier .bash-profile (qui est dans son répertoire d'utilisateur)
/etc/profile est le fichier de préférences globales de BASH
Touche de raccourci :
<SHIFT>+<PAGEUP> : Défile les commandes du haut <SHIFT>+<PAGEDOWN> : Défile les commandes du bas <ALT>+<F1> à <ALT>+<F6> : Change de Terminal [virtuel]. On peut donc se connecter sur plusieurs comptes différents ou sur le même plusieurs fois sur la même ordinateur. <ALT>+'L' : efface l'écran commande <TAB> : complète automatiquement un nom de fichier... pressez une ou deux fois la touche <TAB>
Caractère de subtitution, de condition, etc...
~ : répertoire de l'usager courant [fichier /etc/passwd] - : répertoire précédent * : remplace 0 ou plusieurs caractères ? : remplace 1 caractère [] : remplace par les caractères dans les braquettes individuellement Exemple: tp[12] donne la même chose que tp1 tp2 [-] : remplace par les caractères dans les braquettes en suivant une intervalle Exemple: tp[2-5] donne la même chose que tp2 tp3 tp4 tp5 [,] : remplace par les caractères dans les braquettes, puis par les autres après la virgule.. etc... Exemple: tp[1-3,5-9] donne la même chose que: tp15, tp16, tp17, tp18, tp18 tp25, tp26, tp27, tp28, tp38 tp35, tp36, tp37, tp38, tp28 [!] : remplace par tout à part les caractères dans les braquettes Exemple: tp[!1] donne tp2, tp3, tp4, etc... mais pas tp1 {,} : remplace par des chaînes séparés par des virgules Exemple: ri{delle,gole,dicule} donne ridelle rigole ridicule > : modifie la sortie d'une commande Exemple: ls -R > fichier écrit le résultat de la commande ls -R vers fichier (en l'écrasant) >> : modifie la sortie d'une commande (en écrivant à la suite) Exemple: ls -R >> fichier écrit le résultat de la commande ls -R vers fichier sans l'écraser < : modifie l'entrée standard Exemple: rm / -R < oui efface tous les fichiers récursivement en envoyant la réponse 'oui' à la commande (!!! efface linux à ne pas faire !!!) & : Exécute une commande en arrière plan | : tube (pipe) redirige la sortie d'une commande vers l'entrée d'une autre Exemple: ls | sort | more envoie le résultat de 'ls' (sortie) vers la commande 'sort' (entrée) qui la redirige (sortie) vers la commande 'more' (entrée) && : exécute une commande si la commande précédante a retourné vrai Exemple: test -w tp1 && echo "On peut écrire dans le fichier tp1" || : exécute une commande si la commande précédante a retourné faux Exemple: test -w tp1 !! echo "On ne peut pas écrire dans le fichier tp1" ! : contraire d'une condition logique (!vrai = faux, !faux = vrai) CANAUX D'ENTRÉES/SORTIES STANDARDS: numero nom du canal C/C++ #0 - clavier stdin cin #1 - écran stdout cout #2 - fenêtre d'affichage d'erreur stderr cerr Exemple de redirection vers les canaux: ls *A 2 > LISTE : affiche tous les fichiers finissant par 'A' et envoie toutes les erreurs (canaux 2) vers le fichier LISTE ls *A 2 > /dev/null : inscrit dans le périphérique null (trou noir) les erreurs.
Programmation
Structure de Condition
if [ condition ]; then uneInstruction; fi if [ condition ] then instruction; instruction; fi if [ condition ] then instruction; instruction; else instruction; fi if [ condition ]; then instruction; elif instruction; else instruction; fi Référence pour les [] Référence pour opérateur de comparaison if [ arg1 -eq arg2 ]; then NombreEstÉgalÀ; fi if [ arg1 -ne arg2 ]; then NombreEstDifférentDe; fi if [ $string1 == $string2 -a $string2 == $string3 ]; then # si chaine1 est égale a chaine2 ET (-a and) chaine2 est egale a chaine3 fi if [ $string1 == $string2 -o $string2 == $string3 ]; then # si chaine1 est égale a chaine2 OU (-o or) chaine2 est egale a chaine3 fi [ -e "nomfichier" ] && echo "fichier existe"; [ -e "nomfichier" ] || echo "fichier n'existe pas"; [ -x "nomfichier" ] && echo "fichier/répertoire exécutable"; [ -r "nomfichier" ] && echo "fichier avec droit de lecture"; [ -w "nomfichier" ] && echo "fichier avec droit d'écriture"; [ grep "bla" "nomfichier" ] && echo "bla est dans nomfichier"; case $var in choix1) # si $var est égale à choix1 alors: instruction1 ;; choix2 | choix3) # si $var est égale à choix2 ou à choix3 instruction2ou3 ;; esac for i in file file2 file3; do echo $i done function bla { echo $1 # parametre 1 }
Remarque: il ne faut pas oublier les espaces entre les crochets [ ] du if et les opérateurs (-eq, -a, ==).
Car if [ 1 -eq 1 ]
est vrai et if [1 -eq 1]
est faux.
Entree/sortie
Sortie: echo "chaine de caractere" VARIABLE1=allo echo "chaine avec une $VARIABLE1" VARIABLE2=test echo $VARIABLE2 Entrée: read nomvariable echo $nomvariable Deux entrées dans une sortie: (echo "def"; echo "abc") | sort # sort (echo "<?php \$a='abc'; ?>"; cat file.php) | php # php variable injection
Caractères spéciaux
Son de cloche
echo $'\a'; # ou echo -e "\a"; # changer la fréquence du son: echo -e "\33[10;FRÉQUENCE_en_Hertz]\33[11;DURÉE_EN_MilliSeconde]" # Fréquence et durée par défaut: echo -e "\33[10;750]\33[11;125]"
Hyperliens...
Erreur de bash
2005/02/05
bash: child setpgid (8026 to 8026): Aucun processus de ce type