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

  1. #1
    Membre à l'essai
    Inscrit en
    Juin 2009
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 21
    Points : 23
    Points
    23
    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 550
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 550
    Points : 19 383
    Points
    19 383
    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
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Membre à l'essai
    Inscrit en
    Juin 2009
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 21
    Points : 23
    Points
    23
    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 550
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 550
    Points : 19 383
    Points
    19 383
    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.
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  5. #5
    Membre à l'essai
    Inscrit en
    Juin 2009
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 21
    Points : 23
    Points
    23
    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, 11h50
  2. Réponses: 9
    Dernier message: 06/11/2007, 12h36
  3. Commande en shell -- Sur les fichiers
    Par OrangeBud dans le forum Linux
    Réponses: 8
    Dernier message: 18/05/2004, 13h13
  4. Enlever les espaces
    Par Claythest dans le forum Langage
    Réponses: 6
    Dernier message: 03/06/2003, 14h43
  5. Comment gérer les espaces blancs?
    Par Lambo dans le forum XML/XSL et SOAP
    Réponses: 10
    Dernier message: 16/05/2003, 09h44

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