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 :

Le Shell et les espaces


Sujet :

Linux

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juin 2009
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 21
    Par défaut Le Shell et les espaces
    Salut à tous

    J'ai un dilemme concernant les espaces sous shell . En faite , mon objectif est de faire un traitement pour les espaces présent dans les noms de fichiers. Ceci permettrait entre autre d'exécuter ce fichier via un autre programme car comme vous le savez , les noms avec espaces sont illisible sous unix.

    Du coup , j'ai fait pas pas mal de test sur les chaines de noms de fichiers avec des variables shell mais sans succès.

    En effet dans le cas , d'un fichier qui s'appelle "un test.pdf" , j'ai utilisé 3 variables.

    "$ a=un
    $ b=\ test.pdf
    "$ c=$a$b
    $ echo $c
    > un test.pdf

    et là ou ça foire c'est là :

    $ mv $c a.pdf
    > mv : la cible `a.pdf` n'est pas un repertoire

    ensuite par curiosité , je lui ai mis un repertoire :

    $ mv $c ../
    > mv: ne peut pas evaluer `un' : Aucun fichier ou dossier de ce type
    mv: ne peut pas evaluer `test' : Aucun fichier ou dossier de ce type


    Le système ne voit pas la chaine de caractère $c comme une seule chaine mais comme 2 chaines distinctes. J'ai fait le test avec un fichier se nommant "un" et j'ai effectué la commande "mv $c" et la fonction a renommé le fichier "un" en "test.pdf".

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 703
    Par défaut
    apparemment, tu sais ce qu'est un guillemet; utilises-en davantage :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    a=a #un seul mot
    b=" file"
    c="$a$b" #deux mots => guillemets
    mv "$c" b\ file #idem
    ls -1
    b file

  3. #3
    Membre averti
    Inscrit en
    Juin 2009
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 21
    Par défaut
    Citation Envoyé par N_BaH Voir le message
    apparemment, tu sais ce qu'est un guillemet; utilises-en davantage :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    a=a #un seul mot
    b=" file"
    c="$a$b" #deux mots => guillemets
    mv "$c" b\ file #idem
    ls -1
    b file

    Désolé mais ton exemple ne marche pas chez moi ...

    [~]$ a=a #un seul mot
    [ ~]$ b=" file"
    [~]$ c="$a$b" #deux mots => guillemets
    [ ~]$ mv "$c" b\ file #idem
    mv: ne peut valuer `a file': Aucun fichier ou dossier de ce type


    j'ai bien sur essayé ça et d'autres combinaisons des fois que ,avant de poster sur le forum sans succés :/

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 703
    Par défaut
    c'est ma faute, j'ai oublié d'écrire le touch
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $ a=a b=" file" c="$a$b"
    $ touch "$c"
    $ ls -1
    a file
    $ mv "$c" "b$b"
    $ ls -1
    b file
    si le fichier n'existe pas, pas moyen de le déplacer. C'est ce que dit le message d'erreur.

  5. #5
    Membre averti
    Inscrit en
    Juin 2009
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 21
    Par défaut
    Citation Envoyé par N_BaH Voir le message
    c'est ma faute, j'ai oublié d'écrire le touch
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $ a=a b=" file" c="$a$b"
    $ touch "$c"
    $ ls -1
    a file
    $ mv "$c" "b$b"
    $ ls -1
    b file
    si le fichier n'existe pas, pas moyen de le déplacer. C'est ce que dit le message d'erreur.
    lol je suis naze , j'ai meme pris la peine de regarder l'erreur ... Merci pour ton aide

Discussions similaires

  1. shell, supprimer les espaces repetitives
    Par boulhous dans le forum Administration système
    Réponses: 3
    Dernier message: 12/02/2010, 12h50
  2. Réponses: 9
    Dernier message: 06/11/2007, 13h36
  3. Commande en shell -- Sur les fichiers
    Par OrangeBud dans le forum Linux
    Réponses: 8
    Dernier message: 18/05/2004, 14h13
  4. Enlever les espaces
    Par Claythest dans le forum Langage
    Réponses: 6
    Dernier message: 03/06/2003, 15h43
  5. Comment gérer les espaces blancs?
    Par Lambo dans le forum XML/XSL et SOAP
    Réponses: 10
    Dernier message: 16/05/2003, 10h44

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