Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 26/04/2007, à 12:17

TatSou-Max

Langage du Shell

Bonjour,

Je cherche à créer des Shell-scripts. Et si je ne me trompe pas, le langage qui lui est associé est le Lisp ?
Et je cherche de la documentation (Web, livre, revu...) sur ce langage, afin d'avancer dans sa programmation.

Merci de m'aider.

Hors ligne

#2 Le 26/04/2007, à 12:19

BookeldOr

Re : Langage du Shell

Non ce n'est pas du Lisp, c'est du... shell script, avec des particularités pour certains shells (bash, zsh), mais une base commune (sh).
pour apprendre : man bash et lire des scripts peut marcher smile

Dernière modification par BookeldOr (Le 26/04/2007, à 12:20)


Ubuntu is an ancient african word meaning : "I can't configure Debian".

Hors ligne

#3 Le 26/04/2007, à 12:30

TatSou-Max

Re : Langage du Shell

l'utilisation du man, j'ai appris à m'en servir, mais je lui trouve des défauts.
Lire des scripts a malheureusement un inconvénient, c'est que l'on se perd facilement dans le programme.

Autre question, comment active-t-on le shell script mode sur emacs ?

Hors ligne

#4 Le 26/04/2007, à 12:37

BookeldOr

Re : Langage du Shell

À priori, si tu appelles ton script .sh, et/ou que tu mets le #!/bin/bash au début ça doit marcher non? sinon, M-x shell-script-mode


Ubuntu is an ancient african word meaning : "I can't configure Debian".

Hors ligne

#5 Le 26/04/2007, à 12:43

TatSou-Max

Re : Langage du Shell

C'est parce quand fait, j'ai plutôt tendance à ouvrir emacs, a choisir le mode puis a sauvegarder.
Et non à lancer emacs depuis le shell, genre:

emacs mon_script.sh &

Hors ligne

#6 Le 26/04/2007, à 13:47

pacome

Re : Langage du Shell

Bonjour,

Google a trouvé ce tutoriel sur les scripts bash qui fournit déjà une bonne base (il y en a d'autres...).

C'est vrai que le man peut sembler rébarbatif, mais ça reste LA référence pour trouver comment se servir d'une commande, ses paramètres; perso, ça fait des années que je fais des petits scripts (pas tous les jours non plus wink), mais j'y retourne presque à chaque fois.
Petit rappel pour man:
- /chaine cherche le motif chaine en avant
- ?chaine cherche le motif chaine en arrière
- n cherche l'occurence suivante
- p revient à la première page

Si tu préfères les raccourcis "à la emacs", tu peux aussi utiliser info:
- ctrl-s recherche incrémentale avant
- ctrl-r recherche incrémentale arrière

Enfin pour les modes d'emacs, si tu crées un nouveau buffer tu peux, comme te l'indiquait BookeldOr
- affecter le mode à la main: M-x shell-script-mode
- le sauver (C-x C-s) dans un fichier.sh et le recharger (C-x C-v ret)
- insérer #!/bin/bash en première ligne, le sauver et le recharger (le mieux à mon avis)
- ou insérer # -*- shell-script -*- en première ligne, le sauver et le recharger (permet de forcer le mode d'un buffer)

Note: c'est emacs qui est codé en lisp.

A+

Hors ligne

#7 Le 26/04/2007, à 13:51

Desintegr

Re : Langage du Shell

pacome a écrit :

Note: c'est emacs qui est codé en lisp.

Note: Emacs est codé en C et inclut Emacs Lisp (lui aussi codé en C). Et les principales fonctionnalités d'Emacs sont codées avec Emacs Lisp. smile


Hoc Volo, Sic Jubeo !
Mon wiki : http://desintegr.free.fr

Hors ligne

#8 Le 26/04/2007, à 14:27

pacome

Re : Langage du Shell

Desintegr a écrit :

Note: Emacs est codé en C et inclut Emacs Lisp (lui aussi codé en C). Et les principales fonctionnalités d'Emacs sont codées avec Emacs Lisp. smile

En effet, merci pour ces précisions. wink
(j'aurais du parler des "librairies" d'emacs).

A+

Hors ligne

#9 Le 26/04/2007, à 14:29

TatSou-Max

Re : Langage du Shell

Bon, d'abord, merci beaucoup pour toutes ces précisions !

Ensuite, comme ces derniers jours, j'ai passé pas mal de temps à modifier mon .emacs (écrit en lisp) cela doit expliquer ma confusion.

Enfin, je vais aller voir le lien que tu m'as passé pacome.

Hors ligne

#10 Le 28/04/2007, à 11:34

TatSou-Max

Re : Langage du Shell

Est-ce que l'on pourrait m'éclairer sur la commande exec, parce que j'ai lu le man mais cela ne pas permis de comprendre son utilité.
Et surtout, je ne fais pas de différence entre:

exec 3
exec 4
exec 5

Merci

Hors ligne

#11 Le 30/04/2007, à 14:54

pacome

Re : Langage du Shell

Salut,

Je ne comprends pas ta question (exec 3?) mais voici ce que je sais sur exec.

Si un script1 lance un script2 (sans utiliser exec), script1 va créer un processus dans lequel sera exécuté script2.
Si script1 lance script2 avec exec (exec script2), l'execution de script2 remplace celle de script1 dans le process de celui-ci (pas de sous-process créé).

Si tu veux t'en convaincre, écris de petits scripts (1 et 2) qui affichent leur pid (process id) et ppid (parent process id); tu y accèdes avec les variables $$ et $PPID.

Ça peut servir à éviter la création d'un sous-process (allocation mémoire+ressources); ou à connaitre dans le processus-père le pid du processus-fils avant que celui-ci n'exec-ute une autre commande qui pourra alors être "pilotée" par le processus-père (avec kill et trap).
C'est ce qui me vient à l'esprit; d'autres auront sans doute d'autres exemples d'utilisation.

A+

Hors ligne

#12 Le 01/05/2007, à 10:11

TatSou-Max

Re : Langage du Shell

En fait, voilà, j'ai un script donnant ça:

exec 3<fichier
(
[suite d'instruction]
) <&3

Et je ne comprends pas a quoi sert exec.

Hors ligne

#13 Le 01/05/2007, à 11:15

any

Re : Langage du Shell

tiens tu va trouver la reponse ici .
bonne lecture

http://abs.traduc.org/abs-4.2.01-fr/ch19.html

#14 Le 03/05/2007, à 09:10

TatSou-Max

Re : Langage du Shell

Ok merci any !
Ton lien m'a beaucoup servi.

Hors ligne