OVH Cloud OVH Cloud

if repertoire existe

18 réponses
Avatar
Thomas
pouvez vous me rappeler svp (on me l'a deja dit mais j'ai perdu le truc)
comment on fait
if repertoire existe
svp ?
cad je veux executer une commande seulement si un certain repertoire
existe, pas sinon

merci :-)

8 réponses

1 2
Avatar
Christophe Le Gal
Au fait, pourquoi un programmeur ADA, qui apparament n'a pas
l'intention de se mettre au shell, veut absolument avoir du csh et pas
du bash ?


et que si je change de shell faudrait peut etre que je me refasse un
fichier d'init

pourquoi ?
pour toi, un programmeur ADA c'est une bete curieuse ? ;-)


Non. C'etait juste une question, histoire de savoir s'il y avait une
bonne raison, ou si on pouvait esperer te faire changer de shell.
Une des raison que les gens invoquent pour utiliser csh c'est que
"ca ressemble a C".
Deja que l'argument est tres bidon d'habitude, pour un programmeur ada
je suppose qu'il n'a meme pas d'effet placebo.

Je n'aime pas csh parce qu'il est incoherent et mal concu en ce qui
concerne les redirections. On ne peut pas tout exprimer.
Meme du temps ou mon shell interactif etait csh (pour des raisons betes :
a mes debuts, en tous cas sur ma machine, il n'y avait que les interpreteurs
csh qui avaient des gentils choses comme la completion), je programmais
mes scripts en sh ou en bash. Il n'y a rien qui oblige a utiliser le meme.
Sauf bien sur pour le script d'init.

Sinon il m'arrive encore de programmer en ada de temps en temps.

--
Christophe Le Gal


Avatar
Vincent Lefevre
Dans l'article ,
Christophe Le Gal écrit:

if [ -d REP ] then
ls
endif


C'est du bash ou du csh ca ? J'ai un doute ?


Le endif, ce n'est pas du bash. Ce n'est pas non plus du csh, car
il faut une parenthèse après le if, et il faudrait probablement
des accolades en plus si on veut tester le code de retour d'une
commande...

--
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
Vincent Lefevre
Dans l'article <20030805035206749+,
Thomas écrit:

Au fait, pourquoi un programmeur ADA, qui apparament n'a pas
l'intention de se mettre au shell, veut absolument avoir du csh et
pas du bash ?


parce que c'est mon shell par defaut,


C'est malheureusement souvent le cas. Dans mon .cshrc, j'ai un truc du
genre:

if ($?command) then
unsetenv ZSH
else if (! $?prompt) then
set noprompt
unsetenv ZSH
else
if ("$prompt" == "") then
set noprompt
unsetenv ZSH
else if ($?TCSH) then
unsetenv ZSH
else
setenv ZSH $HOME/bin/zsh
endif
endif

if ($?ZSH) then
if (-x $ZSH) then
setenv SHELL $ZSH
if ($?loginsh) set ZSH = "$ZSH -l"
if ($?prompt) echo "executing $ZSH"
exec $ZSH
endif
endif

Comme ça, je ne m'embête plus avec csh/tcsh. :)

et que si je change de shell faudrait peut etre que je me refasse un
fichier d'init


Si tu changes de shell par défaut ou que tu lances un autre shell
pour travailler avec comme je le fais ci-dessus, oui. Si c'est
juste pour écrire un script, ce n'est en général pas nécessaire.

--
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
Thomas
Au fait, pourquoi un programmeur ADA, qui apparament n'a pas
l'intention de se mettre au shell, veut absolument avoir du csh et
pas du bash ?


et que si je change de shell faudrait peut etre que je me refasse un
fichier d'init

pourquoi ?
pour toi, un programmeur ADA c'est une bete curieuse ? ;-)


Non. C'etait juste une question, histoire de savoir s'il y avait une
bonne raison, ou si on pouvait esperer te faire changer de shell.
Une des raison que les gens invoquent pour utiliser csh c'est que
"ca ressemble a C".


de toutes façons, moi j'aime pas, le c ;-)

des gentils choses comme la completion),


oui, j'aime bien, ça :-)
et je sais pas comment faudrait faire pour l'avoir avec d'autres shells

je programmais mes scripts en sh ou en bash. Il n'y a rien qui oblige
a utiliser le meme. Sauf bien sur pour le script d'init.


justement là c'est pour mon script d'init :-)
encore jamais fait de "vrais" scripts


Sinon il m'arrive encore de programmer en ada de temps en temps.


ah :-)
seulement de temps en temps, plus couramment ?



Avatar
Thomas
Bon, sinon il y a toujours une solution quasi universelle :

test -d REP && echo "le repertoire existe"


ouais ca marche :-))) merci :-)


ça marche pu :-(


c'est bizarre,
test -d bugs && ls
ça marche

et
test -d bugs && cd bugs
ça marche pas (bugs existe)

par contre, dans mon .tcshrc,
test -d /Volumes/essais ada/ && cd /Volumes/essais ada/
ça marche tout le temps, même si /Volumes/essais ada/ n'existe pas (
j'ai le msg d'erreur)


est ce que par hasard ça serait du au fait que ls est un prgm
indépendant, alors que cd est une commande de shell ?


Avatar
Vincent Lefevre
Dans l'article <20030812011447319+,
Thomas écrit:

c'est bizarre,
test -d bugs && ls
ça marche

et
test -d bugs && cd bugs
ça marche pas (bugs existe)


Est-ce que tu es sûr que ça ne marche pas? Attention, quand tu quittes
le shell (qui peut être un sous-shell), le cwd n'est pas propagé.
Essaie avec un

echo $PWD

juste après pour voir si le cd a bien fonctionné.

par contre, dans mon .tcshrc,
test -d /Volumes/essais ada/ && cd /Volumes/essais ada/
ça marche tout le temps, même si /Volumes/essais ada/ n'existe pas (
j'ai le msg d'erreur)


Ce n'est pas normal que tu aies un message d'erreur à ce niveau.
Juste avant, mets un

which test

pour voir s'il prend le bon programme "test".

est ce que par hasard ça serait du au fait que ls est un prgm
indépendant, alors que cd est une commande de shell ?


Normalement non.

--
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
Thomas
par contre, dans mon .tcshrc,
test -d /Volumes/essais ada/ && cd /Volumes/essais ada/
ça marche tout le temps, même si /Volumes/essais ada/ n'existe pas (
j'ai le msg d'erreur)


toutes mes excuses,
j'avais fait un .login à l'occasion d'un test pour autre chose, et
j'avais mis "cd /Volumes/essais ada/" dedans :-/ :o)

bien sur je l'avais complètement oublié ;o)


en tout cas, merci bcp bcp :-))))) pour cette ligne de shell :-)))

Avatar
Vincent Lefevre
Dans l'article <20030813010654436+,
Thomas écrit:

toutes mes excuses,
j'avais fait un .login à l'occasion d'un test pour autre chose, et
j'avais mis "cd /Volumes/essais ada/" dedans :-/ :o)

bien sur je l'avais complètement oublié ;o)


OK, il y a un moment donné je me demandais si le programme "test", qui
peut être un script, n'était pas buggé. Pour info, le which de Solaris
(script csh) est buggé par conception:

# Set prompt so .cshrc will think we're interactive and set aliases.
[...]
set prompt = ""
if ( -r ~/.cshrc && -f ~/.cshrc ) source ~/.cshrc

alors qu'avec un shell interactif, le .cshrc peut faire des choses
non voulues (e.g. exécuter un autre shell, dans mon cas).

Pour en revenir à test, celui de Solaris est effectivement buggé:

#!/bin/ksh
#
#ident "@(#)alias.sh 1.1 95/02/06 SMI"
#
# Copyright (c) 1995 by Sun Microsystems, Inc.
#
cmd=`basename $0`
$cmd "$@"

D'abord, ils ont oublié de quoter $0. Ensuite, rien ne dit que $cmd
contiendra le programme voulu si on accède à /usr/bin/test via un
lien symbolique.

--
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

1 2