Pages :
(reprise du message précédent)

c'est un peu pareilt, le CMD est aussi un interpréteur de commande mais il a une interface "une fenêtre noir" Smiley smile
pour faire simple, et c'est compliqué :

le batch c'est un fichier, c'est tout
le CMD c'est un interpreteur de commande (de plusieurs type de commande, dont bash)
le bash fait partie des shells, des interpréteur de commande.

Dans ton fichier .bat, en première ligne il y a normalement une ligne de commande qui précise quel shell tu va utiliser, 99% du temps du as /bin/sh qui correspond à bash.
le CMD c'est juste un interpreteur d'un autre type, car il est représenté par une fenêtre où tu peux taper des lignes de code dont du bash.

pour résumé :
batch = fichier executable
CMD = fenêtre avec résultats entrée/sortie
bash = interpréteur de commande/code
Modifié par JENCAL (19 Feb 2021 - 12:47)
Euuh...
Pourquoi alors, ils ne parlent pas de bash alors ici, si c'est ce qui utilisé à 99% du temps ?


upload/1613744997-81417-bat.png Ça, c'est un fichier .bat, donc c'est du batch ?


upload/1613745042-81417-cmd.png Ça, c'est ce qui en sort, donc c'est le CMD ?

Et le bash, ça ressemble à quoi ?

Merci !
Modifié par js_html (19 Feb 2021 - 15:32)
dans ton lien il parle de shell :

"Réaliser un tel fichier permet de concevoir des scripts qui seront interprétés par le "shell""

et bash est un shell.

le bash sa ressemble à du code Smiley smile

le CMD c'est un invité de commandes. c'est un logiciel. donc oui sur ton screenshot c'est une fenetre cmd
Donc la bash, c'est un truc que l'on ne peut pas voir sur l'écran ?
C'est le langage de programmation, le bash ?
Modifié par js_html (19 Feb 2021 - 16:44)
Modérateur
js_html a écrit :
Donc la bash, c'est un truc que l'on ne peut pas voir sur l'écran ?
C'est le langage de programmation, le bash ?


As tu lu l'article que je t'ai partagé ?
Modérateur
Bonjour,

Bon, on n'est pas rendu. Smiley biggrin

1) bash est un interprèteur de commande (on l'a déjà écrit 10 fois), c'est à dire une logiciel qui analyse une (ou des) ligne(s) de commande que l'on saisie par exemple dans le terminal d'un ordinateur.

Si j'ai bien compris, dans le monde windows, il y a désormais un terminal qui est le programme wt.exe. Avant il y avait cmd.exe (et il a surement encore cmd.exe).

Il est probablement possible d'avoir un interprèteur bash dans le monde windows (j'ai vraiment la flemme de vérifier), mais historiquement, bash est un interprèteur qui est surtout fourni avec les systèmes d'exploitation UNIX (il y a plusieurs UNIX légèrement différents) et LINUX (il y a aussi plusieurs LINUX légèrement différents, et qui sont différents des UNIX, mais avec énormément de points communs). Beaucoup de programmes peuvent fonctionner sur UNIX et LINUX sans modification.

Dans le monde UNIX ou LINUX, il y a d'autres interprèteurs de commande similaires à bash, mais avec de petites variations.

Il y a (au moins) un interprèteur de commande associé à un terminal, ce qui fait que quand on tape une ligne de commande dans le terminal, elle est analysée par cet interprèteur de commande associé.

2) par extension, bash désigne aussi le langage de commande que l'interprèteur bash peut analyser.

3) un script bash est un ensemble de lignes de commande en langage bash que l'on peut enregistrer dans un fichier, et qu'on peut ensuite faire exécuter par l'interprèteur de commande bash.

Il y a une multitude de moyen de lancer l'interprèteur (ce n'est qu'un programme). Le terminal le fait automatiquement quand on tape une ligne de commande. Mais on peut aussi lancer l'interprèteur depuis un autre programme, et en particulier, on peut le faire via php.

4) dans le monde windows, il est possible de faire des fichiers .bat qui sont des scripts exécutables par l'interprèteur de commande de windows (qui n'est pas bash a priori).

Un script .bat chez windows fait le même genre de travail qu'un script bash chez UNIX ou LINUX.

5) Dans le monde UNIX ou LINUX, on se fiche un peu des extensions de fichiers. Mais souvent, on utilise .sh ou .bash pour les scripts bash. Par contre, à ma connaissance, on n'utilise pas .bat qui est surtout utilisé dans le monde windows.

Amicalement,
Modifié par parsimonhi (20 Feb 2021 - 07:54)
@niuxe Oui, j'ai bien lu l'article, mais le problème, c'est que je n'arrive pas à me mettre une image sur ces interpréteurs de commandes. Le seul truc qui me vient à l'esprit, ce serait plutôt le CMD (donc un terminal de commande, à ce que dit parsimonhi - même s'il est écrit que c'est un interpréteur de commande-), mais ce n'est pas ça... Pourriez-vous envoyer une image d'un interpréteur de commande Windows ?

@parsimonhi Je comprends que batch est un interpréteur de commande, mais, comme j'ai dit à niuxe, je n'arrive pas à voir ce que c'est (sauf si c'est un programme qui se lance en arrière-plan ou qu'il n'a aucune interface...)
Bash se lance après l'exécution d'un programme qui l'appelle, une ligne de commande dans le terminal ou au démarrage de l'ordi ?
Ah ! Donc UNIX est un groupe d'OS (dont LINUX) ?

Merci (pour votre patience !)
Modifié par js_html (20 Feb 2021 - 14:48)
niuxe a écrit :
le batch c'est comment dire.... c'est largement moins bien et y'a pas photo.

Il y a longtemps que sous Windows les besoins en matière de script ne sont peu ou plus traités via des traitements par lots (batch). Power Shell est nettement plus utilisé par les administrateurs...
Modérateur
Bonjour,

js_html a écrit :
ce serait plutôt le CMD (donc un terminal de commande, à ce que dit parsimonhi - même s'il est écrit que c'est un interpréteur de commande-), mais ce n'est pas ça...

Cmd.exe est une "interface de commande" (ce qui, pour moi, est comme un terminal) qui doit interpréter des commande pour les exécuter. Le code de l'interpréteur de commande est soit dans cmd.exe lui-même, soit dans des dll de windows, soit dans des programmes annexes, soit dans un peu tout (je n'en sais rien et je préfère ne pas savoir).

Du coup, certains vont dire que cmd.exe est (aussi) l'interpréteur de commande. Ce n'est qu'une question de français.

js_html a écrit :
@parsimonhi Je comprends que batch est un interpréteur de commande, mais, comme j'ai dit à niuxe, je n'arrive pas à voir ce que c'est

Tu veux dire bash et non pas batch?

Pareil que pour Windows, ce n'est probablement pas un code unique, mais un ensemble de codes qui font l'interprétation des commandes à chaque fois qu'on a besoin de le faire.

Quelqu'un de normalement constitué devrait pouvoir se satisfaire de ça.

Mais si tu veux plus de détails, tu vas à https://github.com/gitGNU/gnu_bash
Tu récupères les codes, tu compiles, t'installes, tu testes, tu analyses tout ce que fait chaque fichier, et dans 10 ans, tu devrais être prêt pour venir nous faire un compte-rendu de 250 pages sur la question.

js_html a écrit :
Ah ! Donc UNIX est un groupe d'OS (dont LINUX) ?

Presque ! Smiley biggrin

UNIX est un groupe d'OS si tu veux. LINUX est un autre groupe d'OS. Ces deux groupes ont beaucoup de codes similaires, mais un LINUX n'est pas un UNIX, et un UNIX n'est pas un LINUX.

Amicalement,
Bonjour,
parsimonhi a écrit :
Tu veux dire bash et non pas batch?
Oui, je voulais dire "bash", mais avec ces termes qui se ressemblent (syntaxiquement et aussi un peu dans le sens, étant dans le même domaine et assez proche dans le sens...), je m'y perds...

Donc, est-on d'accord que bash, étant un interpréteur de commande, donc un programme, n'a pas d'interface graphique, sinon ce serait un (logiciel/application) ?



parsimonhi a écrit :
UNIX est un groupe d'OS si tu veux. LINUX est un autre groupe d'OS. Ces deux groupes ont beaucoup de codes similaires, mais un LINUX n'est pas un UNIX, et un UNIX n'est pas un LINUX.
Mais de nombreux appareils ayant un système d'exploitation avec un noyau LINUX ont un noyau de programmes UNIX ? Car les OS de LINUX viennent du code d'UNIX et ont été modifiées ?

Merci !
Modérateur
Bonjour

js_html a écrit :
Donc, est-on d'accord que bash, étant un interpréteur de commande, donc un programme, n'a pas d'interface graphique, sinon ce serait un (logiciel/application) ?

Application, logiciel et programme, c'est pareil. Smiley biggrin Smiley biggrin Smiley biggrin

js_html a écrit :

Mais de nombreux appareils ayant un système d'exploitation avec un noyau LINUX ont un noyau de programmes UNIX ? Car les OS de LINUX viennent du code d'UNIX et ont été modifiées ?

Noyau a une signification particulière en LINUX/UNIX : c'est le programme qui est le coeur du système. Après j'imagine que tu voulais dire que les LINUX utilisent un ensemble de programmes "de base" venant d'UNIX : c'est vrai, mais il y a pas mal d'adaptations à faire quand même. C'est au cas par cas.

NOTE: certains disent que LINUX est un type d'UNIX. Mais d'autres disent que LINUX signifie "Linux Is Not UniX".

Amicalement,
parsimonhi a écrit :
Application, logiciel et programme, c'est pareil.
Vous arrivez à vous mettre d'accord ? Un programme, c'est comme une application et un logiciel ou c'est différent ?

Et du coup, est-on d'accord que bash, étant un interpréteur de commande, n'a pas d'interface graphique ?

parsimonhi a écrit :
certains disent que LINUX est un type d'UNIX. Mais d'autres disent que LINUX signifie "Linux Is Not UniX"
Quel bazar !! Smiley fou Mais, LINUX signifiant peut-être "Linux Is Not UniX", ce n'est pas un peu exagéré comme signification ???
Et du coup, est-on d'accord que bash, étant un interpréteur de commande, n'a pas d'interface graphique ?
Modifié par js_html (04 Apr 2021 - 16:31)
Modérateur
Bonjour,

N'importe quel programme peut avoir une interface graphique y compris les interpréteurs de commande (par exemple pour les configurer). Ce serait de la discrimination qu'ils n'y aient pas droit.

Par contre, comme on l'a déjà répété 10 fois, le code de l'interpréteur est automatiquement appelé quand il y en a besoin.

Tu imagines la chaine de traitement suivante :

1) tu as un script php qui tourne sur un serveur linux
2) à un moment, dans ton script php, tu utilises la fonction php shell_exec() qui prend en paramètre une commande
3) php se débrouille ensuite avec l'interpréteur de commande de linux pour faire ce qu'il faut de cette commande. Le code de l'interpréteur de commande n'est pas dans le code php, mais fourni avec linux, ou éventuellement téléchargé par un administrateur système quand il souhaite utiliser un interpréteur exotique. Et l'interpréteur est conçu de tel manière que php a les moyens de lui passer la commande en paramètre d'entrée.

Tu imagines une autre chaine de traitement :

1) tu décides d'écrire un script bash (donc un fichier texte qui contient une série de lignes qui sont des commandes en langage bash)
2) tu fais exécuter le script en le lançant dans le terminal d'un linux
3) le terminal se débrouille ensuite avec l'interpréteur de commande de linux (spécifié en général dans le script bash) pour faire ce qu'il faut de cette série de commandes.

Amicalement,
Modifié par parsimonhi (24 Feb 2021 - 14:29)
Meilleure solution
Pages :