Revue des techniques de programmation en shell

Posté par  (site web personnel) . Édité par Benoît Sibaud, Nils Ratusznik, palm123, Nÿco, Yves Bourguignon et Pierre Jarillon. Modéré par Nils Ratusznik. Licence CC By‑SA.
114
22
sept.
2014
Ligne de commande

L'été est fini, c'est la rentrée ! Pour se remettre en forme, rien de tel qu'une revue des techniques de programmation en shell — ces techniques sont pour le shell de Bourne /bin/sh mais peuvent être utilisées avec les shells compatibles qui permettent parfois des solutions plus faciles.

Petite histoire du Bourne Shell

90
20
mar.
2015
Doc

Nos systèmes d'exploitations sont forgés par l'histoire. Ils se sont formés par stratifications d'inventions accumulées. Les idées de Ken Thompson, Steve Bourne, et Bill Joy - pour ne citer que les personnes dont il est question dans cette dépêche - sont fossilisées dans les sources des logiciels que nous utilisons aujourd'hui. Parce qu'un rappel historique nous permet de comprendre les raisons du fonctionnement actuel d'un logiciel, cette dépêche présente rapidement l'histoire du shell de Bourne.

Journal Des "basheries"

Posté par  . Licence CC By‑SA.
Étiquettes :
89
29
nov.
2016

Salut,

Voici un journal qui répertorie les quelques raccourcis et commandes que j'ai découverts au fil du temps et de balades sur le net (blogs, forums, wiki, man bash, etc.). J'essaie de faire une liste ici de ceux qui me semblent vraiment utiles pour l'utilisation quotidienne du terminal par un utilisateur lambda. Je fais partie de cette catégorie, je ne suis ni un programmeur, ni un utilisateur averti, je fais de la recherche en sciences humaines et sociales et de (…)

GameShell, apprendre les rudiments du shell en s'amusant

Posté par  . Édité par claudex et Pierre Jarillon. Modéré par Pierre Jarillon. Licence CC By‑SA.
Étiquettes :
80
26
mar.
2021
Ligne de commande

Il y a 4 ans, j'ai pris en charge un nouveau cours intitulé « système d'exploitation » en première année de licence. Le programme est assez large, avec un peu d'architecture, un peu de système, et même un peu de réseau. Là dedans, je devais faire une introduction au shell. Le risque avec ce genre du truc, c'est de se retrouver avec un catalogue de commandes qui rebutera même les étudiants les plus motivés.

Et c'est comme ça qu'est né GameShell, ou gash pour les intimes. GameShell est un jeu où il faut entrer des commandes dans un shell (bash) pour valider des « missions ». Comme il n'y a pas eu de gros bug ces deux dernières années, je me dis que je pouvais en faire la pub. (Attention, il reste probablement plein de bugs. C'est juste que les étudiants ne sont pas encore tombés dessus !). Ça peut intéresser les gens qui veulent apprendre, ou enseigner les rudiments du shell.

Le code est disponible sur GitHub (promis, je changerais un de ces jours) avec une licence GPL : GameShell sur GitHub

N'hésitez pas à me faire des retours d'utilisation, des rapports de bugs, proposer des fonctionnalités, ajouter des missions, etc.
Si vous l'utilisez « en public », ça serait juste bien d'inclure un lien vers le dépôt et / ou mon nom.

GameShell est un jeu en ligne de commandes, où le joueur doit taper des commandes bash pour valider des « missions ».

GNOME 3.0 : le grand saut !

Posté par  . Modéré par j. Licence CC By‑SA.
77
7
avr.
2011
Gnome

L’environnement de bureau du projet GNU a livré sa version 3.0, tant attendue. Contrairement au poisson d’avril de Vincent Untz, la version 3.0 n’est pas repoussée une troisième fois !

La branche 2 ne verra pas de nouvelle version majeure. La version 2.32 sera maintenue aussi longtemps que les distributions remonteront des erreurs.

Journal Back to basics : avoir un excellent pager avec less

Posté par  . Licence CC By‑SA.
Étiquettes :
73
11
oct.
2016

Un petit article sur des trucs que j’apprécie pas mal avec less et qui explique pourquoi je n’utilise pas (et je m’énerve) quand je dois utiliser more.

D’abord pour les étourdis. Un pager est un outil en ligne de commande qui permet de naviguer dans un document texte dont la taille dépasse celle de votre terminal. C’est ce que vous utilisez sans le savoir à chaque fois que vous lisez une page de manuel avec man. Il existe (…)

Coloriser des flux de texte avec colout

Posté par  (site web personnel, Mastodon) . Édité par Benoît Sibaud. Modéré par claudex. Licence CC By‑SA.
65
4
avr.
2013
Ligne de commande

Les réalisateurs de films policiers ne s'y trompent pas : lire des flux de textes en ligne de commande nécessite parfois le super pouvoir de lisibilité.

Bien que les outils GNU soient extrêmement pratiques pour manipuler des flux de texte, il en manquait un pour aider à mettre en valeur l'information importante, sans masquer l'accessoire. Par exemple pour faciliter la lecture de logs s'étendant sur plusieurs lignes ou pour détecter rapidement le numéro de ligne d'un fichier responsable d'une erreur de compilation.

Heureusement, grâce à la commande colout (aujourd'hui en version 1.0), vous pouvez maintenant très facilement coloriser colorer colorier mettre de la couleur là où vous le souhaitez dans votre ligne de commande.

Basiquement, colout s'utilise comme un filtre de flux de texte classique, généralement après un pipe, et mets en valeur les bouts de texte correspondant à une expression régulière avec une couleur et un style de votre choix :

    <flux de texte> | colout <expression régulière> [couleur [style]]

L'IHM de colout est pensée pour être simple tout en permettant des utilisations vraiment intéressantes, telles que le coloriage l'application des couleurs sur les groupes des expressions, l'utilisation de cartes de couleurs (mais si, vous savez, les couleurs de l'arc-en-ciel…), la coloration la mise en valeur de la syntaxe de code source, des thèmes automatiques et même l'application d'une couleur en fonction de la valeur d'un nombre.

Comparaison critique de systèmes d'invite de commande

Posté par  (site web personnel, Mastodon) . Édité par Ysabeau 🧶 🧦 et gUI. Modéré par Ysabeau 🧶 🧦. Licence CC By‑SA.
60
17
nov.
2023
Ligne de commande

Cet article a été écrit à l’occasion de l’imminence de la sortie de la version 2.2 de Liquid Prompt et vous aurez l’occasion de pouvoir en discuter avec son auteur lors des journées Toulouse Capitole du Libre, qui proposera une conférence sur Liquid Prompt : repenser en profondeur le design du prompt shell.

TL;DR: résumé

Si vous utilisez la ligne de commande, vous gagneriez à utiliser un bon système d’invite de commande (« prompt ») au lieu de la configuration par défaut. Parmi les sept systèmes de prompt les plus connus, certains sont mieux conçus et d’autres prennent mieux en charge certaines fonctionnalités.

Mes principales conclusions sont les suivantes :

  • Si vous recherchez le système qui offre la meilleure expérience globale à l’utilisateur, vous devriez probablement utiliser Liquid Prompt.
  • Si la faible latence est plus importante pour vous que les fonctionnalités, vous devriez miser sur PowerLevel10k.
  • Si vous êtes un développeur qui jongle en permanence avec plusieurs jeux d’outils, Starship semble être la meilleure option pour vous.

Cet article est divisé en deux parties principales : la première introduit le sujet et présente les principales évaluations ; la deuxième partie entre dans les détails des designs et des fonctionnalités. Enfin, la conclusion donne des conseils sur le choix d’un prompt et propose quelques idées sur l’avenir des systèmes de prompts.

Journal Le core utile

Posté par  . Licence CC By‑SA.
Étiquettes :
58
10
déc.
2015

GNU Coreutils

Ce journal concerne les utilitaires GNU. Ils sont présents dans toutes les distributions Linux, et tous les adeptes du shell les connaissent.

Mais connaissons-nous vraiment toutes ces commandes ?

J'ai donc listé le contenu du paquet coreutils de ma distribution, et j'ai écrit une description rapide pour les commandes que je ne connaissais pas, ou peu.

La doc GNU

base64
Codage/décodage d'un fichier dans le format base64.
Fonctionne avec l'entrée standard (on peut donc piper).

basename
Voir dirname

cat

(…)

Mosh, the Mobile Shell

Posté par  . Édité par Nÿco, baud123 et claudex. Modéré par NeoX. Licence CC By‑SA.
58
16
avr.
2012
Ligne de commande

Mosh est une application permettant d'ouvrir une session à distance et sécurisée sur une machine de type Unix.

À la différence du célèbre et incoutournable SSH, Mosh offre la possibilité de maintenir une session ouverte tout en étant connecté par intermittence (roaming IP), d'où son nom : Mobile Shell.
Ce dernier est une alternative au couple SSH+Screen.

Fonctionnement

Mosh utilise SSH pour se connecter sur l'hôte distant. Une fois la connexion établie, un processus mosh-server prend le relais sur un port UDP en ouvrant une nouvelle session sécurisée et ferme la session SSH. Le client communique alors directement avec mosh-server. Avantage de la solution ? Si le client change d'adresse IP et qu'il retente une connexion à travers SSH, mosh-server reprend le dialogue avec la nouvelle adresse IP.

Mosh utilise aussi une approche différente de SSH pour la gestion de l'affichage du terminal client. Mosh n'attend pas une réponse de l'hôte distant pour afficher ce qui a été saisi par l'utilisateur. Le client et le serveur possèdent chacun un instantané (snapshot) de l'écran à afficher. La solution de Mosh repose sur la synchronisation de ces deux états. Ce qui permet à l'utilisateur de réduire les impressions de latence si la qualité de sa connexion est mauvaise.

Autres points importants :

  • Mosh n'a pas besoin des droits super-utilisateur pour s'exécuter.
  • Mosh impose un environnement en UTF-8 et ne gère pas d'autres encodages.
  • Mosh ne gère pas encore le X-forwarding, ni le Port-forwarding.

GameShell, le retour

Posté par  . Édité par palm123, Benoît Sibaud et bobble bubble. Modéré par Benoît Sibaud. Licence CC By‑SA.
Étiquettes :
52
26
juin
2021
Ligne de commande

Il y a quelques mois, je postais une dépêche décrivant “GameShell”, un jeu que j’avais développé pour enseigner les bases de la ligne de commandes. Cette dépêche avait provoqué discussions, corrections de bugs et suggestions intéressantes.

Trois mois et quelques centaines de commits plus tard, je me permets de faire une petite mise à jour.

Globalement (mais je suis un peu biaisé), le GameShell d’aujourd’hui est nettement mieux que le GameShell d’hier. Ceci a un coût : la taille d’une archive GameShell a été multipliée par 3. On est passé de 44kio à 140kio !
Je ne sais pas comment on traduit “bloat” en français (“boursouflage” ?), mais pour le moment, ça ne m’empêche pas de dormir !

La version précédente avait été testée par plusieurs générations d’étudiants, parfois très inventifs. Alors n’hésitez pas à vous mettre dans la peau d’un étudiant en faisant une partie avant de me faire un retour.
Je suis preneur de toute critique, suggestion, rapport de bug, ticket, contribution et j’en passe.

Si certains veulent créer des missions, je pourrais faire une petite description de l’architecture d’une mission type. Ce n’est pas très compliqué, et une année, j’ai même eu un étudiant qui en a ajouté une comme « question bonus » !

Journal Tu souhaites apprendre à programmer en shell

Posté par  (site web personnel) . Licence CC By‑SA.
Étiquettes :
48
17
août
2012

Cher lecteur, tu souhaites apprendre à programmer le shell. Voici quelques recommendations que tu trouveras utiles (ou non).

(Ceci est une version modifiée d'un de mes commentaires planqué au fond du forum. Quand j'ai pensé au fantastique appeau à troll que j'avais écrit, j'ai décidé d'en faire un journal—c'est trolldi pour encore au moins deux longues heures!)

Usenet

Pour apprendre à programmer il faut lire beaucoup de programmes: abonne-toi à comp.unix.shell tu apprendras vite!

Bashing

Comme bash est un gros (…)

Bash Argsparse : mieux gérer sa ligne de commande dans ses scripts.

Posté par  (site web personnel) . Édité par Xavier Teyssier, Benoît Sibaud et ZeroHeure. Modéré par claudex. Licence CC By‑SA.
46
10
oct.
2013
Ligne de commande

Je vous présente une bibliothèque écrite en Shell : bash-argsparse

Bash-argsparse permet une gestion des options de la ligne de commande en plus haut niveau qu'un simple getopt, un peu comme le module argparse de python.

Parmi la liste des fonctionnalités, on trouve :

  • la génération automatique du --help ;
  • la vérification des entrées utilisateurs, soit suivant des énumérations, soit suivant des formats pré-établis (nombres entiers, adresses IP, etc.), soit via des résultats de fonctions définies par le développeur du script ;
  • l'exclusion mutuelle de plusieurs options ;
  • le cumul de valeur par répétition d'une option ;
  • et plein d'aut'trucs.

Bash 5 : une introduction

Posté par  . Édité par Ysabeau 🧶 🧦, Gil Cot ✔, Anonyme, Benoît Sibaud et palm123. Modéré par Ysabeau 🧶 🧦. Licence CC By‑SA.
44
5
août
2022
Ligne de commande

La troisième version du document « Introduction à la programmation en Bash » (IUT de Rodez) vient de paraître. Elle est principalement destinée aux étudiants de niveau Licence.

Journal Envoyer un SMS rapidement depuis le terminal

Posté par  . Licence CC By‑SA.
44
2
juil.
2019

Je continue à me servir des journaux LinuxFR comme sauvegarde pour mes scripts shells pourris.

J’utilise KDE Connect pour relier mon téléphone à mon ordinateur. Ça permet plein de choses, y compris répondre rapidement aux textos reçus. Par contre, impossible de commencer un texto depuis l’interface graphique. L’outil en ligne de commande, en revanche, le permet.

Voici un script qui permet d’envoyer un texto rapidement depuis la ligne de commande. Le script invoque votre éditeur de texte préféré (indiqué dans (…)