Pourquoi tu *dois* apprendre le BASH - Christophe Casalegno
HTML-код
- Опубликовано: 10 фев 2025
- Bonjour les amis, dans cette vidéo je vous explique pourquoi vous devez absolument apprendre le bash.
L'article "anti-bash" de mcorbin: www.mcorbin.fr...
Les tests unitaires en bash : shellspec.info/
Rclone : rclone.org/
Témoignages : www.christophe...
Retrouvez-moi sur Telegram : t.me/Christoph...
RUclips
-------------------------------------------------
Ma chaîne principale : / @christophecasalegno
Ma chaîne secondaire : / @brainbazar
Musiques, covers, textes & co : / @chrisiker
Réseaux sociaux
-------------------------------------------------
Twitter : / brain0verride
Instagram : / brain0verride
TikTok : / brainoverride
Linkedin : / christophecasalegno
Facebook (Page Pro) : / brain.override
Facebook (Perso) : / christophe.casalegno
Mais également sur
-------------------------------------------------
Twitch : / brain_0verride
Discord : / discord
t.me/Brain_Tec... (le Technobar)
t.me/Brain0ver... (mon compte Telegram)
Par email : brain@christophe-casalegno.com
Sur le web : www.christophe...
Cette vidéo est excellente et rappel bien les fondamentaux, je l'utilise tous les jours il fait partie de la base . Je ne vois pas comment on pourrait faire sans , pour moi c'est un "must have" du devops ou "machin chose" :) et bien évidement de l'admin
Bonjour. Très bonne vidéo et je suis d'accord sur la majorité malgré le fait que je trouve que c'est un langage assez particulier quant à sa syntax (certains choix de syntax sont assez bizarres et/ou obscures). Je suis d'accord que ce n'est pas le choix du langage qui compte mais ce que l'on compte en faire par contre, pour Ansible seul python3 (l'interpréteur) est requis qui est préinstallé "partout" (système GNU/Linux) par défaut (sauf si on veut des modules supplémentaires mais ça compte aussi pour bash vu qu'il fait appel à 90% à des binaires externe qui ne sont pas tous "préinstallés" sur le système). Et pour terminer, je suis entièrement d'accord que pour l'admin système, le bash est incontournable et primordial. Merci à toi pour tes vidéos enrichissantes ! Bonne journée
Le bash au boulot on s’en sert presque tous les jours, je le trouve très efficace pour mon utilisation, merci Christophe pour ta vidéo :)
ça doit forcément être un boulot intéressant alors ;)
Même moi qui suis un développeur C et assembleur "puriste", même dans la philosophie DevOps, Bash est probablement l'un des meilleurs langage de script que je connaisse, il est simple certes, mais il l'est suffisamment pour que des néophytes et même des érudits puissent l'appréhender très simplement, de plus, de par son intéraction avec les outils GNU, si le développeur est suffisamment malin dans son code, il peut créer des scripts tellement puissants qui utilisent des outils très précisément et performants qu'utiliser un langage compilé est inutile, même dans des énormes infras. Et surtout sa résiliance, il fonctionne 1 fois, il fonctionne 1000 fois, aujourd'hui comme dans 40 ans et peut importe le système sur lequel il tourne.
Je me souviens d'un script que j'avais fait pendant un stage, je téléchargeais l'ISO ubuntu que l'utilisateur a choisi, je l'ouvrais, j'avais créé une interface pour savoir ce qu'il voulait mettre dans son pressed, je le mettais dans le dossier de l'iso, je le recompilais et je pouvais l'envoyer sur mon serveur PXE, tout ça sans quitter mon shell... la puissance !
Et évidemment résilient as fuck, s'il y avait une nouvelle version qui sortait, je rajoutais les 2-3 lines dans les fonctions dédiées pour rajouter l'option et basta.
Vive le bash ❤❤❤
Vive le bash ! ;)
Vous me motivez bcp! Je pense que je vais me lancer sérieusement dans le système Linux. Merci.
Il y a quelques années, j'ai eu un projet pour installer syslog-ng sur les serveurs d'une grande entreprise. Il y avait du AIX, du Solaris et du Linux Centos. Le plus petit dénominateur commun, c'est le shell. Donc, le programme d'installation au final faisait 64ko. Et il fonctionnait de la même manière sur le ksh des aix, le sh des solaris, et le bash des centos. Découpé en modules, bien factorisé, c'est fonctionnel. J'utilise le bash parce qu'il est facile et si j'ai besoin de plus, je fais du python...
Tes arguments sont convaincants. Je suis un grand défenseur d'Ansible et des méthodes devOps contemporaines, mais tu expliques clairement que tout est affaire de use case, et en quoi BASH reste utile. Quand on a un bon marteau, tout ressemble à un clou.
Hello Adrien, je suis d'accord, Ansible, (et d'autres softs que j'indique en exemple) mais particulièrement lui, sont surpuissants sur les usecase appropriés tout en ayant l'avantage concernant ansible d'avoir une courbe d'apprentissage très rapide au regard du bash et toujours le concernant, de gérer particulièrement bien les équipements réseau (faire de l'expect ou autre en bash peut en effet devenir une usine à gaz selon l'infra, si tu n'exploites pas des méthodes alternatives comme exporter, modifier la conf puis importer sur l'équipement (lors que c'est possible, ce qui n'est pas toujours le cas!) Même chose si tu as un parc de distribution linux hétéroclite, Une opération de déploy massif de stack sur 3 environnements très différents (suse, ubuntu, & redhat par exemple), sera beaucoup plus lourd à gérer en bash que via ansible.
Pour moi le bash est le plus petit dénominateur commun entre les développeurs et les admins
C'est ce qui fait son charme
En plus de cela il vous relie à l'histoire d'unix et du développement de l'informatique moderne
c'est un peu la "lingua franca" de l'informatique
Merci pour l’explication Christophe et je te rejoins. Le plus gros soucis c’est que en école on apprends directement les outils devops ce qui explique cette profonde incompréhension. Aucune maitrise du système de bases n’est apprises mais on rabâche sans cesse : ansible; puppets etc peuvent tout faire . Très belle explication. Comme tu dis tout depends ensuite du use case
Les cours de shell en IUT sont très basiques aujourd'hui car il faut absolument apprendre tous les trucs haut niveau à la mode.
Mais avec le BUT et le parcours système qui arrive, j'espère que cela va changer.
Perso au boulot,, je compte pas le nombre de scripts shell déployés via Puppet. Je trouve ca ouf que les gens ne voit pas le côté complémentaires de ces outils.
@@wechepa49 je suis bien d'accord avec toi
Ça tire à balles réelles !
J'attends le jour où BASH ne sera plus le language le plus efficace pour admin mes machines UNIX.... et je suis certain que HURD sera déjà à sa version stable :)
Ce n'est pas faux, c'est assez peu probable que cela se produise ou alors à ce moment là, GNU/Linux sera un système d'exploitation très éloigné de ce qu'il est aujourd'hui.
Comme dirait Renaud "J'ai mis la main sur mon flingue !" ;)
je n'ai pas de souci avec bash. Par contre, lorsque je dois coder un truc un peu touchy, c'est python mais plus pour l'IDE et les librairies disponibles que pour l'impossibilité de le faire en bash. Un bon IDE me permet d'avoir une bonne visibilité sur l'architecture du code, et les import me font gagner du temps. Le bash, dans ce cas là, me sert plutôt de launcher. Nb: je bosse très peu en mode devops avec ansible/chef etc.... donc YMMV
Je plussoie, (même si viens du monde Windows et que je fais plus de powershell que de bash), Merci Christophe pour cette vidéo :)
J'avoue que le language shell ou bash est un language que j'aime même si j'ai pas un bon niveau dessus. Mais oui c'est un langage assez puissant quand même !
Ansible + Bash --> C'est ça qui est bon ! ! ! Tout adminsys doit commencer par bash, mais ce n'est que mon avis. "Where there is a shell, there is a way"
Je suis dev, et le seul défaut que je verrais au bash, c'est que dans le cas d'un script un peu compliqué, on perd les jeunes fullstack. Mais sinon je te rejoins!
Y'au aussi un autre truc que je vois beaucoup, les gens font des scripts POSIX, ce qui en environnement Linux ne se défend que rarement.
Résultat ils ne font pas vraiment du BASH, qui reste compatible avec POSIX, et passent à côté des améliorations offertes par BASH
Pendant longtemps j'ai fait la même chose, mais parce que j'avais souvent l'occasion de travailler sur différents Unix. Aujourd'hui, ce n'est plus vraiment le cas, c'est essentiellement sous Gnu / linux, du coup, je suis passé de sh au bash.
Hello,
Christophe et oui notre bon vieux BASH, c'est la ou on fait la meilleur soupe ou code script,
une dorsale solide et on peut faire presque tout sauf le café et encore avec un bon vieux Arduino à
non j’oublie je crois plutôt du python ou c c++ Oh je suis presque sur qu'on pourrait utiliser BASH..
PS : Que pense tu de ZSH qui pourrait être assez intéressant mais pas aussi adapté que BASH pour le script..
Après je ne suis pas un expert malgré mais nombreuses années Linux..
Merci pour ton commentaire. En ce qui me concerne ZSH est une usine à gaz qui fait beaucoup trop de chose. Je trouve que bash est le bon compromis entre le "sh" natif et les shell à la zsh qui veulent essayer de faire autant de choses que systemD xD.
D'ailleurs, si tu couples ansible et du bash avec le module shell:, c'est efficace ! Pas besoin de plus pour administrer et déployer.
Bash est effectivement l'outil indispensable de toutes personnes utilisant GNU/Linux, et surtout très simple. Etant plutôt système, je ne pourrais pas m'en passer, pour bon nombre d'automatisations, de la plus simple à la plus complexe.
Cependant, il faut l'avouer, bash peut être lent pour certaines choses, exemple concret que j'ai eu récemment, lorsque je participais à un CTF débutant (Capture The Flag), où je devais récupérer le mot de passe admin d'un site web.
Après avoir évidemment récupérer le hash dans la base de données à coup d'injection SQL, et une partie du code source, j'ai pu comprendre que le mot de passe était hashé 60 fois en md5 avant d'être stocké en base. Mon premier réflexe comme tout bon admin système je pense, fu de créer un script bash, avec un "while read line" pour lire chaque ligne (environ 12 millions) de mon rockyou.txt, et de faire 60 md5sum de chaque ligne, en gros j'ai passé 5min dessus. Au bout d'1h30, toujours pas de résultat, je me dis donc que je ne suis pas sur la bonne piste, car ce n'est pas du genre des organisateurs de te faire poiroté pendant des heures. J'abandonne, le lendemain, je demande à un des organisateurs si je suis sur la bonne piste, il me dit "oui mais tu n'utilises pas le bon outils", après un peu de réflexion, je décide de refaire mon script en Golang (pourquoi pas ^^), après une bonne demi-heure de dev (je suis sysadmin, pas dev), résultat en 2 secondes (Resultat du script : "Bruteforce réalisé en 2.2068587s avec 128207 lignes."), j'avais trouvé mon mot de passe.
Je me dis que c'est impossible, j'ai du me foirer sur mon script bash, qu'il prends 5min, ok, mais plus d'une heure, c'est pas possible, je me crée un petit rockme.txt, avec seulement 10 mdps dont le bon, et là mon script trouve en environ 1 seconde. Je décide donc de le lancer la nuit, en indiquant simplement l'heure de début, et l'heure de fin, et là il m'a fallu presque 4h pour le trouver, soit une moyenne de 10 lignes par secondes, contre je le rappel, presque 60 000 pour le Go, un ratio de x6000 pour le Go tout de même.
J'ai eu d'autre défi, comme se connecté à un service, lire ce qu'il me dis, le transformer en fonction de ce qu'il me demande, puis lui répondre, et recommencer plusieurs fois. J'ai tenté avec netcat, mais l'automatiser sans fermer la connexion à chaque fois, c'est compliqué, donc je suis partie sur du python.
Ceci est évidemment un exemple bien précis, et je pense que j'aurais pu améliorer en bash, notamment en utilisant awk au lieu d'une boucle.
Malgré ceci, cela n'enlève en aucun cas bash de mon coeur
Salut et merci pour ton message. Pour ce type d'opérations en bash, si en plus tu utilises un binaire externe (ici md5sum), ce qui va faire un fork à chaque fois, il faut paralléliser tes opérations, sinon ça va prendre des plombes. Bash est relativement rapide à partir du moment où tu te contentes d'utiliser des commandes internes. Enfin tu peux te retrouver dans beaucoup de cas réel dans lesquels pour citer l'exemple de la cybersécurité, tu te retrouveras sur une machine intermédiaire compromise dans une dmz où il peut s'avérer très compliqué d'y injecter un binaire ou autre, et où il faut se contenter du bash natif. L'exemple de la vidéo où je code un scanner de port en bash en quelques minutes, est typique de ce type de situation. Très bonne continuation.
@@ChristopheCasalegno Je me doute qu'il y a moyen d'optimiser le tout, mais dans mon exemple, je suis partie en mode séquentiel en Golang également, un boucle pour la lecture du fichier ligne par ligne, puis une boucle pour les 60 itérations du hash. Pour un script similaire (car oui je suis scripteur, pas dev, peu importe le language), construit de la même manière, ba la différence de ratio performance/temps est énorme.
D'ailleurs c'est un truc qui pourrait être intéressant de comparer le temps passer à développer une automatisation avec différente techno (language ou outil).
@@xataz5893 "je suis scripteur, pas dev" -> Quelle est la différence ? Un script est juste un autre nom pour un programme, souvent sus-nommé en fonction du langage, d'autres par rapport à la taille..Toutes les applications php s'appelaient des "scripts php" il y a quelques années.
@@xataz5893 La force du bash est de permettre principalement *à celui qui s'en sert* de faire simplement des choses très vites : pas que les choses s'exécutent très vite. Si tu l'as toujours, tu peux m'envoyer ton script concernant md5 ainsi que le fichier en question via telegram, je jetterai un oeil s'il y a de gros vecteurs d'optimisation, mais afficher une simple ligne de texte via "echo" est beaucoup plus lent que de le faire, ne serait-ce qu'en php, et on parle d'un facteur 10 ou 100 (je ne me souviens plus).
Salut,
Je suis dev en différents langages, aussi sur Linux.
Il ne s'agit pas d'opposer un langage à bash (qui est plutôt un script que l'on peut assimilé a un langage), c'est différent et complémentaire.
On ne peut pas se passer de bash car c'est un outils universel (tu l'a dit) c'est le couteau suisse du sysadmin, de l'intégrateur, du devops, du dev, bref comme tout couteau suisse, il te sauvera la vie.
Apprenez le bash, je connais le bash depuis Minix.. (oui, 1987 !! sur Atari , tu dois connaître Christophe.) eh bien pour l'époque c'est un super outil. et depuis Xenix et Linux, c'est un outil qui ne fait jamais défaut pour faire des scripts de traitements rapidements tellement il est flexible et universel.
il est pas super rapide (mais le C est plus rapide si besoin), il ne permet pas de gérer des super listes de faire des traitements complexes, quoi que, mais y a python) , mais si on est pas pressé et inventifs il pourra servir à tout !!
Christophe , faut pas basher les devs ;-)
il faut peut être faire des vidéos de cas courants d'utilisation de bash pour résoudre des pb de déplacement, calcul de taille disque, d'alerte, montage, démontage, création user, etc... qu'en penses tu ? (question de temps , je sais)
a+
Eric
Je ne bash pas •les• devs, mais uniquement quelqu’uns d’entre eux ;)
Je commence à apprendre le codage depuis quelques semaines ( je recommence après avoir créé 2 à 3 site en html dans les années 2000), et de fils en aiguille j'ai approfondi le bash en essayant de comprendre et d'améliorer mon utilisation de mon ubuntu. Du coup je n'ai pas encore pris le temps d'approfondir le html, css, js.
Je ne comprends pas pourquoi des personnes se plaignent des retours d'erreur et d'exécution de commande.
J'ai naturellement créé des 2>>&RE , >>$YELLOW , >>&RED , >>&FINAL_CHECK . Les $ sont = à des fichiers .log que je crée et écrase à chaque nouvelles exécutions et j'y ajoute des balises couleur différentes sur chaque fichier. Puis j'exécute les fichiers à la fin du script.
Du coup je peux facilement avoir des informations de contrôle ou je le souhaite en ajoutant des echo "cette action à bien été exécutée" >>$YELLOW , et je fais le même procédé en rouge pour les else par exemple.
Si j'ai un bug dans mon script, qui du coup ne se déroule pas jusqu'à la fin, je vais directement consulter les fichiers .log .
Et il est très simple d'activer et de désactiver les fichiers logiciels, vu que j'ai simplement un # à mettre ou supprimer. Ou via une commande -Yh (Yellow hide) si getopts.
Du coup je ne comprends pas trop les critiques, vu que j'ai réussi facilement à résoudre cette problématique alors que je débute. Pour le moment, j'ai réussi à répondre à toutes les problèmes que j'ai eux besoin de coder, via bash. Il me semble un langage plutôt complet, vue d'un œil novice...
Hello et merci pour ton message. En fait c'est qu'en fonction du background de la personne, on ne parle pas forcément de la même chose. Les langages même de "haut niveau" diffèrent beaucoup entre eux sur certains points et essaient / voudraient reproduire / disposer des mêmes choses dans tous les langages. En général le résultat est terrible (au sens horrible). Il faut s'adapter au langage et non pas essayer de changer la nature profonde d'un langage (mise à part pour le fun). Si tu essayes de coder du php comme de l'assembleur 68000 (oui oui, ça existe, coucou Marius si un jour tu passes par là), en dehors de l'auteur, les gens qui passent derrière vont tous se tirer une balle xD.
On dirait bien que l'algo youtube a, pour une fois, bien fait son boulot : je découvre cette vidéo et son auteur avec qui apparament, je partage son avis
A suivre donc :)
Hello MrToufou54 et bienvenue ici ;) Quelqu'un qui apprécie le bash ne peut pas être foncièrement mauvais ;) C'est assez rare que les gens arrivent ici via une recommandation de YT, ils viennent généralement soit d'autres réseaux sociaux, soit d'autres chaînes qui évoquent la chaîne. Du coup je viens de regarder les stats et en effet, cela semble différent de l'habitude depuis quelques heures. A suivre.
Je ne comprends même pas le sujet. Évidemment que Bash est indispensable. Par contre j'ai rencontré peu de gens qui savent vraiment l'utiliser.
BASH est un couteau Suisse, et lorsque l'on cale, l'avantage, c'est que l'on trouve tout de suite des tas d'exemples sur le net. Ça n'est peut-être pas le plus affûté des couteaux, mais c'est un couteau à tout faire :) ( je l'utilise comme toi, pour automatiser un truc plus ou moins répétitif qui me gonfle à la mimine).
Ohhh ohhh ohhh je pense que ce use case peut faire object d'une vidéo : installation d'une stack lamp redis avec plusieurs multiple contraintes
Je manque clairement de savoir pensez vous que le livre de M.Christophe Blaess développement système sous linux est un bon livre?
Hello, si c'est celui auquel je pense : oui. Mais il n'est clairement pas pour les débutants.
@@ChristopheCasalegno merci infiniment de votre réponse! Je vais le garder pour plus tard alors. Je vous souhaite une excellente journée!
@@hardoise667 Merci, excellente journée à toi également.
Comparer ansible, puppet, saltstack et Cie avec bash, ça a le même niveau de pertinence que de comparer le chocolat en poudre avec la construction navale.
Quand on a qu'un marteau comme outil, tous les problèmes ressemblent à des clous.
Comme quoi, choisir le bon outil pour la bonne tâche ça compte...
BASH for ever :)
Le bash c’est la vie ^^
Excellent
j'ai un scipt php pour me générer des bash pour modifier les exif sur des photos avec exiftool !
J'aimerais apprendre le Bash, mais quel est le meilleur endroit pour l'apprendre?
Bonjour Patrick, tout dépend dans quel contexte tu souhaites l'utiliser ? Quel est ton profil actuel ?
@@ChristopheCasalegno Super debutant!
@@ppiriou ok mais côté contexte ? plutôt développeur, administrateur système, autre ?
@@ChristopheCasalegno Developpeur
Bash !! 🥰🥰
Ok boomer ! (non j’déconne Bash c’est la vie :D et oui, les gens adorent les nouvelles technos, les trucs qui compliquent les stacks, et ils aiment surtout le syndrome Duning Kruger)
Je vois vraiment pas pourquoi l'algo de youtube m’envoie ici. Le GESAL suffit largement à mes besoins...
Naonn, j'déconne...
Le bash est un outil, et comme tout les outils, le résultat dépend plus de l'habileté de l'ouvrier que de l'outil lui même.
Question: Quel bouquin pour 'apprendre' le bash ?
Je réponds avec une grosse latence, mais côté bouquin, même si j'en ai plusieurs . Je ne saurais pas trop lequel te conseiller, car cela dépend vraiment autant du profil que de l'objectif recherché.
J’ai codé un moteur etl en 250 lignes de bash ! Lol
perso à chaque foi, que j’entends, j'aime pas, c'est nul, c'est dépassé, ... le langage X , je traduit par je ne connais pas X
sauf dans les rares cas ou, c'est accompagné de vrais arguments.
Je suis développeur
Perso, utilise la bash pour automatisé ce que je fait en ligne de commande. je crée des petit outils pour démarrer/arrêter mais project, mais aussi des hooks git comme pour testé un certain nombre éléments avant faire un commit
Je suis d'accord, quasiment tous les langages sont cool et intéressants en fonction du usecase... ok à part javascript, lui reste vraiment pourri ;) (troll spotted)
@@ChristopheCasalegno le problème du js ... (bla bla bla)
Bash FTW \o/
Je pense que tu exagères quand tu dis que les gens appelle du BASH depuis leur autres langages. C'est faire la confusion entre commandes internes (le shell) et externes (l'OS).
Parce que en soit, python est aussi un shell où c'est juste beaucoup plus lourd d'utiliser des commandes externes.
Hello Cédric, probablement :xD C'est plus souvent des commande systèmes qui sont appelées : cela dit j'ai vraiment déjà vu du code bash interne appelé via un exec du bash dans du code python et php...
Manque de connaissance et compétences en BASH...
Ce sont les mêmes personnes qui critiquent le PHP...
on peux dire la même chose de Perl finalement.
Pas vraiment non, le perl est un langage qui n'est pas en même temps un shell, même si c'est un puissant langage pour les task system.
Je suis d’accord : m corbin est de mauvaise fois. Shell Check est là pour les test. Gitlab pipeline existe pour bash….
L’honnête aurait été de dire qu’en bash c’est la misère pour faire des tableaux en dim> 2 et la c’est vrai c’est le bordel
Salut Manon, en effet tu as tout à fait raison, il n'y a même pas de support natif pour des tableaux à 2 dimensions (il faut ruser pour cela), donc déjà >1 n'est pas nativement supporté. A bientôt !
Ah non non, Bash c'est juste de la merde.
Perso, un ingénieur qui me sort ça en entretien, il est direct viré.
Et perl alors?? Généralement ils le préfèrent au bash
LE PB de Perl est le même que celui de C, si le type qui a gratté le pgm est méticuleux, rien à dire en règle générale, s'il est foutraque, c'est très vite la cata.
Le perl est un langage extrêmement puissant dans le domaine de l'administration système bien que délaissé aujourd'hui au profit de python. Pour autan, il n'est pas comparable au bash dans le sens où c'est un langage à part entière : il nécessitera le même effort de "traduction" qu'un autre langage.
manque bats :p
comme framework de test unitaire
@@aurelienlequoy2308 shellspec fait encore mieux, tu devrais tester : shellspec.info/
Bourne to be wiiiild
Le bâchage de bash est terrible.