Après près de trois ans de développement, une nouvelle version de l'interpréteur de commandes GNU Bash 5.3, utilisé par défaut dans la plupart des distributions Linux, a été publiée. Parallèlement, la bibliothèque readline 8.3, utilisée dans bash pour organiser l'édition en ligne de commande, a été publiée.
Les principales améliorations comprennent :
- Les nouvelles formes de substitution de commandes « ${commande;} » et « ${|commande;} » ont été implémentées, permettant d'intercepter la sortie de la commande sans créer de processus enfant distinct et sans utiliser de tubes anonymes. Les résultats de l'exécution de la commande sont renvoyés sous forme de substitution ou écrits dans la variable REPLY.
- Une nouvelle variable GLOBSORT a été ajoutée. Elle définit la méthode de tri lors de l'ajout d'un chemin de fichier. Par exemple, vous pouvez choisir de trier par nom (GLOBSORT=name), taille (GLOBSORT=size) ou date de modification (GLOBSORT=mtime), et également définir un ordre de tri direct (du plus petit au plus grand) ou inverse (du plus grand au plus petit) (par exemple, avec « GLOBSORT=-size », les fichiers les plus volumineux seront affichés en premier).
- La commande intégrée « compgen » dispose désormais d'une option « -V varname » pour enregistrer les ajouts générés dans une variable au lieu de les afficher sur la sortie standard.
- L'option « -E » a été ajoutée à la commande intégrée « read », qui utilise la bibliothèque readline avec les règles de saisie semi-automatique de construction bash lors de la saisie de données.
- La commande intégrée « source » dispose désormais d'une option « -p PATH » qui permet de remplacer la liste de recherche dans les chemins de fichiers (la valeur spécifiée est utilisée à la place de la variable $PATH).
- Le code source a été converti pour utiliser la norme C23. La possibilité de construire des compilateurs en mode « K&R C » (le style correspondant à la description du langage C dans l'ouvrage « The C Programming Language » de Kernighan et Ritchie) a été abandonnée.
- La commande intégrée « umask » est entièrement conforme aux spécifications POSIX.
- Ajout d'une commande chargeable « kv » qui génère un tableau associatif basé sur un ensemble de données au format clé-valeur.
- Ajout de la commande chargeable « strptime » qui convertit la représentation textuelle de la date et de l'heure en heure d'époque (nombre de secondes depuis le 1er janvier 1970).
- Ajout d'une commande chargeable « fltexpr » qui permet des opérations arithmétiques à virgule flottante similaires à la commande let.
- Ajout de la variable BASH_MONOSECONDS définie dynamiquement, qui contient la valeur actuelle de l'horloge monotone du système, qui augmente continuellement, même lorsque l'heure passe à la valeur passée.
- En mode POSIX, les comparaisons de chaînes dans la commande « test » utilisant les opérateurs « < » et « > » sont désormais effectuées en tenant compte des paramètres régionaux actuels.
- La commande « bind -x » permet de séparer la clé et la commande à appeler par un espace, à condition que la séquence soit entourée de guillemets doubles.
- La nouvelle version de Readline propose l'option « search-ignore-case » pour une recherche insensible à la casse dans l'historique. La commande « export-completions » a été ajoutée pour exporter les complétions de mots afin de les traiter dans d'autres processus. La commande « execute-named-command » a été ajoutée pour exécuter une commande dont le nom est obtenu à partir du flux d'entrée standard.
Source: opennet.ru
