shell

...now browsing by tag

 
 

Alias et paramètres en ligne de commande

jeudi, août 6th, 2009

Voilà la solution pour faire un alias qui prenne en compte un paramètre : il faut savoir qu’un alias ne connait pas les paramètres qu’on lui passe. Un alias c’est vraiment, physiquement parlant, un « remplacer » de l’ordre que vous tapez.

Donc utiliser alias qui prendrait en compte un argument qu’on lui passe ?
C’est bien simple : c’est impossible. Mais on peut très facilement contourner cela.

Exemple : je développe en C, je veux tout le temps :

  1. reformatter le fichier C avant de l’éditer avec la ligne :
    indent -kr -nut {nom du fichier}
  2. afficher ce fichier avec vim :
    vim {nom du fichier}

La ligne de commande est donc toujours :
indent -kr -nut {nom du fichier} && vim {nom du fichier}

J’ai pensé faire un alias qui ressemblerait à cela :
alias vimi="indent -kr -nut $1 && vim $1"
Bien évidemment ça ne fonctionnera jamais.

Alors j’ai fait un tout petit script qui fonctionne très bien :
#!/bin/bash
case $# in
1) indent -kr -nut $1 && vim $1 ;;
*) echo "$0 {nom de fichier source .c / .h} ";;
esac

Et tout fonctionne !
Pour la note : indent -kr -nut {nom de fichier source .c / .h} signifie « indenter le fichier C selon les concepts de Kernighan & Ritchie, et ne pas mettre de tabulations, mais des espaces ». Pourquoi cela ? J’ai développé un module Apache, et pour le faire proprement, j’ai suivi leurs directives : Kernighan & Ritchie, et ne pas mettre de tabulations, mais des espaces, afin de me forcer à être habitué à lire du code d’une certaine façon. Ce type d’indentation n’est pas mon préféré, mais au moins, si je lis du code source C qui n’est pas fait par moi, je m’y retrouve plus facilement.

Linux : utilisation de screen (mémo simple)

lundi, avril 13th, 2009

screen sert à ouvrir plusieurs sessions simultanément, et le tout dans une seule « boîte » que vous pouvez « fermer » et « réouvrir » à volonté à partir de n’importe quel ordinateur. Toutes vos fenêtres de ligne de commandes seront réouvertes !
Très simple à utiliser.

Résumé des raccourcis dont je me sers en permanence dans screen (notez screen fait la différence minuscules/majuscules, donc si c’est en minuscules, il faut taper l’ordre en minuscules) :

  • <contrôle> "a" <contrôle> "a"  : revenir à la fenêtre précédente ;
  • <contrôle> "a" <contrôle> "n" , "n" signifie "next" : aller à la fenêtre suivante.
  • <contrôle> "a" <contrôle> "c" , "c" signifie "create" : créer une nouvelle session screen ;
  • <contrôle> "a" <contrôle> "?" , "?" signifie "aidez moi !!" : afficher les ordres disponibles sous screen.
  • L’aide sous screen : .

Explications simplifiées de screen

Comment le lancer ? Tapez screen dans la ligne de commande. Et là, immédiatement, une nouvelle ligne de commande s’ouvre. Ce n’est pas réellement une « nouvelle ligne de commande » ! C’est une fenêtre « dans » screen.

Vous pouvez ouvrir autant de fenêtres « dans » screen que vous voulez en tapant le raccourci clavier <contrôle> "a" <contrôle> "c" , "c" signifie "create" ("a" et "c" en minuscules, c’est important).

Vous voulez partir et garder toutes vos fenêtres en l’état pour les ré-ouvrir ailleurs ? Tapez le raccourci clavier <contrôle> "a" <contrôle> "d" , "d" signifie "detach" ("a" et "d" en minuscules, c’est important).

Une fois screen « détaché », vous changez d’ordinateur et vous voulez ré-ouvrir vos fenêtres ? Tapez en ligne de commande screen -r, "r" signifie "recover" ("r" en minuscules, c’est important).

Astuces (très) pratiques

Zut ! Internet s’est coupé et vous avez perdu toutes vos fenêtres screen. Pas de panique ! Tapez screen -r et là vous allez voir quelque chose comme ça :
There is a screen on:
4653.pts-0.nomdevotreordi (Detached)

Il vous suffit de taper l’ordre :

screen -r olivier/4653.pts-0.nomdevotreordi

Et là, miracle, tout est revenu comme avant la coupure Internet ! Notez bien que "olivier" dans l’ordre précédent, c’est le nom de l’utilisateur qui a ouvert screen. Si vous avez ouvert screen en tant que root l’ordre sera

screen -r root/4653.pts-0. nomdevotreordi.

Zut II ! Vous êtes parti de votre travail, et vous avez oublié de « détacher » screen, donc tout est toujours ouvert à votre travail, pourtant vous voulez vérifier quelque chose de chez vous. Pas de panique (bis) ! Tapez screen -D -r.
("D" signifie « forcer à détacher la session screen » où qu’elle soit, avant d’essayer de ré-ouvrir la session screen !)

NB : ce mémo est destiné à utiliser immédiatement screen pour les débutants, et les explications sont simplifiées à l’extrême, cela ne correspond pas exactement à la réalité, mais ça aide grandement ceux qui n’y connaissent rien ! Surtout n’hésitez pas à commenter et me dire ce qu’il faudrait que je change pour faciliter la compréhension de cet outil.