bash

Lundi 17 novembre 2008


Je pense qu'avaler le man de bash n'est pas un truc humain. La personne qui vous soutient l'avoir fait est probablement un droïde (qui sont également les seuls capables de replier un carte michelin dans le bon sens du premier coup). Du coup, on l'avale par petit coup, suivant les intérêts du moment.

En parcourant ladite page de man aujourd'hui je suis tombé sur le chapitre des «braces expansion». Il est dit la chose suivante :

$ echo a{b,c,d}e
abe ace ade

Sur le coup, on se dit «ah, tient, c'est joli». La chose devient vraiment utile quand on lit ça:

$ mkdir /var/www/{plop1,plop2,plop3}
$ touch /var/www/plop{1,2,3}/index.php

(J'ai modifié l'exemple du touch suite à la remarque de ph7, merci à lui).

Merveilleux exemple tiré de la continuation de Advancing in the Bash Shell (merci à Noel pour le lien)

$ ls /usr/{,local/}{,s}bin/jojo

Remarquez les expansions vides et imbriquées.

Bonne journée à tous.
Par greg
Ecrire un commentaire - Voir les 6 commentaires - Recommander
Lundi 15 septembre 2008
«Ceux qui n'ont pas de tête auront des bras» ... après des années de façonnage de script, je découvre à ma grande joie le secret des développeurs du projet GNU pour nous faire des beaux scripts portables et professionels, un véritable couteau suisse : GNU shtool. Évidemment un paquet Debian / Ubuntu existe et met ce concentré de script à portée d'apt-get.

Voici ce que la bête sait faire nativement :

«echo» commande "echo" améliorée permettant d'intégrer facilement des effets, des dates et autres infos
«mdate» formatte la date de modification d'un fichier
«table» formatte des tableaux des données dans un terminal
«prop» affiche des indicateurs de processing (genre une barre de . qui indique que le script travaille)
«move» pareil que mv mais permet de renommer des fichiers par paquets
«install» permet d'installer des fichiers dans un endroit du disque (cela permet la portabilité des scripts)
«mkdir» est un mkdir amélioré et permet de fixer le propriétaire, les droits etc etc
«ln» est un ln amélioré qui calcule la distance la plus courte entre 2 chemins absolus (nice !)
«mkshadow» permet de recréer une arborescence à l'aide de liens
«fixperm» permet d'uniformiser les droits sur les fichiers dans une arborescence
«rotate» permet d'effectuer des rotations de fichiers journaux avec moulte options sympatiques (nice !)
«tarball» permet de créer des archives en respectant les 4 règles d'une bonne archive (man 1 shtool-tarball)
«subst» permet d'éviter d'avoir à appeler perl pour substituer des chaines dans plein de fichiers
«platform»  formatte les éléments qui identifient un système d'exploitation unix (OS, famille etc...)
«arx» ar amélioré
«slo» et «scpp» ne sont utiles qu'aux développeurs en C++
«version» permet de formatter des numéros de version dans des fichiers
«path» permet de récupérer un exécutable par ordre de préférence dans le $PATH

Un grand merci à Noël Guilbert un des talentueux développeurs de Sensio sans qui je serais moins éclairé ce soir.

Par greg
Ecrire un commentaire - Voir les 0 commentaires - Recommander
Jeudi 8 mai 2008
Bonjour à tous, une brève de comptoir aujourd'hui. Une fois que vous aurez ces raccourcis dans les doigts vous ne pourrez plus vous en passer. En général la combinaison ALT est utilisée pour les actions sur les mots d'une ligne et CTRL pour les commandes globales.
Je vous ai mis les indispensables et les quelques coups de coeurs que j'ai eu en écrivant cet article.

  • Déplacements :
    • ctrl a : début de ligne
    • ctrl e (end) : fin de ligne
    • alt f (forward) : avance d'un mot (<-- pratique)
    • alt b (backward) : recule d'un mot (<-- pratique)
    • ctrl x ctrl x (x switch) : alterne le curser avec son ancienne position (<-- coup de coeur)
  • Couper coller
    • alt backspace : couper le mot avant
    • alt d : couper le mot après
    • ctrl k : coupe du curser à la fin de la ligne
    • ctrl u : coupe du curser au début de la ligne (<--pratique quand vous voulez annuler la saisie d'un mot de passe par exemple)
    • ctrl y (yank) : coller
  • historique
    • flèche haut : remonter d'une ligne dans l'historique (ctrl p (previous))
    • flèche bas : descendre d'une ligne dans l'historique (ctrl n (next))
    • (vous pouvez vous ballader dans l'historique avec les flèches sans perdre votre saisie en cours...)
    • crtl r (research) : chercher les occurences d'une chaine de caractère dans l'historique (ctrl r pour passer à l'occurence d'après ctrl s pour revenir à l'occurence d'avant). (<-- indispensable)
    • ctrl o : valide la ligne en cours et vous replace sur la ligne d'après dans l'historique (utile pour rejouer des pans de votre historique de shell avec ctrl r)
  • Éditer une ligne de commandes
    • ctrl x ctrl e : édite la ligne courante dans Vi (variable $EDITOR du shell) (<-- coup de coeur)
    • alt u : transforme le mot courant en majuscules à partir du curser et avance d'un mot
    • alt l : transforme le mot courant en minuscules à partir du curser et avance d'un mot
    • alt c : met la lettre sous le curser en majuscule et avance d'un mot
    • alt r : annule les changements et remet la ligne telle qu'elle était dans l'historique (<-- pratique)
    • tab : complète le mot en cours suivant le contexte (<-- indispensable)
Pour ceux que ça intéresse, la page de man de bash est évidemment LA référence pour ce genre de choses, si vous voulez atteindre directement la section de ces raccourcis, cherchez la chaine «beginning-of-line».

Par greg
Ecrire un commentaire - Voir les 3 commentaires - Recommander
 
Créer un blog sur over-blog.com - Contact - C.G.U. - Rémunération en droits d'auteur - Signaler un abus - Articles les plus commentés