• [^] # Re: mdr recolu

    Posté par . En réponse au message {debutant] commande MV mv. Évalué à 2. Dernière modification le 20 octobre 2016 à 17:27.

    ~ vaut la valeur de la variable $HOME de ton profile :

    stef@medusa:~$ echo ~
    /home/stef
    stef@medusa:~$ echo $HOME
    /home/stef
    

    Tu peux voir ici que ~ est également un caractère spécial pour le shell, si tu avais ce caractère dans un nom de fichier il faudrait également l’échapper :

    (la commande touch crée un fichier vide si celui-ci n’existe pas)

    stef@medusa:/tmp$ touch 't ~'
    stef@medusa:/tmp$ echo t ~
    t /home/stef
    stef@medusa:/tmp$ echo t\ \~
    t ~
    stef@medusa:/tmp$ echo 't ~'
    t ~
    stef@medusa:/tmp$ rm t ~
    rm: impossible de supprimer « t »: Aucun fichier ou dossier de ce type
    rm: impossible de supprimer « /home/stef »: est un dossier
    stef@medusa:/tmp$ rm 't ~'
    stef@medusa:/tmp$
    

    Tu peux voir avec la première commande rm qu’il essaye de supprimer un fichier nommé 't' et un fichier nommé '/home/stef', d’une part parce que l’espace n’est pas échappée, donc il pense que ce sont deux fichiers distincts, d’autre part il interprète le '~' en le transformant en '/home/stef'...

    Avec les guillemets (ou bien les anti-slashes : t\ \~ pas de problème, le shell comprend qu’on lui indique un seul fichier, nommé 't ~'.

    Bon... en vrai $ echo t\ ~ devrait fonctionner aussi mais bon là ça va compliquer :)