IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Linux Discussion :

[Shell] afficher les permissions d'un fichier en français


Sujet :

Linux

  1. #1
    Expert éminent

    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Juillet 2004
    Messages
    2 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 756
    Points : 6 686
    Points
    6 686
    Par défaut [Shell] afficher les permissions d'un fichier en français
    Bonjour

    J'ai développé un script qui permet comme indiqué dans le titre d'afficher les permissions d'un fichier en français.

    J'ai un soucis lors de l'exécution:
    Cela me donne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    permissions.sh: le fichier test a été trouvé
    permissions.sh: les permissions pour ce fichier sont: -rwxr-xr-x
    Jusque là pas de soucis.

    Suite de l'affichage:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    permissions.sh: permissions utilisateur: aucun
    permissions.sh: permissions utilisateur: exécution
    permissions.sh: permissions utilisateur: écriture/exécution
    permissions.sh: permissions utilisateur: lecture/écriture/exécution
    permissions.sh: permissions utilisateur: lecture
    permissions.sh: permissions utilisateur: lecture/écriture
    permissions.sh: permissions utilisateur: lecture/exécution
    permissions.sh: permissions utilisateur: écriture
    Il m'affiche les mêmes messages pour le group et autres au lieu de me donner uniquement trois lignes: utilisateur, groupe et autres.

    Voici le code de mon script.

    Pourriez-vous me donner un petit coup de main s'il vous plaît ?


  2. #2
    Membre éclairé Avatar de BlaireauOne
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    492
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2007
    Messages : 492
    Points : 652
    Points
    652
    Par défaut
    Un petit conseil, pour debugger un script shell (voir comment le shell interprête tes commandes) ==> set -x


    Exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    .../...
    verifperms()
    {
    set -x
    	# permissions utilisateur
    	utilisateur=`echo $perm | cut -c2-4`
        for i in `echo $a $b $c $d $e $f $g $h`; do
        resuperm=`echo $i | cut -c1-3`
                if [ $resuperm=$utilisateur ]; then
                    afficheuperm=`echo $i | cut -c4-30`
                    echo `echo $programme: permissions utilisateur: $afficheuperm`
                fi
        done
    set +x
    .../...

    A l'exécution :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    .../...
    + for i in '`echo $a $b $c $d $e $f $g $h`'
    ++ echo '-wxécriture|exécution'
    ++ cut -c1-3
    + resuperm=-wx
    + '[' -wx=rwx ']'++ echo '-wxécriture|exécution'
    ++ cut -c4-30
    + afficheuperm='écriture|exécution'
    ++ echo permissions.sh: permissions utilisateur: 'écriture|exécution'
    + echo permissions.sh: permissions utilisateur: 'écriture|exécution'
    .../...
    J'en déduis que le shell teste la condition -wx=rwx et qu'il la considère comme concluante

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if [ $resuperm=$utilisateur ]; then
    après la correction suivante, ça marche déjà mieux

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if [ $resuperm = $utilisateur ]; then
    Pour blinder ton script, je te conseille même la syntaxe suivante qui évite les messages d'erreur lorsqu'une des variables est vide :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if [[ $resuperm = $utilisateur ]]; then
    t'évite de protéger tes variables comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if [ "$resuperm" = "$utilisateur" ]; then

    Résultat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    permissions.sh: le fichier xawk10.sh a été trouvé
    permissions.sh: les permissions pour ce fichier sont: -rwxr-xr-x
    permissions.sh: permissions utilisateur: lecture|écriture|exécution
    permissions.sh: permissions groupe: lecture|exécution
    permissions.sh: permissions autres: lecture|exécution

  3. #3
    Expert éminent

    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Juillet 2004
    Messages
    2 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 756
    Points : 6 686
    Points
    6 686
    Par défaut
    Un grand merci pour toutes ces informations

    Je viens de tester le script et c'est parfait


  4. #4
    Membre éclairé Avatar de BlaireauOne
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    492
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2007
    Messages : 492
    Points : 652
    Points
    652
    Par défaut
    Je te propose un script qui est moins coûteux en temps de traitement :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
     
    #!/bin/sh
    # ne pas oublier de faire un chmod u+x
     
    # -- afficher les permissions d'un fichier en français -- #
     
    # -- variables -- #
    programme=$(basename $0)
    version='1.01'
    fichier=''
     
    # -- opérations -- #
     
    # vérifie les permissions
    verifperms()
    {
    	printf  "%s : permissions %-12s : " ${programme} $1 
    	declare -a TablePerm 
    	case $1 in 
    		utilisateur)
    			TablePerm[1]=`echo $perm | cut -c2`
    			TablePerm[2]=`echo $perm | cut -c3`
    			TablePerm[3]=`echo $perm | cut -c4`
    			;;
    		groupe)
    			#if [[ $1 = "utilisateur" ]] ; then
    			TablePerm[1]=`echo $perm | cut -c5`
    			TablePerm[2]=`echo $perm | cut -c6`
    			TablePerm[3]=`echo $perm | cut -c7`
    			;;
    		autres)
    			#if [[ $1 = "utilisateur" ]] ; then
    			TablePerm[1]=`echo $perm | cut -c8`
    			TablePerm[2]=`echo $perm | cut -c9`
    			TablePerm[3]=`echo $perm | cut -c10`
    			;;
    	esac
     
    	for Ind in `seq 3`
    	do
    		if [[ ${TablePerm[*]} = "- - -" ]] ; then
    			echo -e "aucun\c"
    			break
    		fi
    		if [[ $Ind -ne 1 && ${TablePerm[$Ind]} != "-" ]] ; then
    			Slash="/"
    		else 
    			Slash=""
    		fi 
    		if [[ ${TablePerm[$Ind]} = "r" ]] ; then
    			echo -e "${Slash}lecture\c"
    		fi
    		if [[ ${TablePerm[$Ind]} = "w" ]] ; then
    			echo -e "${Slash}écriture\c"
    		fi
    		if [[ ${TablePerm[$Ind]} = "x" ]] ; then
    			echo -e "${Slash}exécution\c"
    		fi
    	done
    	echo ""
    }
     
     
    # usage du programme
    usage() {
        echo "usage: $programme [fichier]"
    }
     
    # affiche les permissions
    vaverifperms() {
        perm=`ls -la $fichier | cut -d " " -f1`
        echo "$programme: les permissions pour ce fichier sont: $perm"
        verifperms utilisateur
        verifperms groupe
        verifperms autres
    }
     
    # teste l'existence du fichier
    verifichier() {
        if [ -f $fichier ]; then
            echo "$programme: le fichier $fichier a été trouvé"
            vaverifperms
        else
            echo "$programme: le fichier $fichier n'existe pas"
        fi
    }
     
    # menu du programme
    case $1 in
        -v | --version )
        echo $programme $version
        ;;
        "")
        usage
        ;;
        *)
        fichier=$1
        verifichier
        exit 1
        ;;
    esac

    $ time permissions2.sh xx
    permissions2.sh: le fichier xx a été trouvé
    permissions2.sh: les permissions pour ce fichier sont: -rwxr-----
    permissions2.sh : permissions utilisateur : lecture/écriture/exécution
    permissions2.sh : permissions groupe : lecture
    permissions2.sh : permissions autres : aucun

    real 0m1.831s
    user 0m0.971s
    sys 0m1.318s



    $ time permissions.sh xx
    permissions.sh: le fichier xx a été trouvé
    permissions.sh: les permissions pour ce fichier sont: -rwxr-----
    permissions.sh: permissions utilisateur: lecture|écriture|exécution
    permissions.sh: permissions groupe: lecture
    permissions.sh: permissions autres: aucun

    real 0m4.671s
    user 0m2.408s
    sys 0m3.591s

  5. #5
    Expert éminent

    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Juillet 2004
    Messages
    2 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 756
    Points : 6 686
    Points
    6 686
    Par défaut
    Bien joué


  6. #6
    Expert confirmé
    Avatar de becket
    Profil pro
    Informaticien multitâches
    Inscrit en
    Février 2005
    Messages
    2 854
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Informaticien multitâches
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 2 854
    Points : 5 915
    Points
    5 915
    Par défaut
    Si je peut me permettre également


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    #!/bin/sh
     
    check_droit()
    {
    RT=$1
    [ "$RT" != "${RT/r/}" ] && printf "lecture   "
    [ "$RT" != "${RT/w/}" ] && printf "ecriture  "
    [ "$RT" != "${RT/x/}" ] && printf "execution "
    printf "\n"
    }
    droit=$( stat -c '%A' $1 )
    droit_prop=${droit:1:3}
    droit_groupe=${droit:4:3}
    droit_autre=${droit:7:3}
    printf "droits du  proprietaire : "
    check_droit $droit_prop
    printf "droits du groupe :        "
    check_droit $droit_groupe
    printf  "droits des autres :      "
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    bofh:/tmp# time ./droit.sh coucou
    droits du  proprietaire : lecture   ecriture
    droits du groupe :        lecture
    droits des autres :
    real    0m0.024s
    user    0m0.000s
    sys     0m0.008s
    bofh:/tmp#

  7. #7
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 721
    Points : 31 044
    Points
    31 044
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par BlaireauOne Voir le message
    Pour blinder ton script, je te conseille même la syntaxe suivante qui évite les messages d'erreur lorsqu'une des variables est vide :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if [[ $resuperm = $utilisateur ]]; then
    t'évite de protéger tes variables comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if [ "$resuperm" = "$utilisateur" ]; then
    Personnellement je préfère blinder mes variables (blindage qui résulte en fait d'une compréhension sur le fait qu'une expression ne peut pas être incomplète et que "test" avec "=" veut impérativement 2 opérandes). Mais juste pour ma culture, comment faut-il lire "[[ expression ]]" ???

    Citation Envoyé par BlaireauOne Voir le message

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    # teste l'existence du fichier
    verifichier() {
        if [ -f $fichier ]; then
            echo "$programme: le fichier $fichier a été trouvé"
            vaverifperms
        else
            echo "$programme: le fichier $fichier n'existe pas"
        fi
    }
    Ah ? Tu ne veux pas que ton script affiche les droits des fichiers spéciaux ou répertoires ???
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    # teste l'existence du fichier
    verifichier() {
        if [ -e $fichier ]; then
            echo "$programme: le fichier $fichier a été trouvé"
            vaverifperms
        else
            echo "$programme: le fichier $fichier n'existe pas"
        fi
    }
    Evidemment, faudra remplacer "ls -la" par "ls -lad" mais c'est plus "open" comme script

  8. #8
    Membre éclairé Avatar de BlaireauOne
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    492
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2007
    Messages : 492
    Points : 652
    Points
    652
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    Personnellement je préfère blinder mes variables (blindage qui résulte en fait d'une compréhension sur le fait qu'une expression ne peut pas être incomplète et que "test" avec "=" veut impérativement 2 opérandes). Mais juste pour ma culture, comment faut-il lire "[[ expression ]]" ???
    Bonne lecture

    http://man.developpez.com/man1/bash.1.php

    [[ expression ]]
    Renvoie 1 ou 0 selon la valeur de la condition expression. les expressions sont composées d'éléments primaires décrits dans EXPRESSIONSCONDITIONNELLES. Le coupage des mots et l'expansion des chemins ne sont pas réalisés sur les portions entre [[ et ]]; l'expansion des tildes, des paramètres, des variable, des expressions arithmétiques, la substitution des commandes et des processus, ainsi que la disparition des apostrophes sont réalisés.
    Quand les opérateurs == et != sont utilisés, la chaîne placée à droite de l'opérateur est considérée comme étant un motif et est recherchée selon les règles décrites dans Motifs génériques. La valeur renvoyée est 0 si les chaînes correspondent (ou respectivement ne correspondent pas), et 1 sinon. Toute partie du motif peut être protégée avec des apostrophes pour forcer sa comparaison en tant que chaîne (sans développement).
    Les expressions peuvent être combinées en utilisant les opérateurs suivants, par ordre décroissant de priorité :

    ( expression )
    Retourne la valeur de l'expression. Cela peut être utilisé pour outrepasser la priorité normale des opérateurs.
    ! expression
    Vraie si expression est vraie.
    expression1 && expression2
    Vraie si expression1 et expression2 sont toutes les deux vraies.
    expression1 || expression2 Vraie si expression1 ou expression2 est vraie.

    .../...

    EXPRESSIONS CONDITIONNELLES
    Les expressions conditionnelles sont utilisées par la commande composée [[ et les commandes internes test et [ pour vérifier l'état d'un fichier et assurer des comparaisons arithmétiques ou sur des chaînes. Les expressions se forment à partir des opérateurs unaires ou binaires suivants. Si un argument fichier est de la forme /dev/fd/n, alors il représente le descritpeur de fichier n.

    -a fichier
    Vrai si le fichier existe.
    -b fichier
    Vrai si le fichier existe et est un fichier spécial bloc.
    -c fichier
    Vrai si le fichier existe et est un fichier spécial caractère.
    -d fichier
    .../...

  9. #9
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 721
    Points : 31 044
    Points
    31 044
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par BlaireauOne Voir le message
    Bonne lecture

    http://man.developpez.com/man1/bash.1.php

    [[ expression ]]
    Renvoie 1 ou 0 selon la valeur de la condition expression. les expressions sont composées d'éléments primaires décrits dans EXPRESSIONSCONDITIONNELLES. Le coupage des mots et l'expansion des chemins ne sont pas réalisés sur les portions entre [[ et ]]; l'expansion des tildes, des paramètres, des variable, des expressions arithmétiques, la substitution des commandes et des processus, ainsi que la disparition des apostrophes sont réalisés.
    Quand les opérateurs == et != sont utilisés, la chaîne placée à droite de l'opérateur est considérée comme étant un motif et est recherchée selon les règles décrites dans Motifs génériques. La valeur renvoyée est 0 si les chaînes correspondent (ou respectivement ne correspondent pas), et 1 sinon. Toute partie du motif peut être protégée avec des apostrophes pour forcer sa comparaison en tant que chaîne (sans développement).
    Les expressions peuvent être combinées en utilisant les opérateurs suivants, par ordre décroissant de priorité :

    ( expression )
    Retourne la valeur de l'expression. Cela peut être utilisé pour outrepasser la priorité normale des opérateurs.
    ! expression
    Vraie si expression est vraie.
    expression1 && expression2
    Vraie si expression1 et expression2 sont toutes les deux vraies.
    expression1 || expression2 Vraie si expression1 ou expression2 est vraie.

    .../...

    EXPRESSIONS CONDITIONNELLES
    Les expressions conditionnelles sont utilisées par la commande composée [[ et les commandes internes test et [ pour vérifier l'état d'un fichier et assurer des comparaisons arithmétiques ou sur des chaînes. Les expressions se forment à partir des opérateurs unaires ou binaires suivants. Si un argument fichier est de la forme /dev/fd/n, alors il représente le descritpeur de fichier n.

    -a fichier
    Vrai si le fichier existe.
    -b fichier
    Vrai si le fichier existe et est un fichier spécial bloc.
    -c fichier
    Vrai si le fichier existe et est un fichier spécial caractère.
    -d fichier
    .../...
    J'ai tout lu. Juste un détail qui me gène: les options "-a" et "-o" de l'instruction "test" sont des connecteurs d'expression "and" et "or". Et là, je ne trouve pas "-o" et "-a" est décrit comme "si fichier existe" (qu'on retrouve aussi dans "-e"). Alors erreur de la page ou bien l'analogie entre "[[...]]" et "[...]" n'est pas exactement parfaite ???

  10. #10
    Membre éclairé Avatar de BlaireauOne
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    492
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2007
    Messages : 492
    Points : 652
    Points
    652
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    J'ai tout lu. Juste un détail qui me gène: les options "-a" et "-o" de l'instruction "test" sont des connecteurs d'expression "and" et "or". Et là, je ne trouve pas "-o" et "-a" est décrit comme "si fichier existe" (qu'on retrouve aussi dans "-e"). Alors erreur de la page ou bien l'analogie entre "[[...]]" et "[...]" n'est pas exactement parfaite ???
    ET logique :
    Équivalent de -a ==> &&

    OU logique
    Équivalent de -o ==> ||

    Exemple dans le script que j'ai posté dans cette même discussion :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    .../...
    		if [[ $Ind -ne 1 && ${TablePerm[$Ind]} != "-" ]] ; then
    			Slash="/"
    		else 
    			Slash=""
    		fi 
    .../...

    http://man.developpez.com/man1/bash.1.php
    [[ expression ]]
    .../...
    expression1 && expression2
    Vraie si expression1 et expression2 sont toutes les deux vraies.
    expression1 || expression2 Vraie si expression1 ou expression2 est vraie.

    Les opérateurs && et || n'exécutent pas expression2 si la valeur de expression1 suffit à déterminer le code de retour de l'expression conditionnelle entière.
    .../...

  11. #11
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 721
    Points : 31 044
    Points
    31 044
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par BlaireauOne Voir le message
    ET logique :
    Équivalent de -a ==> &&

    OU logique
    Équivalent de -o ==> ||

    Exemple dans le script que j'ai posté dans cette même discussion :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    .../...
    		if [[ $Ind -ne 1 && ${TablePerm[$Ind]} != "-" ]] ; then
    			Slash="/"
    		else 
    			Slash=""
    		fi 
    .../...

    http://man.developpez.com/man1/bash.1.php
    ouaip... je commence à voir que cette expression "[[ ... ]]" est un sacré mélange entre différents outils shell comme "[ ... ]" et "pgm1 && pgm2".
    Faudra que je me fasse quelques expé perso pour arriver à voir les avantages et inconvénients de passer par "[[...]]"

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 18/09/2008, 09h53
  2. obtenir les permissions d'un fichier
    Par dontDeleteMe dans le forum Langage
    Réponses: 1
    Dernier message: 06/02/2007, 16h19
  3. [Excel] Comment afficher les données d'un fichier Excel (PHP)
    Par pierrot10 dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 11/05/2006, 15h01
  4. Réponses: 2
    Dernier message: 15/01/2006, 21h36
  5. Afficher les lignes d'un fichier
    Par pepere73 dans le forum C++
    Réponses: 16
    Dernier message: 21/02/2005, 22h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo