OVH Cloud OVH Cloud

caractères d'échappement

6 réponses
Avatar
noa
mon sh marche... jusqu'à ce qu'il rencontre un caractère spécial dans $i

$ ls "`$#@' de dossier/"
./
../
`#$@' de fichier.gif

$ cat monsh
cd $1
for i in `dir *extension`
do
commande -options $i `echo $i|sed s/extension/autre_extension/`
done


--
noa
ouv a s à cdm, g

6 réponses

Avatar
Vincent Lefevre
Dans l'article <bsh7qf$c5l$,
noa écrit:

mon sh marche... jusqu'à ce qu'il rencontre un caractère spécial dans $i


Au lieu d'écrire $i, tu peux (et souvent dois) écrire "$i".

--
Vincent Lefèvre - Web: <http://www.vinc17.org/> - 100%
validated (X)HTML - Acorn Risc PC, Yellow Pig 17, Championnat International
des Jeux Mathématiques et Logiques, TETRHEX, etc.
Work: CR INRIA - computer arithmetic / SPACES project at LORIA

Avatar
noa
Vincent Lefevre a écrit:

Dans l'article <bsh7qf$c5l$,
noa écrit:

mon sh marche... jusqu'à ce qu'il rencontre un caractère spécial dans $i


Au lieu d'écrire $i, tu peux (et souvent dois) écrire "$i".



Mais ça ne suffit pas toujours.
Par exemple:

ls
.

..
mon fichier

for a in `ls mon*`;do mv "$a" "$a~";done
mv: ne peut évaluer `mon': No such file or directory

mv: ne peut évaluer `fichier': No such file or directory

Comment faire dans ce cas?

--
noa
ouv a s à cdm, g


Avatar
David LE BOURGEOIS


for a in `ls mon*`;do mv "$a" "$a~";done


mv: ne peut évaluer `mon': No such file or directory
mv: ne peut évaluer `fichier': No such file or directory

Comment faire dans ce cas?



find . -maxdepth 1 -type f -name "mon*" -print0
| xargs -0 -i{} mv {} {}~

--
David LE BOURGEOIS


Avatar
Vincent Lefevre
Dans l'article <bsplvr$240$,
noa écrit:

Vincent Lefevre a écrit:

Dans l'article <bsh7qf$c5l$,
noa écrit:

mon sh marche... jusqu'à ce qu'il rencontre un caractère spécial dans $i


Au lieu d'écrire $i, tu peux (et souvent dois) écrire "$i".


Mais ça ne suffit pas toujours.


À ce niveau, si.

Par exemple:

ls
.

..
mon fichier

for a in `ls mon*`;do mv "$a" "$a~";done
mv: ne peut évaluer `mon': No such file or directory

mv: ne peut évaluer `fichier': No such file or directory

Comment faire dans ce cas?


C'est parce qu'il ne faut jamais utiliser ls pour ce genre de choses.
De plus, ton ls mon* va lister à l'intérieur des répertoires dont le
nom commence par "mon", ce qui n'est certainement pas ce que tu veux.

for a in mon*;do mv "$a" "$a~";done

devrait suffire.

--
Vincent Lefèvre - Web: <http://www.vinc17.org/> - 100%
validated (X)HTML - Acorn Risc PC, Yellow Pig 17, Championnat International
des Jeux Mathématiques et Logiques, TETRHEX, etc.
Work: CR INRIA - computer arithmetic / SPACES project at LORIA



Avatar
Etienne PIERRE
noa wrote:

ls


.
..
mon fichier


for a in `ls mon*`;do mv "$a" "$a~";done


mv: ne peut évaluer `mon': No such file or directory
mv: ne peut évaluer `fichier': No such file or directory

Comment faire dans ce cas?


ls -1 mon* | while read file; do
mv "$a" "$a~"
done

Parfois, si tu as un ls en couleur, il peut arriver que tu ais un alias
avec par exemple "ls='ls --color'", dans ce cas, il faut utiliser ls
sans l'alias en le précédent d'un antislash ainsi :

ls -1 mon* | while read file; do
mv "$a" "$a~"
done


Ceci dit la solution de David LE BOURGEOIS avec un find et un xargs est
meilleure, c'était juste pour montrer comment gérer les espaces dans un
script shell si tu as plus d'une commande à executer.



Etienne


Avatar
Vincent Lefevre
Dans l'article <bt66hv$q34$,
Etienne PIERRE écrit:

Parfois, si tu as un ls en couleur, il peut arriver que tu ais un alias
avec par exemple "ls='ls --color'", dans ce cas, il faut utiliser ls
sans l'alias en le précédent d'un antislash ainsi :

ls -1 mon* | while read file; do
mv "$a" "$a~"
done


De toute façon, utiliser ls pour cela, c'est petit joueur. Je
conseillerais plutôt une solution en lançant une requête à KDE
ou je ne sais quoi... :)

Ceci dit la solution de David LE BOURGEOIS avec un find et un xargs est
meilleure, c'était juste pour montrer comment gérer les espaces dans un
script shell si tu as plus d'une commande à executer.


... mais si tu veux venir à une solution raisonnable, n'utiliser
que les possibilités du shell (à part mv) est une solution encore
meilleure.

--
Vincent Lefèvre - Web: <http://www.vinc17.org/> - 100%
validated (X)HTML - Acorn Risc PC, Yellow Pig 17, Championnat International
des Jeux Mathématiques et Logiques, TETRHEX, etc.
Work: CR INRIA - computer arithmetic / SPACES project at LORIA