anahop a écrit 7 commentaires

  • # environnement

    Posté par  . En réponse au message diverses questions : permissions, bash/exec, suid et sed. Évalué à 1.

    Si on fait

    TOTO=paf
    exec machin

    dans un shell, c'est un peu comme avoir un programme en C qui fait

    int toto=5;

    exec(truc);

    Dans le programme truc, même s'il y a une variable de nom toto, elle ne vaudra pas 5 au lancement du programme. Pareil en bash.
  • # hein ?

    Posté par  . En réponse au message Placer un filesystem complet en RAM. Évalué à 2.

    Je comprends pas tout mais :

    - "sauvegarder" et "en ram" dans la même phrase c'est curieux....

    - si une machine a beaucoup de ram, de toute façon les accès disques sont cachés dans des buffers en ram. Donc en pratique, il n'y a plus que des accès en ram (sauf pour les écritures qui sont propagées sur le disque évidement) et c'est complètement transparent donc je vois pas trop l'intérêt de faire un système de fichier en ram.
  • [^] # Re: Faire l'inverse

    Posté par  . En réponse au message expression rationnelle particuliere. Évalué à 1.

    Bonne idée.

    En gros le principe est de construire deux expressions régulières :
    une EXPR1 qui matche les exceptions et une EXPR2 qui matche le cas général.

    Ici ca donnerait : EXPR1: \\line\|\\par
    et EXPR2 : \\[a-zA-Z]*

    et ensuite on fait une opération de substitution (avec sed ou vi)
    s/ \( EXPR1\) \| EXPR2 / \1/g (j'ai rajouté des espaces pour la lisibilité)

    par ex avec sed :

    sed 's/\(\\line\|\\par\)\|\\[a-zA-Z]*/\1/g'

    Si le texte contient \toto, ça matche EXPR2 et c'est supprimé (car \1 ne 'contient' alors rien) et si le texte contient \line (ou \par) ça matche EXPR1 et c'est remplacé par lui même (donc conservé).

    En fait \line matche aussi EXPR2, mais sed prend le premier 'match' possible. Par contre ça marche plus si on intervertit EXPR1 et EXPR2 :
    sed 's/\\[a-zA-Z]*\|\(\\line\|\\par\)/\1/g'
  • # awk bien sur

    Posté par  . En réponse au message Bash, sed , awk ?. Évalué à 2.

    Si j'ai bien compris, on a un truc du style :

    "","","","",""
    "","truc","","",""
    "","","","",""
    "","","","",""
    "","","","",""
    "","","","",""
    "","","","",""
    "","","","",""
    "","machin","","",""
    "","","","",""
    "","","","",""
    "","","","",""
    "","","","",""
    "","","","",""
    "","chose","","",""
    "","","","",""
    "","","","",""

    et on veut :
    "","","","",""
    "","truc","","",""
    "","truc","","",""
    "","truc","","",""
    "","truc","","",""
    "","truc","","",""
    "","truc","","",""
    "","truc","","",""
    "","machin","","",""
    "","machin","","",""
    "","machin","","",""
    "","machin","","",""
    "","machin","","",""
    "","machin","","",""
    "","chose","","",""
    "","chose","","",""
    "","chose","","",""

    Si c'est bien ça, alors le programme awk suivant le fait :

    BEGIN {rempl = "\"\""; FS = ","; OFS = ",";}

    {
    if ($2 == "\"\"")
    $2 = rempl;
    else
    rempl = $2;
    print;
    }
  • # eval

    Posté par  . En réponse au message Reference indirecte et tableaux. Évalué à 4.

    On peut le faire avec un eval (qui execute ce qu'on lui passe en parametre).

    Par exemple :

    ouais ~ $ toto[5]=hop
    ouais ~ $ a=toto
    ouais ~ $ b=5
    ouais ~ $ eval c='${'$a'['$b']}'
    ouais ~ $ echo $c
    hop

    Mais il y a peu etre plus simple.

  • [^] # Re: uname

    Posté par  . En réponse au message Recuperer le nom et la version de la distro. Évalué à 5.

    Si c'est pour debian, il y a le fichier /etc/debian_version
  • # Sarge

    Posté par  . En réponse au sondage Debian Etch sera prête. Évalué à 3.

    Sarge devait etre prete en decembre 2003 (cf ce mail : http://lists.debian.org/debian-devel-announce/2003 /08/msg00010.html) et est finalement sortie en juin 2005 ....