Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

test -d

41 réponses
Avatar
Thomas
bonjour :-)


avant je faisait
test -d sauvegardes/ && cd sauvegardes/
pour aller dans le dossier seulement si il existe,

et comme un *** j'ai transformé ca en
test -d sauvegardes/ && mkdir sauvegardes/
cd sauvegardes/
pour creer le dossier si il existe pas

(avec
#!/bin/sh -
)


pendant que j'essaye de reparer mes ****ries,
est ce que qqn peut m'indiquer comment on inverse le test svp ?

--
Informations sur Nicolas Sarkozy :
http://www.betapolitique.fr/spip.php?article0602
http://www.betapolitique.fr/spip.php?article0601
http://www.betapolitique.fr/spip.php?article0414
http://www.betapolitique.fr/spip.php?article0606
http://tDeContes.hd.free.fr/divers/Ruptures.pdf

10 réponses

1 2 3 4 5
Avatar
Nicolas S.
Le Wed, 05 Sep 2007 02:32:58 +0200
Thomas a écrit:

Pas forcément partout, mais quand il y a une action importante qui
peut échouer, oui, c'est important.


j'ai mis ça dans mon ~/.profile :
cd dossier || exit
du coup, quand le dossier n'existe pas, quand j'ouvre le terminal la
fenêtre se referme aussitôt


Tu as la possibilité d'exécuter le bloc d'instruction concerné dans un
sous-shell.

en fait, là si ça ne marche pas on n'a pas besoin d'action
particulière, donc il suffit de faire
cd dossier 2> /dev/null
?


Même réponse qu'en haut. Tout dépend des commandes qui suivent et qui
en dépendent. Si tu es certain que c'est bon, alors ne te gène pas. Si
tu as un doute, alors mieux vaut placer l'«exit».

--
Nicolas S.


Avatar
Thomas
In article ,
"Nicolas S." wrote:

Le Wed, 05 Sep 2007 02:32:58 +0200
Thomas a écrit:

Pas forcément partout, mais quand il y a une action importante qui
peut échouer, oui, c'est important.


j'ai mis ça dans mon ~/.profile :
cd dossier || exit
du coup, quand le dossier n'existe pas, quand j'ouvre le terminal la
fenêtre se referme aussitôt


Tu as la possibilité d'exécuter le bloc d'instruction concerné dans un
sous-shell.


ah merci, j'y avais pas pensé (pourtant c'est logique) :-)


en fait, là si ça ne marche pas on n'a pas besoin d'action
particulière, donc il suffit de faire
cd dossier 2> /dev/null
?


Même réponse qu'en haut. Tout dépend des commandes qui suivent et qui
en dépendent. Si tu es certain que c'est bon, alors ne te gène pas. Si
tu as un doute, alors mieux vaut placer l'«exit».


merci :-)


en fait je veux juste être ailleurs que dans mon dossier de départ quand
j'ouvre le terminal
donc ça marche pas si je met le cd dans un sous-shell

j'ai sûrement l'air d'un idiot, mais j'aimerais quand même avoir la
confirmation que je ne fais pas de bêtise :-)

--
j'agis contre l'assistanat, je travaille dans une SCOP !



Avatar
Thomas
In article ,
Stephane Chazelas wrote:

2007-09-05, 02:11(+02), Thomas:
[...]
Pour rediriger les erreurs. Le fd 2 d'un process est sa sortie
d'erreur, le fd 1 sa sortie standard. cmd > file est un
raccourci pour cmd 1> file, cmd &> file est un raccourci
non-standard pour cmd 1> file 2>&1.


merci :-)

et donc "2>&1" veut dire qu'on veut rediriger le fd 2 au même endroit
que le fd 1 ? :-)


Oui. Attention, > file 2>&1 n'est pas la meme chose que > file
2> file. Le premier ouvre un seul /flux/ en ecriture vers le
fichier qui est assigné a la fois au fd 1 et 2, le deuxieme
ouvre 2 flux separes. Dans le deuxieme cas, ce que la commande
ecrirait sur ses file descriptors 1 et 2 se chevaucheraient.


merci :-)


[...]
En principe oui, a condition d'eviter que le premier caractere
du fichier ne soit pas un "#".


il faut que le 1er caractère soit "#" ?


Non, desolé pour le cafouillage des negations. Si le premier
caractère est "#" et que l'on essaie de lancer le script depuis
un shell csh, certaines versions de csh (mais aussi de sh sur
certains vieux systemes) executeront le script avec csh. Raison
historique. Donc eviter le "#".


ok :-)


Mais bon, ca ne garantit pas non-plus d'avoir un shell POSIX, ca
garantit d'avoir un shell POSIX que si celui qui execute le
script est "en environnement POSIX" qui n'est pas tres
clairement defini.


une question que j'ai oublié de poser, c'est :
si on indique rien, comment ça décide avec quel shell ça va exécuter le
script ??


C'est a la discretion de l'outil qui executera le script. En
environnement POSIX, un outil POSIX utilisera un shell POSIX, un
outil Unix utilisera un shell Unix (si disponible, qui sera par
consequent POSIX aussi).

Si le script est executé au moyen des fonctions C execp,
execl... la bibliotheque C fera appel a un shell POSIX.

Certains shells POSIX executeront le script dans un fils sans
meme faire de exec*().

Malheureusement, il y a toujours Solaris pour faire bande a
part. Il y a encore beaucoup d'outils qui sous Solaris
utiliseront "/bin/sh" (qui n'est pas POSIX) pour executer le
script. Le execp() de Solaris utilise aussi /bin/sh par defaut
si on ne passe pas d'obscures options de compilation specifiques
pour qu'il se comporte POSIXement.


bon, comme ça ne marche pas avec solaris de toutes façons, c'est p-e
mieux de préciser le shell de toutes façons, même si il y a d'autres
systèmes que solaris où on devra le changer ...

merci pour toutes les explications :-)

--
j'agis contre l'assistanat, je travaille dans une SCOP !



Avatar
Thomas
In article ,
"Nicolas S." wrote:

Tu as la possibilité d'exécuter le bloc d'instruction concerné dans un
sous-shell.



j'ai oublié de te demander :

comme j'utilise abondamment "source" et les sous-shells, pour factoriser
un maximum,


y a t il moyen d'indiquer un fichier avec un chemin relatif au fichier
d'où on l'appelle ?

pour l'instant je suis obligé de partir du dossier de départ, avec ~/

--
j'agis contre l'assistanat, je travaille dans une SCOP !

Avatar
Matthieu Moy
Thomas writes:

comme j'utilise abondamment "source" et les sous-shells, pour factoriser
un maximum,


y a t il moyen d'indiquer un fichier avec un chemin relatif au fichier
d'où on l'appelle ?


Oui. Il suffit d'essayer ...

--
Matthieu

Avatar
Thomas
In article ,
Matthieu Moy wrote:

Thomas writes:

comme j'utilise abondamment "source" et les sous-shells, pour factoriser
un maximum,


y a t il moyen d'indiquer un fichier avec un chemin relatif au fichier
d'où on l'appelle ?


Oui. Il suffit d'essayer ...


ah ben non,
j'ai essayé (sans rien mettre devant le nom du fichier, comme dans le
terminal), ça ne marche pas !

--
j'agis contre l'assistanat, je travaille dans une SCOP !


Avatar
Matthieu Moy
Thomas writes:

ah ben non,
j'ai essayé (sans rien mettre devant le nom du fichier, comme dans le
terminal), ça ne marche pas !


./mon-executable.sh

source ./mon-executable.sh

--
Matthieu

Avatar
Thomas
In article ,
Matthieu Moy wrote:

Thomas writes:

ah ben non,
j'ai essayé (sans rien mettre devant le nom du fichier, comme dans le
terminal), ça ne marche pas !


./mon-executable.sh

source ./mon-executable.sh


si je met

source ../fichiers-initialisation/alias
au lieu de
source ~/Administration/shell/fichiers-initialisation/alias

dans
~/Administration/shell/demarrage/profile

ça me donne
-bash: ../fichiers-initialisation/alias: No such file or directory


j'ai fait une erreur ?

--
j'agis contre l'assistanat, je travaille dans une SCOP !


Avatar
Stephane Chazelas
2007-09-08, 17:57(+02), Thomas:
In article ,
Matthieu Moy wrote:

Thomas writes:

ah ben non,
j'ai essayé (sans rien mettre devant le nom du fichier, comme dans le
terminal), ça ne marche pas !


./mon-executable.sh

source ./mon-executable.sh


si je met

source ../fichiers-initialisation/alias
au lieu de
source ~/Administration/shell/fichiers-initialisation/alias

dans
~/Administration/shell/demarrage/profile

ça me donne
-bash: ../fichiers-initialisation/alias: No such file or directory
[...]


Les chemins relatifs sont relatifs au chemin courant (ce que
retourne la command pwd), pas a un des repertoire qui contient
ton script.

Utilise une variable:

LIBDIR=~/Administration/shell
. "$LIBDIR/fichiers-initialisation/alias"

--
Stéphane



Avatar
Nicolas S.
Thomas a écrit:

en fait je veux juste être ailleurs que dans mon dossier de départ
quand j'ouvre le terminal
donc ça marche pas si je met le cd dans un sous-shell


Si c'est vraiment ce que tu veux, tu peux rajouter un truc de ce genre
en toute fin de ton ~/.profile:
cd "blah" && printf 'Vous êtes dans le répertoire %b.' $PWD

--
Nicolas S.

1 2 3 4 5