linux:memo_bash
Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédenteProchaine révisionLes deux révisions suivantes | ||
linux:memo_bash [30/04/2011 18:43] – regex => globing (shell) daniel | linux:memo_bash [27/02/2014 16:59] – daniel | ||
---|---|---|---|
Ligne 2: | Ligne 2: | ||
* [[http:// | * [[http:// | ||
+ | * http:// | ||
===== vrac ===== | ===== vrac ===== | ||
+ | |||
+ | |||
==== Redirection ==== | ==== Redirection ==== | ||
Pour rediriger les erreurs dans le meme log : commande >log 2>&1 | Pour rediriger les erreurs dans le meme log : commande >log 2>&1 | ||
+ | Cf http:// | ||
+ | |||
+ | Cf http:// | ||
+ | |||
+ | Cf aussi | ||
+ | trap commande signal | ||
+ | pour exécuter une commande en cas de signal (le try/catch du bash) | ||
==== gestion des processus liés au terminal (avant/ | ==== gestion des processus liés au terminal (avant/ | ||
Ligne 19: | Ligne 29: | ||
==== jobs et at ==== | ==== jobs et at ==== | ||
On peut lister les jobs en cours avec '' | On peut lister les jobs en cours avec '' | ||
+ | |||
+ | |||
==== variables ==== | ==== variables ==== | ||
Ligne 43: | Ligne 55: | ||
$* La liste des arguments à partir de $1 | $* La liste des arguments à partir de $1 | ||
- | $@ La liste des arguments à partir de $1, chacun étant entre " (le nb et les contenu sont donc préservé si l'un deux comporte une espace, cf http:// | + | $@ La liste des arguments à partir de $1, chacun étant entre " (le nb et les contenu sont donc préservé si l'un deux comporte une espace, cf http:// |
+ | |||
+ | '' | ||
$$ le n° PID du processus courant | $$ le n° PID du processus courant | ||
$! le n° PID du processus fils | $! le n° PID du processus fils | ||
- | |||
- | |||
- | |||
- | |||
- | |||
==== Manipulation de chaînes ==== | ==== Manipulation de chaînes ==== | ||
Ligne 94: | Ligne 103: | ||
</ | </ | ||
- | === subsitution | + | |
+ | ==== substitution | ||
bash ne permet pas l' | bash ne permet pas l' | ||
- | === tableaux === | + | Mais pour des booléens on peut utiliser le test -v " |
+ | |||
+ | ==== tableaux | ||
Cf http:// | Cf http:// | ||
Ligne 121: | Ligne 133: | ||
Source: http:// | Source: http:// | ||
- | * Tester un fichier | + | * Tester un fichier [ option fichier ] |
- | [ option fichier ] | + | |
- | avec pour option | + | |
- | -e il existe | + | |
- | -f c'est un fichier normal | + | * -L : c'est un symlink |
- | -d c'est un répertoire | + | * -h : c'est un symlink valide (marche pour les dossiers) |
- | -r | -w | -x il est lisible | modifiable | exécutable | + | * -r | -w | -x | -k | -p | -u : lisible | modifiable | exécutable |
- | -s il n'est pas vide | + | * -p | -t | -S : tube nommé | file descriptor | socket |
+ | * -O | -G : il m' appartient | appartient à mon groupe | ||
+ | | ||
+ | * fichier_1 -ef fichier_2 : vrai si le fichier_1 et fichier_2 sont hard linkés (equal files) | ||
+ | * fichier_1 -nt fichier_2 : vrai si le fichier_1 est plus récent (newer than) que le fichier_2 ou si fichier_1 existe et non fichier_2 | ||
- | * Tester une chaine | + | * Tester une chaine [ option chaine ] |
- | [ option chaine ] | + | |
- | -z | -n la chaine est vide / n'est pas vide | + | |
- | = | != les chaines comparées sont identiques | différentes | + | * -v variable : $variable existe et a été assignée |
ATTENTION à quoter la variable à tester : | ATTENTION à quoter la variable à tester : | ||
Ligne 156: | Ligne 172: | ||
[ ! -f $1 -a $2 -lt 10 ] && echo "OK, le 1er param n'est pas un fichier et le 2e est inférieur à 10" | [ ! -f $1 -a $2 -lt 10 ] && echo "OK, le 1er param n'est pas un fichier et le 2e est inférieur à 10" | ||
- | ===== Commandes perso ===== | ||
+ | ==== ulimit ==== | ||
+ | * -S :soft limit | ||
+ | * -H : hard limit | ||
+ | * -a : tout afficher | ||
+ | * -n : nb max de fichiers ouverts (socket & connexions comprises) | ||
+ | * -u : nb max de process lancés | ||
+ | * -T : nb max de threads | ||
+ | Cf man bash /ulimit pour le reste... (ou man dash, sous debian les process sont souvent lancés par dash, alias de sh, cf / | ||
+ | Ces valeurs sont fixées dans / | ||
+ | |||
+ | Attention, ces valeurs s' | ||
+ | |||
+ | ===== Commandes perso ===== | ||
+ | |||
+ | |||
+ | * Pour lister le nb de fichiers/ | ||
+ | <code bash> | ||
+ | uniq -c < / | ||
==== Scripts ==== | ==== Scripts ==== | ||
+ | |||
=== afflign.sh - afficher une (ou des) lignes d'un fichier === | === afflign.sh - afficher une (ou des) lignes d'un fichier === | ||
Ligne 203: | Ligne 237: | ||
==== cat ==== | ==== cat ==== | ||
< | < | ||
- | Usage: cat [OPTION] [FILE]... | ||
- | Concatenate FILE(s), or standard input, to standard output. | ||
- | |||
- | -A, --show-all | ||
-b, --number-nonblank | -b, --number-nonblank | ||
- | -e | ||
-E, --show-ends | -E, --show-ends | ||
-n, --number | -n, --number | ||
-s, --squeeze-blank | -s, --squeeze-blank | ||
- | -t | ||
-T, --show-tabs | -T, --show-tabs | ||
- | -u | ||
-v, --show-nonprinting | -v, --show-nonprinting | ||
- | --help | ||
- | --version | ||
- | |||
- | With no FILE, or when FILE is -, read standard input. | ||
</ | </ | ||
==== tail ==== | ==== tail ==== | ||
Ligne 264: | Ligne 287: | ||
named file by reopening it periodically to see if it has been removed and | named file by reopening it periodically to see if it has been removed and | ||
recreated by some other program. | recreated by some other program. | ||
- | </ | ||
- | ==== chmod ==== | ||
- | < | ||
- | les droits sous UNIX | ||
- | 4 == READ (r) | ||
- | 2 == WRITE (w) | ||
- | 1 == EXECUTE (x) | ||
- | ie 700=rwx------ ou bien 644=rw-r--r-- | ||
</ | </ | ||
==== ls ==== | ==== ls ==== | ||
+ | < | ||
-l format long | -l format long | ||
-h human readable | -h human readable | ||
Ligne 280: | Ligne 296: | ||
-t sort by modification time | -t sort by modification time | ||
-X sort alphabetically by entry extension | -X sort alphabetically by entry extension | ||
+ | </ | ||
+ | |||
==== wc ==== | ==== wc ==== | ||
+ | "word count" | ||
- | wc -l donne le nb de lignes | + | |
- | par exemple | + | |
- | cat toto.txt | grep titi | wc -l | + | cat toto.txt | grep titi | wc -l |
- | donne le nb de lignes où ' | + | donne le nb de lignes où ' |
- | ==== rm ==== | + | grep -c titi toto.txt |
- | Pour virer un rep entier | ||
- | rm -Rf repertoire_a_vider | ||
- | si marche pas : rm -Rf repertoire_a_vider/ | ||
==== tar ==== | ==== tar ==== | ||
- | tar cvzf archive.tgz repertoire_a_archiver | + | |
- | prends tous les fichiers de repertoire_a_archiver (sous-rep inclus) et les mets dans archive.tgz | + | prends tous les fichiers de repertoire_a_archiver (sous-rep inclus) et les mets dans archive.tgz, idem en bzip2 avec |
- | tar xvzf archive.tgz decompresse l' | + | tar cvjf archive.tar.bz2 repertoire_a_archiver |
+ | |||
+ | | ||
+ | et en général | ||
+ | tar xvf archive.tgz | ||
+ | suffit | ||
==== gzip ==== | ==== gzip ==== | ||
Ligne 321: | Ligne 342: | ||
pour afficher tous les fichiers de + de 20Ko (FreeBSD, 20k autorise sous linux) | pour afficher tous les fichiers de + de 20Ko (FreeBSD, 20k autorise sous linux) | ||
- | find /path \( -size +20000c \) -exec ls -l {} \; | + | |
lister les fichier de /tmp de 0 octets de + de 60mn | lister les fichier de /tmp de 0 octets de + de 60mn | ||
- | find /tmp -size 0 -amin -60 -exec ls -alh {} \; | + | |
pour renommer les mp3 en swf | pour renommer les mp3 en swf | ||
- | for i in *.mp3; do mv $i ${i%mp3}swf ;done | + | |
==== grep ==== | ==== grep ==== | ||
Ligne 392: | Ligne 413: | ||
fait du rechercher/ | fait du rechercher/ | ||
+ | |||
+ | cf [[sed]] | ||
exemples sur http:// | exemples sur http:// | ||
Ligne 409: | Ligne 432: | ||
< | < | ||
Début de ligne ^ | Début de ligne ^ | ||
- | Fin de ligne $ | + | Fin de ligne |
N' | N' | ||
Zéro ou plusieurs * | Zéro ou plusieurs * | ||
Ligne 426: | Ligne 449: | ||
for fich in *.hosts; do digovh.sh `echo $fich | sed ' | for fich in *.hosts; do digovh.sh `echo $fich | sed ' | ||
- | Voir aussi tr qui remplace des bouts de chaine | + | Voir aussi tr qui remplace des caractères |
sed est aussi efficace pour afficher une ligne particulière | sed est aussi efficace pour afficher une ligne particulière | ||
Ligne 433: | Ligne 456: | ||
et | et | ||
sed -e ' | sed -e ' | ||
- | affichera les lignes 288 à 291. | + | affichera les lignes 288 à 291, tout comme |
+ | sed -ne ' | ||
+ | (on affiche pas sauf demande explicite) | ||
==== cut ==== | ==== cut ==== | ||
Ligne 472: | Ligne 497: | ||
Quand on a perdu le mot de pase root: | Quand on a perdu le mot de pase root: | ||
- | <file> | + | <code bash> |
/ | / | ||
- | Restart it with the following: | + | # Restart it with the following: |
/ | / | ||
- | Connect to the server with: | + | # Connect to the server with: |
mysql mysql | mysql mysql | ||
- | Enter the following: | + | # Enter the following: |
UPDATE user SET password=PASSWORD(' | UPDATE user SET password=PASSWORD(' | ||
- | Exit the client | + | # Exit the client |
- | Shut down the server with: | + | # Shut down the server with: |
mysqladmin shutdown | mysqladmin shutdown | ||
- | Start the server back up properly with: | + | # Start the server back up properly with: |
/ | / | ||
- | </file> | + | </code> |
trouvé sur http:// | trouvé sur http:// | ||
Ligne 501: | Ligne 526: | ||
un simple | un simple | ||
- | cat fichier_a_joindre | uuencode nom_de_la_piece_jointe | mail -s " | + | cat fichier_a_joindre | uuencode nom_de_la_piece_jointe | mail -s " |
marche aussi, équivalent à | marche aussi, équivalent à | ||
- | uuencode fichier_a_joindre nom_de_la_piece_jointe | mail -s " | + | |
===== NFS ===== | ===== NFS ===== |
linux/memo_bash.txt · Dernière modification : 10/09/2020 09:58 de daniel