Revue des techniques de programmation en shell

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

Posté par (page perso) . Édité par Benoît Sibaud, palm123 et tankey. Modéré par tankey. Licence CC by-sa.
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.
Tags :
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 (...)

GNOME 3.0 : le grand saut !

Posté par (page perso) . Modéré par j. Licence CC by-sa.
76
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.
74
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 (page perso) . Édité par Benoît Sibaud. Modéré par Xavier Claude. 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.

Journal Le core utile

Posté par (page perso) . Licence CC by-sa.
Tags :
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 Xavier Claude. Modéré par NeoX. Licence CC by-sa.
57
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.

Journal Tu souhaites apprendre à programmer en shell

Posté par . Licence CC by-sa.
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 (page perso) . Édité par Xavier Teyssier, Benoît Sibaud et ZeroHeure. Modéré par Xavier Claude. 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.

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 (...)

Journal 100 scripts shell UNIX

Posté par (page perso) . Licence CC by-sa.
44
30
nov.
2012

Aujourd'hui pour me changer les idées, je me suis décidé à aller faire une petite razzia de bouquins à la bibliothèque de ma fac. Généralement, je sors assez déçu de ce genre d'expérience, mais pour une fois un livre a accroché mon esprit.

Il s'agit de 100 scripts shell UNIX par Dave Taylor, traduit en français, et aux éditions EYROLLES.
Ce petit bouquin d'environ 350 pages se propose de présenter, discuter, optimiser cent scripts shell.

Les chapitres

Le bouquin (...)

Liquidprompt version 1.7

Posté par (page perso) . Édité par Benoît Sibaud et Nils Ratusznik. Modéré par Nils Ratusznik. Licence CC by-sa.
42
2
déc.
2013
Technologie

Le Liquid Prompt est un prompt fluide affichant de manière limpide des informations utiles là où vous les verrez : le prompt de votre shell bash ou zsh.

Le liquidprompt était déjà bien rempli de fonctionnalités, mais vu la quantité de travail de fond accompli sur la branche de développement, il coulait de source qu'il était temps de sortir une nouvelle version stable.

Une vague de bugfix (notamment une meilleure compatibilité avec zsh, FreeBSD, OpenBSD et OS X) mais surtout un torrent, que dis-je, un raz-de-marée, d'optimisations (notamment dans les dépôts mercurial ou bazaar) écoulées par le nouveau mainteneur, Olivier Mengué.

Quelques gouttes de fonctionnalités, également :

  • affichage du temps mis par la dernière commande (s'il dépasse un seuil, dans le plus pur style liquidprompt) ;
  • l'affichage du nombre de lignes modifiées dans les dépôts fossil ;
  • la température affichée est maintenant la moyenne des maximums ;
  • désactivation du support de gestion de version pour l'utilisateur root (plus logique d'un point de vue sécurité).

Je ne voudrais pas trop me mouiller, mais je crois qu'on a là un excellent cru.

LiquidPrompt version 1.2

Posté par (page perso) . Édité par baud123, Nils Ratusznik et NeoX. Modéré par Nÿco. Licence CC by-sa.
42
16
jan.
2013
Ligne de commande

LiquidPrompt est un prompt clefs-en-main pour bash ou zsh, dont l'idée générale est d'afficher élégamment des informations utiles uniquement quand le contexte le demande.

De nombreuses nouveauté sont disponibles depuis la dernière linuxfrisation, notamment :

  • la gestion de zsh en plus de bash ;
  • des commandes pour désactiver temporairement le prompt (et revenir à l'ancien ou carrément tout désactiver) ;
  • de quoi configurer facilement le prompt dans des fichiers à soi (couleurs, thèmes, options) ;
  • la désactivation optionnelle de chaque fonctionnalité du prompt (même à chaud) ;
  • une couleur indiquant si le forwarding X est actif ;
  • gestion du chroot sous Debian et du virtualenv sous Python ;
  • la réplication du prompt dans le titre de la fenêtre ;
  • la gestion de Fossil (le gestionnaire de version) ;
  • la possibilité de masquer l'utilisateur, si c'est celui qui est loggué ;
  • l'utilisation du builtin DIRTRIM, sous bash, s'il est installé ;
  • un fichier .bashrc à utiliser pour l'installation ;
  • plein (mais alors plein) de bugs en moins et de vitesse en plus !

Liquid Prompt 1.9

Posté par (page perso) . Édité par Benoît Sibaud, Nÿco et Nils Ratusznik. Modéré par patrick_g. Licence CC by-sa.
39
14
nov.
2014
Ligne de commande

Le Liquid Prompt est un prompt fluide affichant de manière limpide des informations utiles là où vous les verrez : le prompt de votre shell bash ou zsh. Le liquidprompt était déjà bien rempli de fonctionnalités, mais celles-ci ont été stabilisées et leurs performances améliorées durant les mois écoulés. Il était temps de sortir une nouvelle version officiellement stable.

Pour les détails de cette version surtout composée de correctifs (indicateurs de batterie, température, charge processeur, nom de machine, gestion de code source, chemin, prompt, horloge, etc.) ; les curieux sont invités à consulter le fichier CHANGES : Battery indicator, Temperature indicator, CPU load, Hostname, VCS (Git, Fossil, Subversion, Bazar, Mercurial), Analog clock, etc.

Je profite de cette dépêche pour remercier chaudement les 15 contributeurs qui par leurs patchs ont contribué à cette version : Anthony Gelibert, Frédéric Mahé, Panayiotis Kkolos, Étienne Deparis, François Schmidts, Linus Wallgren, Alexander Belaev, Bartosz Janda, Brett McBride, Chase Colman, Cosmin L. Neagu, Matthew Micene, Vincent Lara, Wilson Maravilha et Yannack. Mais aussi tous ceux qui ont signalés des bogues ou proposé des patchs refusés ou en attente.