Formation Evolix

SHell

SHell : infos versions

  • uname -a
  • cat /etc/debian_version OU cat /etc/redhat-release
  • dpkg -l OU rpm -qa

Shell : infos matériel

  • df -h
  • dmidecode
  • dmesg
  • free
  • top / htop / iotop
  • iftop / netstat / iptables
  • /proc/mdstat / vgs / drbdadm

Shell : système

  • ps, kill, pstree
  • fg, bg
  • diff, patch
  • tar, dd
  • gzip/gunzip, bzip2/bunzip2, xz/unxz
  • mount/umount, man
  • mkfs, fsck, tune2fs
  • Survivre dans un Shell

    • cd, cp, mv, rm
    • touch, mkdir, mktemp, ln
    • sort, wc, uniq, tr
    • echo, cat, head, tail, read

    Environnement shell

  • alias/unalias
  • ~/.profile, ~/.bashrc
  • dash, zsh
  • Commandes avancées

  • grep, find
  • sed, awk
  • xargs
  • script BASH

    test.sh
    
    #!/bin/bash
    
    echo test
    
    
    $ chmod +x test.sh
    $ ./test.sh
    $ bash test.sh
    
    $ mv test.sh test
    $ ./test
    

    variables

    
    VAR=foo
    VAR=$RANDOM
    VAR=`pwd`
    
    $ env
    
    ${i.%ext}
    ${i#/home/}
    

    arguments

    
    $0  Le nom de la commande (i.e. : du script)
    $1, $2, etc.    Le premier, deuxième, etc, argument passés au script
    $*  La liste de tous les arguments passés au script
    $#  Le nombre d'arguments passés au script
    
    
    test -f /etc/info.cf && . /etc/info.cf
    
    if, test, exit, seq, while, for, case
    
    
    > : change la sortie standard de la commande pour la placer dans un fichier.
    < : change l'entrée standard de la commande pour la prendre dans un fichier.
    | : branche la sortie standard de la commande de gauche sur l'entrée standard de la commande de droite.
    >> : change la sortie standard pour l'ajouter à la fin d'un fichier existant.
    || : exécuter la commande suivante si la première a échoué.
    && : n'exécuter la commande suivante que si la première a réussi.
    1>
    2>
    2>&1
    

    envoi d'email

    
    cat foo.tpl | sed -e "s/__TO__/$TO/ ; s/__TEXT__/$TEXT/" | \
        sendmail -oi -t -f return-path@example.com
    

    Opérations mathématiques

    
    echo $((1+1))
    echo "1+1" | bc
    echo "3/2" | bc -l
    

    TP

    écrire un script qui selon les arguments renvoient un email contenant le nombre de fichiers/répertoires/liens dans /etc (avec une alerte par rapport à un seuil situé dans un fichier de configuration)

    
    $ shellcheck script.sh
    
    http://exercism.io/languages/bash/exercise

    screen

    
    # apt install screen
    
    $ screen -ls
    $ screen -r foo
    $ screen -rd foo
    $ screen -x
    
    Ctrl+a+d : sortir du screen
    Ctrl+a+a : faire un Ctrl+a
    Ctrl+a+Echap OU Ctrl+a+[ : remonter dans le buffer d'un screen
    Ctrl+a+s : freezer le screen courant
    Ctrl+a+q : defreezer le screen courant (utile quand on freeze par erreur...)
    

    tmux

    
    # apt install tmux
    
    $ tmux ls
    $ tmux attach -t X
    
    Ctrl+b+d : sortir du screen