Utilisateur:Darkoneko/Initiation à Linux
Un article de Wikipédia, l'encyclopédie libre.
Sommaire |
[modifier] proteger ses fichiers
- a mettre dans ~/.bash_profile
if [ -f "${HOME}/.bashrc" ];then . "${HOME}/.bashrc" fi
- a mettre dans ~/.bashrc
umask 00xx avec xx = droits a enlever aux autres
par defaut, la valeur de umask est 0022 (groupe et autres ne peuvent pas ecrire dans le fichier)
dans mon cas : umask 0077 <- coupure des droits R/W/X a tout les autres, mwhahaha
[modifier] Scripting
[modifier] Variables
set permet d'afficher la liste des variables du shell
[modifier] affectation de valeur
bla="hello" (tout simplememt : pas de set devant, ni rien)
logins=`cat /etc/passwd | cut -d : -f 1` (l'expression est entouree par des backquote, tout en haut a gauche d'un qwerty)
[modifier] recuperation d'une valeur
echo "$bla" (important les guillemets)
afficher une valeur avec d'autres trucs
echo "${bla}357+oiu" (sans les {}, l'interpreteur ne pourrait savoir ou s'arrete le nom de la variable)
affichera ---> hello357+
[modifier] Variables reservees
$? = contient le code d'erreur du dernier programme execute
[modifier] Petits trucs utiles
[modifier] programmes
- true et false permettent de "simuler" une sortie bonne ou mauvaise de programme (ils retournent respectivement 0 et 1
- test permet de... faire plein de tests (super etonnant hein). sur un truc, ou comparer 2 chaines/fichiers/etc. Voir man test pour plus d'infos.
- [ parametres ] est une autre maniere d'ecrire test
- expr permet d'effectuer des calculs>
- note: tous les caracteres comme * ( ) | doivent etre backslashes pour ne pas etre interpretes par le shell ---> \* \( \)
[modifier] divers
- flux standards
- entre standard : stdin, numero 0
- sortie standard : stdout, numero 1
- sortie erreur std : stderr, numero 2
- /dev/null on peut tout écrire là dedans, c'est un trou noir.
- exemple : redirigeons la sortie std ou la sortie d'erreur
- ls machin ~ affichera une ligne d'erreur (machin n'existe pas) et le contenu du dossier du compte
- ls machin ~ > /dev/null n'affichera à l'ecran que l'erreur (==stdout est envoye sur null mais pas stderr)
- ls machin ~ 2> /dev/null n'affichera à l'ecran que le contenu du dossier (==stderr est envoye sur null mais pas stdout)
- pour envoyer les 2 au même endroit :
- ls machin ~ > /tmp/out 2>&1 (on envoie la stdout sur /tmp/out et on indique à stderr de faire de meme
- echo "hello" >&2 enverra la stdout sur stderr
[modifier] Comment faire un script
#! /bin/sh
tout script commence par une ligne de ce type (/bin/sh est l'interpreteur utilise)
!!ne pas oublier de donner les droits d'execution au fichier.
chmod u+x fichier.sh
[modifier] Actions conditionnelles
if commande ; then .... elif commande ; then .... else .... fi
le test se fait sur le code de retour des commandes (voir man test)
[modifier] Boucles
while commande ; do .... done
for variable in valeurs ; do .... done
ex :
for var in bla tre "ier ewfg" ; do echo $var done
affichera :
bla tre ier ezfg
[modifier] Variables
les variables passees au programmes sont recuperables de la maniere suivante :
$#
contient le nombre d'argumemts passes$0
contient le nom du programme$1
et suivants contiennent les (eventuels) argumemts passes au script$@
contient tous les arguments mis bout en bout- shift decale tous les arguments d'un cran vers la gauche (le 1er est donc supprime)
- il est possible de decaler plusieurs arguments d'un coup en passant le nbre en parametre
[modifier] exemple de calcul
i=1 while [ "$i" -lt 1000000 ] ; do echo "$i" i=`expr $i \* 3` done
- !!SURTOUT PAS "i = 1"
- !!parentheses autour de $i
- !!bqckslqches autour de lexpression
[modifier] systeme regex
- . = n'importe quel caractere
- [a-z] = un intervalle
- [^0-9] = inverse d'un intervalle
- [^0-9a-zA-Z] = inverse d'un intervalle compose de plusieurs trucs
- a[0-9]\*a = la chaine "a" + "0 a +infini caracteres de type [0-9]" + "a"
- q[0-9]\?q = la chaine "q" + "0 a 1 caractere de type [0-9]" + "q"
- n[A-Z]\+r = la chaine "n" + "1 a +infini caractere de type [A-Z]" + "r"
- f\(ou)\+bar = le chaine "f" + 1 a +infini * la chaine "ou" + bar (ex: foubar, fouououbar...)
- ^ (si au tout debut d'une ligne)
- $ (si a la toute fin d'une ligne)
- \(foo\|bar\) = un OU (soit ce aui se trouve a gauche, soit ce qui se trouve a droite)
Exemple de commande utilisant regex
grep
: affiche toutes les lignes d'un fichier correspondant a l'expression passee e parametre (avec -v, toutes les lignes de contenant PAS l'expression)