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 [03/02/2011 15:41] – précision indices non numériques daniel | linux:memo_bash [03/12/2015 13:25] – daniel | ||
---|---|---|---|
Ligne 2: | Ligne 2: | ||
* [[http:// | * [[http:// | ||
+ | * http:// | ||
===== vrac ===== | ===== vrac ===== | ||
Ligne 7: | Ligne 8: | ||
==== 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 15: | Ligne 24: | ||
* pour la détacher alors qu' | * pour la détacher alors qu' | ||
(cf man bash et http:// | (cf man bash et http:// | ||
+ | |||
+ | ==== jobs et at ==== | ||
+ | On peut lister les jobs en cours avec '' | ||
==== variables ==== | ==== variables ==== | ||
Ligne 39: | Ligne 51: | ||
$* 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 ==== | ||
Regarder la manipulation de chaines sur http:// | Regarder la manipulation de chaines sur http:// | ||
+ | |||
+ | Attention, globing correspond à une expression de " | ||
+ | |||
<code bash> | <code bash> | ||
${#chaine} # nb de car de $chaine | ${#chaine} # nb de car de $chaine | ||
- | expr match " | + | |
+ | expr match " | ||
+ | expr match " | ||
+ | expr match " | ||
expr index $chaine $souschaine # Position numérique dans $chaine du premier caractère dans $souschaine qui correspond. | expr index $chaine $souschaine # Position numérique dans $chaine du premier caractère dans $souschaine qui correspond. | ||
+ | expr index " | ||
# Extraction d’une sous-chaîne | # Extraction d’une sous-chaîne | ||
- | ${chaine:position} # Extrait une sous-chaîne de $chaine à partir de la position | + | ${chaine:pos} # Extrait une sous-chaîne de $chaine à partir de la position |
- | ${chaine:position:longueur} # Extrait | + | ${chaine:pos:longueur} # Extrait |
# Suppression de sous-chaînes | # Suppression de sous-chaînes | ||
- | ${chaine#souschaine} # Supprime la correspondance la plus petite de souschaine | + | ${chaine#globing} # Supprime la correspondance la plus petite de globing |
- | ${chaine##souschaine} # Supprime la correspondance la plus grande de souschaine | + | ${chaine##globing} # Supprime la correspondance la plus grande de globing |
- | ${chaine%souschaine} # Supprime la plus petite correspondance de souschaine | + | ${chaine%globing} # Supprime la plus petite correspondance de globing |
- | ${chaine%%souschaine} # Supprime la plus grande correspondance de souschaine | + | ${chaine%%globing} # Supprime la plus grande correspondance de globing |
# Remplacement de sous-chaîne | # Remplacement de sous-chaîne | ||
- | ${chaine/souschaine/ | + | ${chaine/globing/ |
- | ${chaine//souschaine/ | + | ${chaine//globing/ |
- | ${chaine/#souschaine/ | + | # ex pour échapper les slashes |
- | ${chaine/%souchaine/ | + | chaine=/ |
+ | |||
+ | ${chaine/#globing/ | ||
+ | # ex pour faire un basename | ||
+ | chaine=/ | ||
+ | |||
+ | ${chaine/%globing/ | ||
+ | chaine=/ | ||
</ | </ | ||
- | === 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 101: | Ligne 129: | ||
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 135: | Ligne 167: | ||
et on peut combiner ça avec du -a (and) -o (or) et ! (not). Par exemple\\ | et on peut combiner ça avec du -a (and) -o (or) et ! (not). Par exemple\\ | ||
[ ! -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" | ||
+ | |||
+ | |||
+ | ==== 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 ===== | ===== 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 148: | Ligne 198: | ||
===== Commandes ===== | ===== Commandes ===== | ||
+ | Cf http:// | ||
==== vrac ==== | ==== vrac ==== | ||
Ligne 176: | Ligne 227: | ||
</ | </ | ||
- | Pour RECOPIER UNE ARBORESCENCE (et son contenu) se placer dans le répertoire de destination et entrer | ||
- | (cd / | ||
- | explication dans "le système Linux", | ||
- | Apparemment devenu inutile depuis que cp a l' | ||
- | |||
- | ==== cat ==== | ||
- | < | ||
- | Usage: cat [OPTION] [FILE]... | ||
- | Concatenate FILE(s), or standard input, to standard output. | ||
- | |||
- | -A, --show-all | ||
- | -b, --number-nonblank | ||
- | -e | ||
- | -E, --show-ends | ||
- | -n, --number | ||
- | -s, --squeeze-blank | ||
- | -t | ||
- | -T, --show-tabs | ||
- | -u | ||
- | -v, --show-nonprinting | ||
- | --help | ||
- | --version | ||
- | |||
- | With no FILE, or when FILE is -, read standard input. | ||
- | </ | ||
- | ==== tail ==== | ||
- | < | ||
- | Usage: tail [OPTION]... [FILE]... | ||
- | Print the last 10 lines of each FILE to standard output. | ||
- | With more than one FILE, precede each with a header giving the file name. | ||
- | With no FILE, or when FILE is -, read standard input. | ||
- | |||
- | --retry | ||
- | | ||
- | | ||
- | -c, --bytes=N | ||
- | -f, --follow[={name|descriptor}] output appended data as the file grows; | ||
- | -f, --follow, and --follow=descriptor are | ||
- | | ||
- | -n, --lines=N | ||
- | --max-unchanged-stats=N | ||
- | with --follow=name, | ||
- | | ||
- | to see if it has been unlinked or renamed | ||
- | (this is the usual case of rotated log files) | ||
- | --pid=PID | ||
- | -q, --quiet, --silent | ||
- | -s, --sleep-interval=S | ||
- | | ||
- | -v, --verbose | ||
- | --help | ||
- | --version | ||
- | |||
- | If the first character of N (the number of bytes or lines) is a `+', | ||
- | print beginning with the Nth item from the start of each file, otherwise, | ||
- | print the last N items in the file. N may have a multiplier suffix: | ||
- | b for 512, k for 1024, m for 1048576 (1 Meg). A first OPTION of -VALUE | ||
- | or +VALUE is treated like -n VALUE or -n +VALUE unless VALUE has one of | ||
- | the [bkm] suffix multipliers, | ||
- | or -c +VALUE. | ||
- | |||
- | With --follow (-f), tail defaults to following the file descriptor, which | ||
- | means that even if a tail' | ||
- | its end. This default behavior is not desirable when you really want to | ||
- | track the actual name of the file, not the file descriptor (e.g., log | ||
- | rotation). | ||
- | named file by reopening it periodically to see if it has been removed and | ||
- | 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 ==== | ||
- | -l format long | ||
- | -h human readable | ||
- | -S sort by file size | ||
- | -t sort by modification time | ||
- | -X sort alphabetically by entry extension | ||
- | ==== wc ==== | ||
- | |||
- | wc -l donne le nb de lignes | ||
- | par exemple | ||
- | cat toto.txt | grep titi | wc -l | ||
- | donne le nb de lignes où ' | ||
- | ==== rm ==== | ||
- | |||
- | Pour virer un rep entier | ||
- | rm -Rf repertoire_a_vider | ||
- | si marche pas : rm -Rf repertoire_a_vider/ | ||
- | ==== 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 | ||
- | tar xvzf archive.tgz decompresse l' | ||
- | |||
- | ==== gzip ==== | ||
- | < | ||
- | usage: gzip [-cdfhlLnNrtvV19] [-S suffix] [file ...] | ||
- | -c --stdout | ||
- | -d --decompress | ||
- | -f --force | ||
- | -h --help | ||
- | -l --list | ||
- | -L --license | ||
- | -n --no-name | ||
- | -N --name | ||
- | -q --quiet | ||
- | -r --recursive | ||
- | -S .suf --suffix .suf use suffix .suf on compressed files | ||
- | -t --test | ||
- | -v --verbose | ||
- | -V --version | ||
- | -1 --fast | ||
- | -9 --best | ||
- | | ||
- | </ | ||
==== find ==== | ==== find ==== | ||
- | pour afficher tous les fichiers de + de 20Ko (FreeBSD, 20k autorise | + | pour afficher tous les fichiers de + de 20Ko (FreeBSD, |
- | find /path \( -size +20000c \) -exec ls -l {} \; | + | 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 ==== | + | |
- | < | + | |
- | Usage: grep [OPTION]... PATRON [FICHIER] ... | + | |
- | Search for PATTERN in each FILE or standard input. | + | |
- | Example: grep -i 'hello world' menu.h main.c | + | |
- | + | ||
- | Regexp selection and interpretation: | + | |
- | -E, --extended-regexp | + | |
- | -F, --fixed-regexp | + | |
- | -G, --basic-regexp | + | |
- | -e, --regexp=PATTERN | + | |
- | -f, --file=FILE | + | |
- | -i, --ignore-case | + | |
- | -w, --word-regexp | + | |
- | -x, --line-regexp | + | |
- | -z, --null-data | + | |
- | non pas par un retour de chariot | + | |
- | + | ||
- | Divers: | + | |
- | -s, --no-messages | + | |
- | -v, --revert-match | + | |
- | -V, --version | + | |
- | --help | + | |
- | --mmap | + | |
- | + | ||
- | Output control: | + | |
- | -b, --byte-offset | + | |
- | -n, --line-number | + | |
- | -H, --with-filename | + | |
- | -h, --no-filename | + | |
- | -q, --quiet, --silent | + | |
- | --binary-files=TYPE | + | |
- | TYPE is ' | + | |
- | -a, --text | + | |
- | -I equivalent to --binary-files=without-match | + | |
- | -d, --directories=ACTION | + | |
- | ACTION is ' | + | |
- | -r, --recursive | + | |
- | -L, --files-without-match only print FILE names containing no match | + | |
- | -l, --files-with-matches | + | |
- | -c, --count | + | |
- | -Z, --null | + | |
- | + | ||
- | Contrôle du contexte: | + | |
- | -B, --before-context=N | + | |
- | -A, --after-context=N | + | |
- | -C, --context[=N] | + | |
- | à moins que -A ou -B ne soit spécifié | + | |
- | -N identique à --context=N | + | |
- | -U, --binary | + | |
- | les fins de lignes (MS-DOS) | + | |
- | -u, --unix-byte-offsets | + | |
- | aucun CR n' | + | |
- | + | ||
- | `egrep' | + | |
- | Sans FICHIER, ou si - est utilisé comme nom de FICHIER, la lecture | + | |
- | se fait de l' | + | |
- | est implicite. Termine avec 0 s'il y a concordance avec 1 si aucune. | + | |
- | Termine avec 2 s'il y a des erreurs de syntaxe ou de système. | + | |
- | </ | + | |
==== sed ==== | ==== sed ==== | ||
fait du rechercher/ | fait du rechercher/ | ||
+ | |||
+ | cf [[sed]] | ||
exemples sur http:// | exemples sur http:// | ||
Ligne 389: | Ligne 259: | ||
< | < | ||
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 406: | Ligne 276: | ||
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 |
- | sed -e '288 !d' </ | + | sed -e '288 !d' <fichier |
- | affichera la ligne 288 (ou plutôt n'effacera pas, le " | + | ou |
- | et | + | sed -ne '288 p' |
+ | |||
+ | ou un bloc de lignes | ||
sed -e ' | sed -e ' | ||
- | affichera les lignes | + | ou |
+ | sed -ne '288,291 p' </ | ||
==== cut ==== | ==== cut ==== | ||
Ligne 421: | Ligne 294: | ||
pour récupérer les GUIDuser du log nl3i | pour récupérer les GUIDuser du log nl3i | ||
grep kne nl3i_access.log | grep 'GET / | grep kne nl3i_access.log | grep 'GET / | ||
- | |||
- | ==== php ==== | ||
- | < | ||
- | sur ns2230, le binaire php est dans / | ||
- | Usage: php [-q] [-h] [-s] [-v] [-i] [-f < | ||
- | php < | ||
- | -a Run interactively | ||
- | -C Do not chdir to the script' | ||
- | -c < | ||
- | -n No php.ini file will be used | ||
- | -d foo[=bar] | ||
- | -e | ||
- | -f < | ||
- | -h This help | ||
- | -i PHP information | ||
- | -l | ||
- | -m Show compiled in modules | ||
- | -q | ||
- | -s | ||
- | -v | ||
- | -w | ||
- | -z < | ||
- | </ | ||
==== mysql ==== | ==== mysql ==== | ||
Ligne 452: | Ligne 302: | ||
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:// | ||
ex de backup & mail | ex de backup & mail | ||
+ | |||
<code bash> | <code bash> | ||
#!/bin/sh | #!/bin/sh | ||
Ligne 479: | Ligne 330: | ||
/ | / | ||
</ | </ | ||
+ | |||
+ | ==== mail ==== | ||
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