OVH Cloud OVH Cloud

Enchainer des commandes

4 réponses
Avatar
Romain Casey
Bonjour,
Je voudrais savoir comment faire pour lancer une succession de commande
dans le terminal, en ne faisant appel qu'à un fichier, à la manière des
.bat/.cmd sous windows.
Les commandes sont très simples, c'est juste une succession de
compilation bibtex. Je ne sais pas comment nommer le fichier (extension
?), ni comment appeler sa lecture/exécution. J'ai une très vague notion
de l'existence d'une commande make mais qui je crois nécessite
l'installation de fink, que je n'ai pas sur ma machine.

Merci.


Romain

4 réponses

Avatar
Patrick Stadelmann
In article <cgk5do$gr$,
Romain Casey wrote:

Bonjour,
Je voudrais savoir comment faire pour lancer une succession de commande
dans le terminal, en ne faisant appel qu'à un fichier, à la manière des
.bat/.cmd sous windows.


Tu mets tes commandes à la suite dans un fichier texte, que tu exécute
avec la commande : source mon_fichier.

Patrick
--
Patrick Stadelmann

Avatar
Romain Casey
Romain Casey wrote:


Bonjour,
Je voudrais savoir comment faire pour lancer une succession de commande
dans le terminal, en ne faisant appel qu'à un fichier, à la manière des
.bat/.cmd sous windows.



Tu mets tes commandes à la suite dans un fichier texte, que tu exécute
avec la commande : source mon_fichier.


Merci.


Romain


Avatar
blanc
Romain Casey wrote:

Bonjour,
Je voudrais savoir comment faire pour lancer une succession de commande
dans le terminal, en ne faisant appel qu'à un fichier, à la manière des
.bat/.cmd sous windows.


script shell

Il y a plusieurs shells sous Unix (donc sous Mac OS X) : sh, csh,
zsh,...
mais qui ne diffèrent que lorsqu'on veut faire des scripts compliqués
(avec test, boucles, etc.).

Pour faire juste une suite de commandes, n'importe quel shell convient.

La première ligne du fichier doit donner le chemin absolu du
shell utilisé, de la manière suivante (pour le shell zsh par exemple) :

#!/bin/zsh

Le nom du fichier n'a pas besoin d'extension. Il vaut mieux éviter d'en
mettre, puisque la commande de lancement est exactement le nom du
fichier.

En outre le fichier doit avoir le droit d'exécution pour l'utilisateur
qui le lance. Donc si le fichier s'appelle truc :

chmod u+x truc


man chmod --> te donneras le manuel de la commande chmod
man zsh --> manuel du shell zsh
(en fait ce manuel est partagé en plusieurs pages; il faut donc ensuite
faire man suivi du nom d'une des pages listées; ou bien man zshall
pour avoir tout à la fois)

JPaul.


(commandes analogues pour les autres shells)
--
/==/==- Jean-Paul BLANC
/ /--/--// quelque-part (somewhere)
|/| L | en (in)
/|| = ||| FRANCE

Avatar
Pascal Bourguignon
Romain Casey writes:

Bonjour,
Je voudrais savoir comment faire pour lancer une succession de
commande dans le terminal, en ne faisant appel qu'à un fichier, à la
manière des .bat/.cmd sous windows.


Ça fait plaisir, on aimerait voir cette question plus souvent :-)

On a conseillé de placer simplement les commandes dans un fichier et
d'utiliser source.  

Mais en général, il vaut mieux faire un vrai script:

- sur la première ligne, écrire au début de la ligne: #!/bin/bash

- sur les lignes suivantes, écrire les commandes.

- le script peut prendre des paramètres sur la ligne de commandes.
On peut faire référence au premier paramètre avec "$1"
au deuxième avec "$2", etc.

On peut alors invoquer le script avec:

nom-du-script arg1 arg2

comme une commande normale.


Pour plus d'information sur le language de script:

- taper: man bash


Les commandes sont très simples, c'est juste une succession de
compilation bibtex. Je ne sais pas comment nommer le fichier
(extension ?), ni comment appeler sa lecture/exécution. J'ai une très
vague notion de l'existence d'une commande make


S'il s'agit de piloter une "compilation", il y a la possibilité
d'économiser du travail inutile (pour l'ordinateur, et donc du temps
d'attente pour l'utilisateur) en utilisant make, qui est capable de
sélectionner les commandes à exécuter en fonction des fichiers à créer
ou mettre à jour.


- taper: man bibtex
Où on trouve qu'il prend en entrée un fichier .aux
généré par latex ou tex, et qu'il génère un fichier .bbl

- Créer un fichier Makefile contenant:

all: mon-document.bbl

mon-document.bbl : mon-document.aux ma-bibliographie.bib
<TAB>bibtex mon-document.aux

mon-document.aux : mon-document.latex
<TAB>latex mon-document.latex

(en remplaçant chaque occurence de <TAB> par une tabulation,
touche TAB [-->|], une regrétable erreur du programmeur original
de make, de son propre aveux).

- taper: make


Si le fichier mon-document.latex a été modifié, alors les deux
commandes latex et bibtex seront exécutées (dans le bon ordre). Si
seul le fichier ma-bibliographie.bib a été modifié, alors seul bibtex
sera éxécuté.

- taper: info make
ou: man make


mais qui je crois
nécessite l'installation de fink, que je n'ai pas sur ma machine.


Sur MacOSX, make doit se trouver dans les utilitaires normaux. J'ai
toujours installé tout (avec X11, les packages "BSD" et les outils
Developer), alors je ne sais pas ce qui manque sur une installation
"simple utilisateur"...


Quand à fink, sur ma première installation de MacOSX, j'ai installé
tant de packages fink (par nécessité), que j'ai finit par réalisé que
c'était ridicule de faire tourner MacOSX si les outils Linux était mon
choix. Maintenant, je démarre en Linux, j'ai tout ce qu'il me faut,
et quand j'ai besoin de faire un truc en MacOSX, je le démarre avec
mol: Macintosh On Linux, comme les gens qui utilsent Macintosh
démarrent de temps en temps MS-Windows avec SoftPC ou VirtualPC.

--
__Pascal Bourguignon__ http://www.informatimago.com/

Our enemies are innovative and resourceful, and so are we. They never
stop thinking about new ways to harm our country and our people, and
neither do we.