traiter les espaces dans un nom de fichier (zsh)
Le
Une Bévue
le $1 d'un script en zsh, est un (futur) nom de fichier comportant des
espaces, par exemple "apt-get install converseen".
mon script transforme ce $1 en y préfixant la date et postfixant ".txt",
ce qui donne qqc du genre :
"/path/to/11-12-21--06-08--apt-get install converseen.txt".
appellons ça la variable $datedfile
mon script fait un (avec le /path/to) :
touch "$datedfile"
qui marche impec.
par contre, ensuite, le script est sensé ouvrir ce fichier dans Sublime
Text 2 par la commande :
/usr/bin/sublime-text-2 "${DATEDFILE}"
et là, Sublime Text 2 m'ouvre 3 fichiers :
11-12-21--06-08--apt-get
install
et
converseen.txt
si je protège les espaces par :
"'/path/to/11-12-21--06-08--apt-get install converseen.txt'"
^ ^
ou par :
"\"/path/to/11-12-21--06-08--apt-get install converseen.txt\""
^^ ^^
ça ne change rien
je suppose qu'il faudrait plutôt faire qqc comme :
"/path/to/11-12-21--06-08--apt-get\ install\ converseen.txt"
^ ^
mais je pense qu'il doit y avoir un autre moyen plus simple ???
mais lequel ?
espaces, par exemple "apt-get install converseen".
mon script transforme ce $1 en y préfixant la date et postfixant ".txt",
ce qui donne qqc du genre :
"/path/to/11-12-21--06-08--apt-get install converseen.txt".
appellons ça la variable $datedfile
mon script fait un (avec le /path/to) :
touch "$datedfile"
qui marche impec.
par contre, ensuite, le script est sensé ouvrir ce fichier dans Sublime
Text 2 par la commande :
/usr/bin/sublime-text-2 "${DATEDFILE}"
et là, Sublime Text 2 m'ouvre 3 fichiers :
11-12-21--06-08--apt-get
install
et
converseen.txt
si je protège les espaces par :
"'/path/to/11-12-21--06-08--apt-get install converseen.txt'"
^ ^
ou par :
"\"/path/to/11-12-21--06-08--apt-get install converseen.txt\""
^^ ^^
ça ne change rien
je suppose qu'il faudrait plutôt faire qqc comme :
"/path/to/11-12-21--06-08--apt-get\ install\ converseen.txt"
^ ^
mais je pense qu'il doit y avoir un autre moyen plus simple ???
mais lequel ?

Poser une question


je viens d'essayer au term avec :
"Bureau/to ti tu.txt"
^ ^
ça ne marche pas mieux, il doit y avoir une double ou triple
interprétation dans ST2 ???
Et si tu remplaces sublime-text-2 par autre chose ? Histoire de savoir
si c'est lui ou le shell.
--
Arnaud
http://blogs.glou.org/arnaud/
Il ne devrait pas.
Pas besoin des guillemets avec zsh.
Ce « sublime » a l'air hideux.
Très très bonne idée, merci !!!
J'essaie derechef !
;-)
BINGO !!!
c'est Sublime Text 2 qui est fautif, j'ai changé mon script accordingly :
=========================================================== #!/usr/bin/zsh
DATE=`date '+%y-%m-%d--%H-%M--'`
if [[ ${1} != '' ]]; then
DATEDFILE="${HOME}/Installations/${DATE}${1}.txt"
touch "${DATEDFILE}"
#/usr/bin/sublime-text-2 "${DATEDFILE}"
/usr/bin/gedit "${DATEDFILE}"
else
echo -n "${DATE}" | xclip -selection c
echo "'${DATE}' copied to the clipboard."
fi
exit 0
============================================================
en fait il y a un script bash :
$ cat /usr/bin/sublime-text-2
#!/bin/bash
/usr/lib/sublime-text-2/sublime_text $*
le responsable est donc $*
cqfd...
j'ai changé mon script et ça roule...