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

Shell et commandes GNU Discussion :

Ajout de point d'interrogation dans le nom de fichier


Sujet :

Shell et commandes GNU

  1. #1
    Membre averti
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Avril 2006
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2006
    Messages : 46
    Par défaut Ajout de point d'interrogation dans le nom de fichier
    Bonjour à tous,

    J'ai écrit un petit script permettant de sauvegarder un dossier puis d'envoyer le contenu par mail.
    Le problème est que BASH ajoute 1 ou 2 point d'interrogation au nom du fichier à envoyer : test.log?? et ceci à chaque fois... du coup l'envoi par mail ne se fait pas.
    Après plusieurs heures de recherche je sèche..

    Si vous avez des idées je suis preneur!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    #!/bin/bash
    sortie="/home/moi/test.log"
    echo "-------------------------------------------------------------------" 1>$sortie
    echo "EXECUTE LE: `date`" 1>>$sortie
    echo "-------------------------------------------------------------------" 1>>$sortie
    echo 1>>$sortie
    echo "" 1>>$sortie
    echo "-------------------- SAUVEGARDE: /var/www -------------------------" 2>&1 1>>$sortie
    rsync -ahv --delete-after /var/www/ /mnt/D1/www/ 2>&1 1>>$sortie
    echo "" 1>>$sortie
    echo "-------------------------------------------------------------------" 1>>$sortie
    mail -s "TEST" test@test.com << $sortie
    exit 0

  2. #2
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 673
    Par défaut
    Bonjour,

    << est un document en ligne, son usage nécessite une balise de début et de fin; cela ne sert pas à rediriger le contenu d'un fichier vers une commande.
    une faute de frappe, sans doute.

    peux-tu ajouter un set -x avant la commande problématique, et nous afficher la sortie ?

    PS: il est inutile d'indiquer que c'est le stdout qui est redirigé vers le fichier journal, c'est le comportement par défaut.
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Membre averti
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Avril 2006
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2006
    Messages : 46
    Par défaut
    Bonjour,

    Effectivement c'est une faute de frappe!
    je teste ça et je répond.

  4. #4
    Membre averti
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Avril 2006
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2006
    Messages : 46
    Par défaut
    Re-Bonjour,

    Hé bien ne sort rien du tout... et même un simple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "test" > fichier.log
    créer un fichier:

    Du coup, j'ai réécrit le même script ds un nouveau fichier à l'aide de nano et je n'ai plus ce problème...

    Incompréhensible.

  5. #5
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 673
    Par défaut
    Incompréhensible.
    d'autant que, nous, on ne sait pas comment tu faisais avant
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  6. #6
    Modérateur
    Avatar de jlliagre
    Homme Profil pro
    Ingénieur support avancé & développement
    Inscrit en
    Juin 2007
    Messages
    2 695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur support avancé & développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 695
    Par défaut
    Citation Envoyé par DragOr Voir le message
    Du coup, j'ai réécrit le même script ds un nouveau fichier à l'aide de nano et je n'ai plus ce problème...

    Incompréhensible.
    Pas incompréhensible du tout, c'est juste des caractères qui n'étaient pas affichés par ton ancien éditeur, très vraisemblablement des CR si tu as commencé sous Windows.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $ cat -v a
    #!/bin/bash
    file="test"^M
    date > $file^M
    ps >> $file^M
    ls -l $file*
    $ ./a
    -rw-r--r-- 1 jlliagre jlliagre 154 janv. 14 11:40 test??

  7. #7
    Membre averti
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Avril 2006
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2006
    Messages : 46
    Par défaut
    Non, j'ai écrit le premier script avec vim, je suis sur ubuntu server.
    Et dans le premier fichier de script "script.sh", même en ne laissant que la ligne le résultat lors d'un était: .

    J'ai donc réécrit dans un nouveau fichier "script2.sh" via nano et le nom de sortie est correct.

    Ensuite j'ai copier l'intégralité de script.sh dans script2.sh via nano et là, plus de problème. En y repensant j'avais déjà eu un soucis mais avec un seul "?" en fin de fichier.

    Juste par curiosité j'aurais bien voulu savoir de quoi cela peut provenir...

  8. #8
    Modérateur
    Avatar de ggnore
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 472
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 472
    Par défaut
    Tu n'aurais pas un problème avec ton système de fichiers ?
    Tu pourrais utiliser
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    #!/bin/sh
     
    cat << EOF > file
    bla
    bla
    blu
    EOF
    afin d'éviter d'avoir à rediriger chaque ligne vers ton fichier.
    Toutes les vertus des hommes se perdent dans l’intérêt comme les fleuves se perdent dans la mer.
    N'oubliez pas de consulter les FAQ Linux et les cours et tutoriels Linux

  9. #9
    Modérateur
    Avatar de jlliagre
    Homme Profil pro
    Ingénieur support avancé & développement
    Inscrit en
    Juin 2007
    Messages
    2 695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur support avancé & développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 695
    Par défaut
    Citation Envoyé par DragOr Voir le message
    Non, j'ai écrit le premier script avec vim, je suis sur ubuntu server.
    Windows ou pas, vim fait partie des éditeurs susceptibles de cacher la présence de "CR".
    Et dans le premier fichier de script "script.sh", même en ne laissant que la ligne le résultat lors d'un était: .
    Juste par curiosité j'aurais bien voulu savoir de quoi cela peut provenir...
    ls affiche des points d'interrogation lorsqu'un nom de fichier contient des caractères "non affichables". La première étape serait donc de savoir ce qu'il y a vraiment à la fin du nom du fichier.

    Qu'affiche: ?

    Ensuite, il faudrait regarder si ces caractères "spéciaux" sont bien aussi présents dans ton script.

    Pour ce qui est du script lui-même, c'est sûr qu'il y a matière à simplification, par 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
    #!/bin/bash
    sortie="/home/moi/test.log"
    cat <<% | tee $sortie | mail -s "TEST" test@test.com
     
    -------------------------------------------------------------------
    EXECUTE LE: $(date)
    -------------------------------------------------------------------
     
     
    -------------------- SAUVEGARDE: /var/www -------------------------
    $(rsync -ahv --delete-after /var/www/ /mnt/D1/www/ 2>&1)
     
    -------------------------------------------------------------------
    %
    exit 0

  10. #10
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 376
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 376
    Par défaut
    Bonjour,
    Juste pour rajouter que sous vim, on peut passer en mode dos, unix ou mac depuis le mode echappe par exemple en tapant:
    pour dos:
    pour unix:
    pour mac:
    Ceci fera que lors de l'enregistrement du fichier, il le fera dans le mode spécifié.

Discussions similaires

  1. Réponses: 6
    Dernier message: 19/01/2009, 12h47
  2. Point d'interrogation dans le menu systeme
    Par [Mel] dans le forum MFC
    Réponses: 1
    Dernier message: 29/03/2007, 11h59
  3. Point d'interrogation dans UPDATE
    Par the_bmo dans le forum MySQL
    Réponses: 1
    Dernier message: 18/10/2006, 11h58
  4. Des points d'interrogation dans le retour js
    Par franculo_caoulene dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 07/11/2005, 16h25

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