La tOiLeB

Linux

Grep

  • rechercher un motif dans les fichiers d'une arborescence
    >grep -r $motif $repertoire
  • retourner une liste de noms de fichiers
    >grep -r -l $motif $répertoire
  • inverser le critère de recherche
    >grep -v $motif $fichiers
  • alternative a grep avec sed
    >sed -p '/$motif/p'

changer d'alternative

(géré par rpm)

>update-alternative --config gcc

installer un module perl via le reseau

>perl -MCPAN -e 'install $module'

repomper une partie d'un site http en local

>wget -r -nH --cut-dirs=n --relative --no-parent URL

changer de theme gtk

suivant la version de GTK, remplacer gtk par gtk-2.0, et gtkrc par gtkrc-2.0 copier le fichier gtkrc du répertoire de theme dans ~/.gtkrc, ou insérer la ligne "include /usr/share/themes/$theme/gtk/gtkrc" dans ~/.gtkrc

changer les icônes du kmenu

menudrake permet de revenir au menu par defaut de KDE ou d'éditer le menu Mandrake

Montrer la liste des symboles d'une bibliothèque partagée

>objdump -T /usr/lib/libldap.so | grep Base | tr -s '[:blank:]' ' ' | cut -f7 -d' '

Monter un fichier image

>mount image repertoire -t iso9660 -o loop

linuxconf

  • fichier de configuration dans /etc/conf.linuxconf
  • fichier de profiles dans /etc/linuxconf/profile

Mandrake

  • enlever le xconsole au démarrage de X: créer un script shell vide /usr/bin/kdmdesktop
  • enlever l'icone removable media de mandrake sur le bureau de KDE: mettre en commentaire les lignes concernées du fichier /usr/bin/kdesktop-links ou dans enlever l'option

Synchronisation de l'horloge sur internet

(paquetage ntp)

  • par le daemon ntp

    éditer /etc/ntp.conf

    |server ntp.tuxfamily.net
    |server ntp1.tuxfamily.net
    |server ntp2.tuxfamily.net
    |server ntp.univ-lyon1.fr
    >/etc/init.d/ntp start
  • de manière ponctuelle
    >ntpdate ntp.univ-lyon1.fr

Messagerie

  • test d'un serveur pop
    >telnet host 110
    |user user_name
    |pass password
    pour voir la liste des messages
    |list
    pour voir les première ligne du premier message
    |top 1
    pour quitter
    |quit
  • test d'un serveur imap (login en clair)
    >telnet host 143
    |a001 login user_name password
    |a002 select inbox
    pour quitter
    |a003 logout

configure

  • Création d'un script configure à partir d'un fichier configure.ac (autoconf)
    1. copy du fichier aclocal.m4
      >aclocal
    2. création de liens vers scripts config.guess, config.sub, ltmain.sh
      >libtoolize
    3. génération du script configure
      >autoconf
    4. création de install-sh, mkinstalldirs, missing, INSTALL, depcomp génération de Makefile.in
      >automake -c -a

Profiles

Description

Un profil contient un ensemble de fichier de configuration, et permet de selectionner le contexte de démarrage de l'ordinateur (ex. Maison ou Bureau). Les profiles sont gérés par linuxconf, et les fichiers sont archivés, restaurés au démarrage /etc/rc.d/rc.sysinit. Les profiles sont activés grâce à un parametre Noyau

  • prof=nom utilisé par le script /etc/rc.d/rc.sysinit, ou alors
  • PROFILE=nom utilisé par le script /etc/init.d/switchprofile (SysVInit 2.83) Le nom du profile reprend celui utilisé sous linuxconf

On peut récupérer le nom du profile pour l'utiliser dans des scripts en lisant la ligne de paramètres du noyau (/proc/cmdline). éditer à la fin de /etc/rc.local

|profile=$(sed -n 's/.*PROFILE=\([^ ]*\).*/\1/p' /proc/cmdline)
|if [ -z $profile ]; then
|        profile=$(sed -n 's/confver.current \([^ ]*\)/\1/p' /etc/conf.linuxconf)
|fi
|echo $profile >/etc/sysconfig/profile

Création

dans linuxconf->Administration->Profile

On peut récupérer le nom du profile pour l'utiliser dans des scripts

  1. en lisant la ligne de paramètres du noyau (/proc/cmdline) - necessite d'être root
  2. en insérant un script (sysvinit) qui place le nom du profile dans un fichier (ex. /etc/sysconfig/profile)
  3. en lisant la variable prof ou PROFILE (suivant la méthode vue plus haut)

Shell

  • vérifier la correction syntaxique d'un script shell
    >bash -n
  • Réaliser des calculs
    • avec bash
      >echo $[1 + 1]
    • avec bc (changement de base)
      >bc
      |ibase=16
      |A+B
      |21
      |quit
  • Substitution bash
    >test=file.mp3
    >echo ${test%%.mp3}
    file
    >echo ${test##file.}
    mp3
  • Redirections : redirige le descripteur de fichier 2 (sortie d'erreur) vers la sortie standard
    >cmd 2>&1 | less
  • Convertion d'encodage
    >iconv --from-code=8859_1 --to-code=UTF-8 $file >$new_file
  • Arguments

Séquence de démarage

SysV

ensemble de scripts regroupés sous /etc/init.d. Chaque script est associé à un ou plusieurs contextes d'execution (numéroté de 1 à 5), et a des priorités de démarrage et d'arrêt (de 0 à 99). Le système de fichier reflete ces relations:

  • un répertoire /etc/rc$niveau.d par niveau, contenant des liens vers les scripts de /etc/init.d associé à ce $niveau
  • l'odre lexicographique sur les noms des liens induit l'ordre d'execution au sein d'un contexte
  • niveaux de démarrages
    • 3: Console
    • 5: X11
    • 6: reboot/halt
  • structure des scripts

    Les associations sont indiquées au niveau de chaque script par la ligne commentaire chkconfig

    |# chkconfig: $niveaux $priorité_demarrage $priorité_arrêt
  • manipulation des scripts

    pour enlever ou retirer (sans les effacer) des scripts de la séquence de démarage, on utilise le programme chkconfig

    >chkconfig --add $nom_script
    >chkconfig --del $nom_script
  • Patron de script /etc/init.d
    |#!/bin/sh
    |# Init template
    |#---------------------------------------------------------------
    |# chkconfig: 35 29 10
    |# description:
    |#---------------------------------------------------------------
    |
    |# Source function library.
    |. /etc/rc.d/init.d/functions
    |
    |ret=0
    |
    |case $1 in
    |    start)
    |        gprintf "Performing various initialisations: "
    |        ...
    |        success "initialisations ok"
    |        ret=$?
    |        echo
    |        if [ $ret = 0 ]; then
    |            touch /var/lock/subsys/conf
    |        fi
    |        ;;
    |
    |    stop)
    |        ;;
    |
    |    status)
    |        status conf
    |        ;;
    |
    |    reload)
    |        ;;
    |
    |    restart)
    |        $0 stop
    |        $0 start
    |        ret=$?
    |        ;;
    |    *)
    |        gprintf "Usage: %s\\n" "$(basename $0) {start|stop|restart|status}"
    |        exit 0
    |        ;;
    |esac
    |
    |exit $ret
    |
    |# conf ends here

Shell

Scripts /etc/profile.d d'extensions .sh ou .csh, dont le contenu est éxécuté à chaque instantiation d'un shell bash ou csh. Les fichiers ne doivent pas comporter d'entête '#!/bin/sh', pour que leur interprétation puisse étendre l'environnement d'execution.

  • Prompt

    editer ~/.bashrc

    |case $TERM in
    |    xterm*)
    |            TITLEBAR='\\[\\e]0;\\w\\a\\]'
    |            ;;
    |        *)
    |            TITLEBAR=''
    |            ;;
    |esac
    |PS1="${TITLEBAR}\\[\\e[1;31m\\]\\w\\[\\e[1;34m\\]>\\[\\e[m\\]"
    |PS2='\\[\\e[1;34m\\]more\\[\\e[1;31m\\]>\\[\\e[m\\]'
  • Recherche dans l'historique avec touches pavé numéric

    éditer ~/.inputrc

    |# Bind keypad keys to functions.
    |"\\e[1~": beginning-of-line
    |"\\e[2~": paste-from-clipboard
    |"\\e[3~": delete-char
    |"\\e[4~": end-of-line
    |"\\e[5~": history-search-forward
    |"\\e[6~": history-search-backward

X11

Scripts sous /etc/X11/xinit.d

KDE

Le répertoire .kde/Autostart contient des fichier .desktop permettant d'executer diverses tâches à l'ouverture du bureau Séquence de démarage KDE qui prend en compte le profile (voir linuxconf)

  1. créer des répertoires dans .kde/Autostart portant le noms des profiles
  2. insérer une entrée dans .kde/Autostart
    |Desktop Entry]
    |Comment[fr]=
    |Encoding=UTF-8
    |Exec='/home/burghard/scripts/kde_profile.sh'
    |Icon=
    |MimeType=
    |Name[fr]=KDE Profile
    |Path=
    |ServiceTypes=
    |SwallowExec=
    |SwallowTitle=
    |Terminal=false
    |TerminalOptions=
    |Type=Application
    |X-KDE-SubstituteUID=false
    |X-KDE-Username=
    
    permettant d'appeler le script suivant
    |#!/bin/sh
    |# Execute un ensemble de scripts au démarrage de kde en fonction
    |# du profile selectionné au démarrage de la machine.
    |# Eric BURGHARD
    |#
    |eval $(sed -n 's/.*\\(PROFILE=[^ ]*\\).*/\\1/p' /proc/cmdline)
    |if [ -z $PROFILE ]; then
    |        exit 1;
    |fi
    |# execute tous les fichiers dans le répertoire
    |if [ -d ~/.kde/Autostart/$PROFILE ]; then
    |        for file in ~/.kde/Autostart/$PROFILE/* ; do
    |                if [ -f $file ]; then
    |                        $file
    |                fi
    |        done
    |fi

Configure

MPlayer
>./configure --prefix=/usr --enable-gui --enable-freetype --with-livelibdir=/usr/lib/live\
--with-extraincdir=/usr/include/dvdcss/:/usr/include/dvdnav/:/usr/include/dvdread/:/usr/X11R6/include \
--with-csslibdir=/usr/lib/ --with-libdvdnav=/usr/lib/ --with-xanimlibdir=/usr/X11R6/lib/xanim/mods/ \
--enable-qtx-codecs --with-reallibdir=/usr/lib/win32

copier le répertoire libavcodec (dans le rep de mplayer)

Net-SNMP
>./configure --prefix /usr --with-mib-modules="host disman/event-mib smux"

Mémoires de masse

  • Capacité d'un cd 1 secteur = 2352 octets (audio) et 2048 octet (data)
    minutes secteurs CD-ROM CDDA
    21 94,500 184.6MB 212.0MB
    63 283,500 553.7MB 635.9MB
    74 333,000 650.3MB 746.9MB
    80 360,000 703.1MB 807.4MB
    90 405,000 791.0MB 908.4MB
    99 445,500 870.1MB 999.3MB
  • Capacité d'un memorystick 64MB = 15835 blocks de 4096 octets

Compatibilité

  • extraire les fichiers d'une archive .chm
    >hh -decompile rep fichier.chm
  • extraire les fichiers d'une archive .rar
    >unrar x archive
  • extraire les fichiers d'une archive .ace
    >unace x archive
  • convertir une image cd .nrg en iso
    >nrg2iso image.nrg image.iso
  • convertir une image cd .bin/.cue en iso
    >bchunk image.bin image.cue image