logo Debian Debian Debian-France Debian-Facile Debian-fr.org Forum-Debian.fr Debian ? Communautés logo inclusivité

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).

#1 30-09-2013 23:16:08

captnfab
Admin-Girafe
Lieu : /dev/random
Distrib. : Debian
Noyau : Dur
(G)UI : gui gui, je zuis un doiseau
Inscription : 07-07-2008
Site Web

[wiki] Shell

Salut la foule,

Afin de pouvoir faire facilement référence à une documentation de base minimale sur l'utilisation du shell, sans qu'elle soit spécifique à Bash, j'ai écrit un tuto « shell » que voici :
http://debian-facile.org/doc:programmation:shell:shell

Et qui possède deux pages externes :



Je ne pense pas qu'il soit nécessaire de séparer les sujets pour ces 3 pages pour l'instant. On verra si ça le devient.


captnfab,
Association Debian-Facile, bépo.
TheDoctor: Your wish is my command… But be careful what you wish for.

Hors ligne

#2 01-10-2013 02:51:49

smolski
quasi...modo
Lieu : AIN
Distrib. : backports (buster) 10
Noyau : Linux 4.19.0-8-amd64
(G)UI : gnome
Inscription : 21-10-2008

Re : [wiki] Shell

Ah ben...
Au fait, le choux ne prend pas de x, gourmand ! big_smile

En tout cas, bien que difficile à intégrer, tout cela a le mérite de se présenter de façon claire.
Reste à fondre les pages concernant les commandes, effectivement...

Merci captnfab pour ce délié ! big_smile

saque eud dun (patois chtimi : fonce dedans)

Hors ligne

#3 01-10-2013 04:56:17

MicP
Invité

Re : [wiki] Shell

Ce simple petit schéma pourrait aussi l'aider à mieux comprendre où se situe le shell.


|================================|
|       commande ou script       |
|  |==========================|  |
|  |           shell          |  |
|  |  |====================|  |  |
|  |  |        noyau       |  |  |
|  |  |  |==============|  |  |  |
|  |  |  |   matériel   |  |  |  |
|  |  |  | informatique |  |  |  |
|  |  |  |==============|  |  |  |
|  |  |====================|  |  |
|  |==========================|  |
|================================|
 



============
De par la définition même d'un flux (déplacement d'informations), qui implique donc une direction à ce déplacement,
je pense qu'on est si près de ça qu'il pourrait être très simple et édifiant pour le lecteur
de lui présenter par un petit schéma les 3 "flux standards" : stdin stdout et stderr.


|====================|
|             stdin  <--
|   Programme        |
|             stdout -->
|             stderr -->
|====================|
 


Ceci, bien sûr juste avant de lui exposer les concepts de redirection de flux.

Dernière modification par MicP (01-10-2013 08:37:27)

#4 01-10-2013 08:08:01

bendia
Chadministrateur
Distrib. : openSUSE Tumbleweed, Buster
Noyau : Linux 5.9.1-2-default + Linux 4.19.0-12-amd64
(G)UI : Gnome + Console et un peu Fluxbox
Inscription : 20-03-2012
Site Web

Re : [wiki] Shell

Extra cool

A intégrer absolument dans l'ebook du grand débutant qui débute wink

Ben
___________________
La seule question bête, c'est celle qu'on ne pose pas.

En ligne

#5 01-10-2013 11:18:51

captnfab
Admin-Girafe
Lieu : /dev/random
Distrib. : Debian
Noyau : Dur
(G)UI : gui gui, je zuis un doiseau
Inscription : 07-07-2008
Site Web

Re : [wiki] Shell

MicP a écrit :

Ce simple petit schéma pourrait aussi l'aider à mieux comprendre où se situe le shell.


Oui et non, il ne faut pas oublier que le shell est un programme comme les autres. Tous les programmes ont par défaut un stdin, un stdout et un stderr. D'ailleurs, quand on a un shell dans un émulateur de terminal sous X, c'est plutôt

matériel (clavier) -> noyau (via interruptions matérielles) -> serveur X -> (window-manager ->) émulateur de terminal -> terminal virtuel -> shell ou commande smile

Mais on peut lancer un programme directement dans un terminal, auquel cas le shell n'est plus présent dans le schéma.

Un shell peut également être lancé par un autre shell, etc. Donc trop de simplification me semble dangereux smile

MicP a écrit :

De par la définition même d'un flux (déplacement d'informations), qui implique donc une direction à ce déplacement,
je pense qu'on est si près de ça qu'il pourrait être très simple et édifiant pour le lecteur
de lui présenter par un petit schéma les 3 "flux standards" : stdin stdout et stderr.


|====================|
|             stdin  <--
|   Programme        |
|             stdout -->
|             stderr -->
|====================|
 


Ceci, bien sûr juste avant de lui exposer les concepts de redirection de flux.



Ceci est lié aussi bien au terminal qu'au shell (en fait, à tous les processus), mais oui, la présentation de ces flux mérite d'être faite si ça n'est pas déjà le cas, dans la page chevrons ou chevrons-2. (Je crois que c'est fait dans la deuxième.)


captnfab,
Association Debian-Facile, bépo.
TheDoctor: Your wish is my command… But be careful what you wish for.

Hors ligne

#6 02-10-2013 13:24:37

paskal
autobahn
Lieu : ailleurs
Inscription : 14-06-2011
Site Web

Re : [wiki] Shell

Slt,
Dans le paragraphe "lancer un shell", on dit un mot des consoles aussi ?

I'd love to change the world
But I don't know what to do
So I'll leave it up to you...

logo-sur-fond.png

Hors ligne

#7 02-10-2013 13:30:42

captnfab
Admin-Girafe
Lieu : /dev/random
Distrib. : Debian
Noyau : Dur
(G)UI : gui gui, je zuis un doiseau
Inscription : 07-07-2008
Site Web

Re : [wiki] Shell

Yep, on peut, je crois qu'il y a un lien vers les terminaux et consoles, à piquer dans le tuto bash.

captnfab,
Association Debian-Facile, bépo.
TheDoctor: Your wish is my command… But be careful what you wish for.

Hors ligne

#8 02-10-2013 15:01:01

paskal
autobahn
Lieu : ailleurs
Inscription : 14-06-2011
Site Web

Re : [wiki] Shell

Voili. smile

I'd love to change the world
But I don't know what to do
So I'll leave it up to you...

logo-sur-fond.png

Hors ligne

#9 02-10-2013 15:10:09

captnfab
Admin-Girafe
Lieu : /dev/random
Distrib. : Debian
Noyau : Dur
(G)UI : gui gui, je zuis un doiseau
Inscription : 07-07-2008
Site Web

Re : [wiki] Shell

\o/

captnfab,
Association Debian-Facile, bépo.
TheDoctor: Your wish is my command… But be careful what you wish for.

Hors ligne

#10 23-11-2013 14:30:27

bendia
Chadministrateur
Distrib. : openSUSE Tumbleweed, Buster
Noyau : Linux 5.9.1-2-default + Linux 4.19.0-12-amd64
(G)UI : Gnome + Console et un peu Fluxbox
Inscription : 20-03-2012
Site Web

Re : [wiki] Shell

Bonjour

Suite à une remarque très juste de david96, il s'avère que nous ne parlons nulle part dans le wiki des opérateurs && et || pour chaîner des commandes en fonction de leurs codes de retour. J'ai ajouté ça dans ce tuto.

Par ailleurs, je me demande si il ne serait pas souhaitable de créer plusieurs petits tuto TD/TP à l'image de la partie Naviguer dans les fichiers et dossier pour éviter le syndrome TL;NR (Trop Long;Non lu pour les anglophobes merci à captnfab qui m'a permis de découvrire cette abréviation wink )

Ben
___________________
La seule question bête, c'est celle qu'on ne pose pas.

En ligne

#11 23-11-2013 14:51:59

captnfab
Admin-Girafe
Lieu : /dev/random
Distrib. : Debian
Noyau : Dur
(G)UI : gui gui, je zuis un doiseau
Inscription : 07-07-2008
Site Web

Re : [wiki] Shell

Cool, tu peux parler de ';' au même endroit à mon avis, et surtout donner un lien vers ici : http://debian-facile.org/doc:programmat … ll:avancee puisque les && et les if sont un peu la même chose…

Ouais, le TL;DR (Too Long ; Didn't read), est un moyen de protection contre l'overdose d'information, des tutos ciblés peuvent parfois éviter ça. Mais bon, reste que quand on veut comprendre le fonctionnement du bouzin, faut lire.

captnfab,
Association Debian-Facile, bépo.
TheDoctor: Your wish is my command… But be careful what you wish for.

Hors ligne

#12 23-11-2013 15:49:39

paskal
autobahn
Lieu : ailleurs
Inscription : 14-06-2011
Site Web

Re : [wiki] Shell

Oui, quand la structure de l'ensemble se tient, il est plus agréable d'avoir sur une page un bloc que l'on peut espérer "maîtriser".
Un petit pas, puis un autre petit pas....  cool

I'd love to change the world
But I don't know what to do
So I'll leave it up to you...

logo-sur-fond.png

Hors ligne

#13 23-11-2013 16:10:59

bendia
Chadministrateur
Distrib. : openSUSE Tumbleweed, Buster
Noyau : Linux 5.9.1-2-default + Linux 4.19.0-12-amd64
(G)UI : Gnome + Console et un peu Fluxbox
Inscription : 20-03-2012
Site Web

Re : [wiki] Shell

captnfab a écrit :

Cool, tu peux parler de ';' au même endroit à mon avis, et surtout donner un lien vers ici : http://debian-facile.org/doc:progr … ll:avancee puisque les && et les if sont un peu la même chose…



C'est fait smile

captnfab a écrit :

Mais bon, reste que quand on veut comprendre le fonctionnement du bouzin, faut lire.



Certes, laissons comme ça alors smile


Ben
___________________
La seule question bête, c'est celle qu'on ne pose pas.

En ligne

#14 23-11-2013 16:17:14

captnfab
Admin-Girafe
Lieu : /dev/random
Distrib. : Debian
Noyau : Dur
(G)UI : gui gui, je zuis un doiseau
Inscription : 07-07-2008
Site Web

Re : [wiki] Shell

Je pense que ces tutos mériteraient d'être écrits par ceux qui sont en train d'apprendre le shell plutôt que par ceux qui le maîtrisent déjà. smile

captnfab,
Association Debian-Facile, bépo.
TheDoctor: Your wish is my command… But be careful what you wish for.

Hors ligne

#15 11-03-2014 11:17:10

Hypathie
Membre
Lieu : Chambéry _ Montréal
Distrib. : Jessie
Noyau : Linux debian 3.16.0-4-586
(G)UI : Cinnamon Mate Xfce
Inscription : 28-12-2013

Re : [wiki] Shell

Bonjour captnfab,

j'ai essayé de suivre ton wiki et j'ai dû aller chercher ailleurs des étapes ou définitions. Des trucs vraiment de très très nuls du genre les commandes d'exécution du script. Je te demande la permission d'ajouter deux exemples dans ton wiki qui visent à faire comprendre qu'un script, c'est juste un regroupement de commandes et de syntaxe connu par le shell.

1) (mettre avant ta première partie) lancer un script qui ne débute pas avec les lignes


#!/bin/bash
 



par exemple je crée un fichier "script.age" dans mes documents contenant


AGE=25
echo $AGE
 


Je donne les droit d'exécution


hypathie@debian:~/Documents$ bash script.age
25
 


pour exécuter on doit faire depuis le répertoire parent :

hypathie@debian:~/Documents$ bash script.age
25
 



2) (qui correspond à ton premier paragraphe) indiquer l'interpéteur au début de son script : #!/bin/sh  ou #!/bin/bash  (sha bang et le PATH )
par exemple je crée le fichier script.nom dans mes Documents :

#!/bin/bash
echo nom \: Hypathie


Je donne les droits d'exécution à l'utilisateur sur script.nom :


chmod u+x /home/hypathie/Documents/script.nom
 



Et cette fois je peux exécuter depuis son répertoire parent script.nom en faisant :


./script.nom
nom: Hypathie
 



Je me rends bien compte que cela double ce wiki ci : https://debian-facile.org/doc:systeme:script mais il est très succin.

Enfin la deuxième partie "Récupération des arguments" est très raide aussi pour un débutant ; on pourrait montrer comment mettre le chemin de son script dans le PATH pour pouvoir l'exécuter avec son simple nom ("monscript s'il est dans le PATH"), comme on le fait pour les commandes. Expliquer peut-être au début de ce paragraphe, qu'une commande est un programme qui s'exécute en tapant son nom parce que le chemin de leur programme est dans la variable PATH en le montrant ( echo $PATH avec le retour : /usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games).

Je ne sais pas s'il y a une raison particulière à choisir sh plutôt que bash et si cela t'irait de mettre une petite phrase d'intro au tout début sur le fait que ce sont deux langages de shell (ou deux environnements de console).

Enfin, je n'ai pas compris encore tout à fait ton exemple mais j'y travaille.

Voilà j'espère que ça ne t'embête pas que je te renvoie des choses de points de vue de débutant, mais je m'y suis sentie invitée par ton dernier message. Ses wiki m'ont donné envie d'apprendre le shell smile

Bien amicalement

Dernière modification par Hypathie (11-03-2014 11:17:57)

Hors ligne

#16 11-03-2014 12:31:20

captnfab
Admin-Girafe
Lieu : /dev/random
Distrib. : Debian
Noyau : Dur
(G)UI : gui gui, je zuis un doiseau
Inscription : 07-07-2008
Site Web

Re : [wiki] Shell

Hypathie a écrit :

j'ai essayé de suivre ton wiki et j'ai dû aller chercher ailleurs des étapes ou définitions. Des trucs vraiment de très très nuls du genre les commandes d'exécution du script. Je te demande la permission d'ajouter deux exemples dans ton wiki qui visent à faire comprendre qu'un script, c'est juste un regroupement de commandes et de syntaxe connu par le shell.

1) (mettre avant ta première partie) lancer un script qui ne débute pas avec les lignes


#!/bin/bash
 


[…]



Ben…
Le seul intérêt que je vois (mais je suis ouvert aux propositions), d'exécuter en script shell avec

bash fichier.de.script

, c'est de ne pas avoir à rendre le fichier exécutable, ou de forcer l'interpréteur quand un autre a été défini.
Du coup, ça ne me semble pas être une «bonne pratique», et en particulier pour un débutant.
Du coup, je vois plus ça dans une note en fin de 1) que dans un 0) avant la bonne manière de faire.

Mais tu as du chercher ailleurs, c'est que tout n'était pas clair. Et il faut éclaircir cela smile
Je n'ai pas trop compris ce qui n'est pas clair, mais peut-être qu'avec ce que je viens de dire ici tu vas pouvoir me le préciser.


Hypathie a écrit :

Je me rends bien compte que cela double ce wiki ci : https://debian-facile.org/doc:systeme:script mais il est très succin.


Attention, tu confonds, ce lien fait référence à la commande script (voir man script) que tu as utilisée par erreur dans ton sujet précédent. smile

Hypathie a écrit :

Enfin la deuxième partie "Récupération des arguments" est très raide aussi pour un débutant ; on pourrait montrer comment mettre le chemin de son script dans le PATH pour pouvoir l'exécuter avec son simple nom ("monscript s'il est dans le PATH"), comme on le fait pour les commandes. Expliquer peut-être au début de ce paragraphe, qu'une commande est un programme qui s'exécute en tapant son nom parce que le chemin de leur programme est dans la variable PATH en le montrant ( echo $PATH avec le retour : /usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games).


Euh, je préfère ne pas mélanger les problématiques, et surtout éviter la redondance smile

Par contre, c'est sûr que cette partie mériterait quelques explications (supplémentaires). Pour l'instant il n'y a qu'un exemple, et c'est loin d'être le plus simple que l'on puisse trouver, mais il a l'avantage d'être relativement complet (si tu le comprends, t'as tout compris). Libre à toi de l'enrichir, en gardant en tête d'éviter absolument la redondance sur le forum, et de ne pas mélanger les difficultés smile

L'histoire du PATH est dans le tuto PATH. Tu peux mettre une note <note info>Pour pouvoir exécuter votre script depuis n'importe où, n’oubliez-pas de mettre le dossier le contenant dans le PATH</note> avec un lien vers le tuto path.

Hypathie a écrit :

Je ne sais pas s'il y a une raison particulière à choisir sh plutôt que bash et si cela t'irait de mettre une petite phrase d'intro au tout début sur le fait que ce sont deux langages de shell (ou deux environnements de console).


sh, est un lien symbolique vers le shell par défaut du système.

ls -lh /bin/sh


lrwxrwxrwx 1 root root 4 mars   1  2012 /bin/sh -> dash



Un script conforme au standard POSIX n'utilisant pas de commandes ou syntaxe particulières à bash, zsh ou autre peut utiliser sh comme interpréteur. Cela signfie un peu «Ce script est tellement bien écrit qu'il fonctionnera avec n'importe quel interpréteur, donc lance-le avec ton interpréteur favoris.»
Dans le cas contraire, il faut impérativement préciser l'interpréteur de shell à utiliser. «Ce script utilise des fonctionnalités avancés que les gueux posixiens ne peuvent pas comprendre, il doit impérativement être lancé avec bash/zsh/whatever».

Donc bon, il n'y a pas vraiment de «bonne pratique», juste une mauvaise : mettre sh pour un script non-posix. smile


captnfab,
Association Debian-Facile, bépo.
TheDoctor: Your wish is my command… But be careful what you wish for.

Hors ligne

#17 11-03-2014 13:24:18

Hypathie
Membre
Lieu : Chambéry _ Montréal
Distrib. : Jessie
Noyau : Linux debian 3.16.0-4-586
(G)UI : Cinnamon Mate Xfce
Inscription : 28-12-2013

Re : [wiki] Shell

Ce qui  a été dur :

c'est juste qu'il manque comment exécuter un script sh ou bash

Par ailleurs, je croyais que sh était l'ancêtre de bash que plus personne n'utilisait parce que :


#!/bin/bash
echo {a..z}
 


=> a b c d e f g h i j k l m n o p q r s t u v w x y z

tandis que :


#!/bin/sh
echo {a..z}
 


=> {a..z}
Et l'avantage d'utiliser sh n'est pas expliquer dans un wiki.
Je ne savais pas que :

sh, est un lien symbolique vers le shell par défaut du système



ni qu'utiliser sh permettait d'être conforme au standard POSIX (je ne connaissait pas ce terme !) big_smile)

Donc je te suis maintenant sur le fait de ne pas ajouter sur ce que je proposais.

Merci encore pour tout cela je vais essayer d'accéder à la compréhension de l'exemple.

smile

Hors ligne

#18 11-03-2014 15:31:37

captnfab
Admin-Girafe
Lieu : /dev/random
Distrib. : Debian
Noyau : Dur
(G)UI : gui gui, je zuis un doiseau
Inscription : 07-07-2008
Site Web

Re : [wiki] Shell

Cool !

N'hésite pas à rajouter ce que tu as compris dans le wiki. Si ça te manquait, c'est que ça manquait. smile

L'exemples que tu cites : « echo {a..z} » est justement un exemple de « bashisme », c'est à dire de syntaxe shell propre à bash.


captnfab,
Association Debian-Facile, bépo.
TheDoctor: Your wish is my command… But be careful what you wish for.

Hors ligne

#19 19-03-2014 09:46:05

smolski
quasi...modo
Lieu : AIN
Distrib. : backports (buster) 10
Noyau : Linux 4.19.0-8-amd64
(G)UI : gnome
Inscription : 21-10-2008

Re : [wiki] Shell

Suite à une recherche perso sur l'espeluette et son usage, j'ai modifié un tantinet ce tuto pour ce qui les concernait. smile

saque eud dun (patois chtimi : fonce dedans)

Hors ligne

#20 19-03-2014 14:31:02

paskal
autobahn
Lieu : ailleurs
Inscription : 14-06-2011
Site Web

Re : [wiki] Shell

smolski a écrit :

Suite à une recherche perso sur l'espeluette et son usage, j'ai modifié un tantinet ce tuto pour ce qui les concernait. smile


Si tu 'ech'ches l'espe'luette, tu vas pas la t'ouvé, là ! Ah ouais, mon ga ! smile


I'd love to change the world
But I don't know what to do
So I'll leave it up to you...

logo-sur-fond.png

Hors ligne

#21 19-03-2014 14:32:41

smolski
quasi...modo
Lieu : AIN
Distrib. : backports (buster) 10
Noyau : Linux 4.19.0-8-amd64
(G)UI : gnome
Inscription : 21-10-2008

Re : [wiki] Shell

Non mais ooooh... big_smile

saque eud dun (patois chtimi : fonce dedans)

Hors ligne

#22 19-03-2014 14:40:47

paskal
autobahn
Lieu : ailleurs
Inscription : 14-06-2011
Site Web

Re : [wiki] Shell

smile

I'd love to change the world
But I don't know what to do
So I'll leave it up to you...

logo-sur-fond.png

Hors ligne

#23 22-03-2014 18:58:52

paskal
autobahn
Lieu : ailleurs
Inscription : 14-06-2011
Site Web

Re : [wiki] Shell

Bonsoir,

Dans http://debian-facile.org/doc:programmat … ll:avancee, un lien pointe vers un tuto de l'atelier.
Doit-on sortir cette cible de l'atelier pour éviter un futur lien mort ?
Doit-on conseiller d'éviter les liens vers les tutos en chantier ?

I'd love to change the world
But I don't know what to do
So I'll leave it up to you...

logo-sur-fond.png

Hors ligne

#24 22-03-2014 19:29:59

smolski
quasi...modo
Lieu : AIN
Distrib. : backports (buster) 10
Noyau : Linux 4.19.0-8-amd64
(G)UI : gnome
Inscription : 21-10-2008

Re : [wiki] Shell

problème intéressant en effet... smile
Ne pourrait-on pas dans ces cas indiquer dans le tuto en chantier qu'il est en lien dans tel ou tel tuto définitif ?

saque eud dun (patois chtimi : fonce dedans)

Hors ligne

#25 22-03-2014 19:31:26

paskal
autobahn
Lieu : ailleurs
Inscription : 14-06-2011
Site Web

Re : [wiki] Shell

Ça peut le faire.  smile

I'd love to change the world
But I don't know what to do
So I'll leave it up to you...

logo-sur-fond.png

Hors ligne

Pied de page des forums