HAL: Partie 2 Mes Alias préférés

Gazette Linux n°184 — mars 2011

par Henry Grebler (Copyright © 2011)

mehdi laakel (tous droits réservés) mehdi POINT laakel CHEZ gmail POINT com

relecture


J'ai commencé ces séries avec HAL: Partie 1 Préliminaires. Je prévois de discuter des scripts et fonctions dans d'autres articles.

Si vous téléchargez mes premières HAL de ces articles, vous allez être noyés dans les 171 alias, beaucoup d'entre eux sont obsolètes et oublies depuis longtemps. Je suis un collectionneur: vous ne savez jamais quand quelque chose pourrait se révéler utile.

Parmi les 171 alias, vous pouvez rejeter n'importe quoi avec "cd " a l’intérieur. Plus de cd n'importe ou (enfin, presque jamais). Ca enlève 30 alias.

Je vais parler de celui-ci cependant:

	alias a='cd'

Ceci exemplifie le point de HAL. J'avais oublié que c'était là. Je ne me souviens plus quand je l'ai créé; Je peux confirmer qu'il a existé avant novembre 1993 (parce que j'utilise le RCS).

Sur les ordinateurs principaux, nous "avons attachés" à un répertoire. La commande peut être abrégée à "a". Quand j'ai rejoint Optimisation, l'environnement principal de l'entreprise a été le premier. Une certaine forme de *n*x n'est venue que plus tard sous la forme de SunOS. C'était l'un des alias qui ont facilité la transition de premier á SunOs, et m'a permis de commuter dans les deux sens sans problème.

C'est devenu superflus quand j'ai découvert pushd (également avant Novembre 1993), alias á sa première lettre, et commencé á l'utiliser de préférence á cd.

Les Alias dans cette catégorie incluent

	alias del='rm'
	alias dir='ls -la'

Dans tous les cas, les alias ont agi comme des échafaudages. Comme je me développais a l'aise avec mon nouvel environnement, j'ai graduellement écarté ces options.

		* * * * * * * * * * * * *

Avant de continuer, je vais faire une remarque préliminaire sur les alias. J'ai une fonction (datant peut être de Mars 1991) appelée "alias" qui est définie dans $HOME/bash/csh-compat. Normalement, vous devez écrire

	alias name=value

Ma fonction me permet d'écrire

	alias name value

C'est pourquoi dans $HOME/.ENV./.cshrc_bash vous allez voir tous les alias définis sans l'utilisation du signe Égal (=).

J'ai commencé à utiliser c-shell avant que j'aie découvert bash (qui est lancée en 1989 environ). Dans c-shell, la syntaxe des alias n'utilise pas le signe d'égalité:

	alias name wordlist

Ma fonction a facilité la transition de c-shell à bash.

		* * * * * * * * * * * * *
	alias cad='cat > /dev/null'

cad est un grand alias. Il est réellement beaucoup plus qu'un alias. J'ai habituellement au moins un xterm avec le "cad" dans la barre de titre. L’icône de Xterm est placée près de la partie supérieure droite de mon écran à côté de l'horloge dans le coin. dès que je lance cet xterm, J'entre l'alias cad et laisse juste la fenêtre en attente.

Je l'utilise comme un bloc-notes à usage général ou presse-papiers. Si je veux me rappeler de quelque chose pour un peu de temps, je le colle là.

Parfois je veux choisir plusieurs zones, disons, par exemple à partir d'une fenêtre de navigateur et la coller quelque part autrement, peut-être dans une autre fenêtre du navigateur. Il est souvent plus commode d'avoir la première fenêtre de navigateur et la fenêtre de cad ouvertes côte à côte et copier-coller a partir de la première fenêtre de navigateur dans la fenêtre de cad; puis ouvrir la fenêtre de destination et copier- coller dans l'autre direction.

Cela est extrêmement confortable dans mon environnement: J'ai focus-follows-mouse donc je n'ai pas a cliquer pour changer de fenêtre; la fenêtre qui a le focus ne doit pas être au dessus; l'acte de sélection provoque la sélection a copier (Ctrl-C pas nécessaire); coller est simplement Click-Milieu (Ctrl-V pas nécessaire). Donc, c'est juste glisser, déplacer la souris, cliquer, revenir en arrière; glisser, déplacer la souris, cliquer, déplacer retour.

J'utilise les fenêtres cad des centaines de fois par jour. Cela signifie que je tape très peu. C'est une bonne chose parce que je vis dans un monde de commande-ligne et je ne suis pas un grand dactylo. Oui, je suis feignant; pas question. Mais, plus important encore, copier-coller améliore la précision. Les ordinateurs sont plus pédant que les humains; vous ne pouvez pas partir avec, "Vous savez ce que je veux dire." Et ils sont impitoyables. Mieux vaut éviter les erreurs - surtout quand c'est facile d'en faire.

Finalement, j'utilise parfois l'alias cad dans n'importe quelle fenêtre pour stocker temporairement du texte. Il est difficile de penser a une raison autre au dessus de ma tête; mais lorsque l'outil est la, il trouve souvent utilisation.

* * * * * * * * * * * * *

	alias acroread='acroread -geometry 800x898+152-0'

Ceci est un exemple d'un alias par inadvertance . La façon dont je l'ai définie, mon invocation habituelle de acroread appellera l'alias. Je dois faire quelque chose de spécial pour ne pas appeler l'alias.

Je ne me souviens pas pourquoi j'ai définis cet alias. Ma meilleure supposition est que j’étais ennuyé avec les valeurs proposées par acroread. J'ai probablement dupé autour avec différents paramètres avant l'arrangement sur ces derniers. Je peux juste dire qu'il doit faire quelque chose convenablement, parce que je ne peux pas me rappeler être ennuyé avec la fenêtre de acroread quand elle sort.

Bien sûr, il est toujours possible que cet alias ait survécu à son utilité; que acroread se comporte différemment maintenant. Après tout, j'ai eu cet alias pendant plus de 10 ans.

* * * * * * * * * * * * *

	alias cp='cp -ip'

un autre alias négligent. L'option "p" conserve les informations inode (date, autorisations, propriété). L'option "i" m'empêche d'écraser un fichier par inadvertance.

En plus avec l'option "i", j'utilise aussi l'option bash de noclobber de sorte que la redirection de sortie (>) ne peut pas écraser un fichier existant.

Je m'appuie aussi sur les dates dans l'inode. Si je copie un fichier, je n'ai pas changé son contenu. Je veux que la date de défaut reflète ce fait. La date "c" (ls -ltc) va indiquer quand j'ai copié le fichier; la date "t"(ls -lt) reflétera date des derniers contenus modifiés.

Aussi
	alias mv='mv -i'
		* * * * * * * * * * * * *
	alias ed='emacs -nw --basic-display --unibyte'

Un de mes alias de base. Ajustements dans presque toutes les catégories. Je pense que "ed" était le nom de l'éditeur en premier. De plus, cet alias m'aide a me protéger de GNU. (Presque) chaque nouvelle version de emacs sort avec certaines incompatibilités par rapport a la version précédente. A mon avis, FSF a beaucoup de choses a se reprocher. Je ne me répéterai pas: voir Dix choses que je n'aime pas sur Linux.

Mes commentaires modifiés récemment:

	# 15 Janvier 2010 Ne pas laisser emacs se coloriser.
		* * * * * * * * * * * * *
	alias gcat='gunzip -vdc'
	alias gunzip='gzip -vd'

Juste par commodité. Je prefere "gcat" à "gzcat".

		* * * * * * * * * * * * *
	alias h='history'

enregistres beaucoup d'écriture en se référant a l'historique de bash.

		* * * * * * * * * * * * *
	alias hmg='more /home/henryg/hmg/help'

Longtemps oublié. Je devine qu'il était une fois, j'ai eu un seul fichier d'aide! Wouah! Quelle découverte! Parfois cette archéologie paye des dividendes. C'est de là ou tout a commencé. Regardez a la première ligne:

	help - a un fichier qui m'aide avec des choses que j'ai oublié

Il y a aussi help2 a travers help5. "Waddya know?"

		* * * * * * * * * * * * *
	alias lok='sleep 1;xset s activate'

J'ai pris l'habitude de l'utiliser a chaque fois que je quitte mon ordinateur. Ca rend l'écran noir.

		* * * * * * * * * * * * *
	alias mph='less /home/henryg/hmg/phone'

J'utilise celle lá pour consulter mon répertoire personnel de téléphone. Il y a d'autres informations, pas que des numéros de téléphone.

		* * * * * * * * * * * * *
	alias psa='/bin/ps auxw'

Indépendamment de son but évident, c'est un autre sorte d'alias. Il n'est pas défini dans $HOME/.ENV./.cshrc_bash, mais plutôt dans $HOME/.ENV./.shells_rc.* où l'astérisque représente l'un des possible plate-formes sur lesquels j'ai travaillé - parce que la commande ps est rarement la même sur n'importe des deux plate-formes. Jusqu'a présent, j'ai ces plate-forme: AIX, HP-UX, Linux, SCO_SV, SunOS4, SunOS5.

Ben m'as rappelé que je dois également avoir

	alias psag 'psa | grep -v grep | grep'

Et maintenant j'ai!

		* * * * * * * * * * * * *
	alias rlok='rlog -R -L RCS/*,v'
	alias rloka='rlog -R -L RCS/*,v RCS/.*,v'

Répondez a la question, "Quels sont les fichiers verrouillés dans RCS?"

		* * * * * * * * * * * * *
	alias rs='rsync -urlptog'

ça devrait être

	alias rs='rsync -urlptogH'

Les options essentielles de rsync.

		* * * * * * * * * * * * *

Pour FreeBSD seulement:

	alias seq='gseq'

Sur Linux il est appelé seq; sur FreeBSD gseq.

		* * * * * * * * * * * * *
	alias su='BSD_su'

su est l'une des commandes les plus idiosyncrasies - un peu comme la commande ps (ci-dessus). Parce que je suis un être humain et incompatible (peut être parce que l'alias remonte a plus loin), c'est défini dans ~/.bashrc - contrairement à ps.

		* * * * * * * * * * * * *
	alias w='(pwd; /bin/pwd ) | uniq'

La notion de Bash où vous êtes parfois différé de l'endroit ou vous êtes vraiment si il y a des liens symboliques impliqués. Si les deux pwds se correspondent, seul une entrée est imprimée. L'utilisation de "w" pour "Où je suis?" vient de DEC ou du premier.

Je viens juste de découvrir que je l'ai défini deux fois - et inconsciemment. Voila pourquoi:

#  Henry Grebler    31 Jul 96  bash (and only bash) sometimes has a different
#                               answer for pwd. Print both if different.

Le fichier .cshrc_bash est prévu pour être partagé entre csh et bash.

J'ai juste changé cet alias en

	alias w '(pwd; /bin/pwd ) | uniq; df -h | tail -1'

Je veux souvent aussi savoir si je suis sur un disque local ou pas.

		* * * * * * * * * * * * *
        alias xd       "date '+%a %d %b %Y %H:%M:%S %z %Z';\
                        date '+%A %d %B %Y %H:%M:%S %z %Z';\
                        date '+%a %e %b %Y %H:%M:%S %z %Z';\
                        date '+%A %e %B %Y %H:%M:%S %z %Z';\
                        date '+%Y%b%d.%H:%M:%S';
                        date '+%d %b %y'"

Cela semble insensé jusqu'a ce que vous voyez sa sortie:

Tue 08 Feb 2011 10:47:00 +1100 EST
Tuesday 08 February 2011 10:47:00 +1100 EST
Tue  8 Feb 2011 10:47:00 +1100 EST
Tuesday  8 February 2011 10:47:00 +1100 EST
2011Feb08.10:47:00
08 Feb 11

A mon avis, il n'y a pas de format de date plus inutile que la valeur par défaut pour Linux:

	date
	Tue Feb  8 10:47:32 EST 2011

Qui utilise ce format? Pourquoi?

Dans cet alias j'ai un modèle pour chaque forme de date a laquelle je suis susceptible de vouloir: a la fois complet et abrégé du nom du jour and du mois; date du mois avec redirection des espaces et redirection des zéro. La deuxième forme est la dernière pour l'ajout ds noms de fichiers, e.g.

	cp /var/log/xxx /var/log/xxx.2011Feb08

La dernière forme est pour le changement des entrées log a la tête des scripts shell et le code du C:

	#  12 Nov 01  Henry Grebler    First cut.                       sh
	   12 Nov 99  Henry Grebler    Start of initial coding.         c

Mais je commence a préférer 4 chiffres pour l'année pour éviter toute possibilité d'ambiguité:

	#  12 Nov 2011  Henry Grebler    First cut.
		* * * * * * * * * * * * *

Des Alias qui appellent des scripts

C'est sans doute inutile: Je pourrais simplement utiliser un lien symbolique.

Je discuterais des scripts shell scripts dans un autre article.

J'ai écrit ces derniers sous la forme qu'elles apparaissent dans $HOME/.ENV./.cshrc_bash parce qu'ils maintiennent les variables d'environnement.

        alias cleanup $HOME/scripts/cleanup.sh
	alias diff $HOME/scripts/diff.sh
	alias lns '$HOME/scripts/lns.sh'
	sol='/home/henryg/scripts/sol.sh'
	alias tcg='/home/henryg/scripts/tarcompressuuencode.sh +u -g'
	alias tcu='/home/henryg/scripts/tarcompressuuencode.sh'
	alias uue='/home/henryg/scripts/uuencode.sh'
	alias uut='/home/henryg/scripts/uudecodeuncompresstar.sh'
	alias x='/home/henryg/scripts/expr.sh'
	alias xr='/home/henryg/scripts/xrenamewindow.sh'
	alias xt='/home/henryg/scripts/xterm.sh'

Résumé

J'ai essayé de me limiter a des alias qui sont de manière quelconque instructifs.

Si quelqu'un est intéressé par tout ça, j'ai une recommandation. Ne pas essayer d'étendre votre répertoire avec trop d'alias (ou quelque chose d'autre) en une seule fois. Ca peut être extrêmement difficile, et l'exercice peut finir dans la déconvenue.

Les alias peuvent être classés par catégorie. Clairement, beaucoup sont obsolètes, car ce chemin de la mémoire de valse vers le bas est indiqué. Ils ont pu être très important pendant un moment, puis sont tombés dans la désuétude.

Mais c'est vrai pour beaucoup de choses dans la vie. A la maison, nous avons beaucoup de Thomas Tank Engine vidéos. il fut un temps quand mon jeune fils les regardait constamment. Maintenant, à 22 ans, pas trop.

D'autre part, certains deviennent plus importants, donner lieu a des variations qui parfais dépassent les capacités des alias. Ils deviennent des fonctions ou des scripts shell.

Parfois, je crée un alias et peu après me demande comment j'ai pu m'en passer sans.

J'ai montré (Ce que importe vraiment ou le comptage de l'article) que je ne peux presque pas vivre sans ces deux 2, 'p' et 'bdx'. Certains ne sont pas essentiels, mais sont encore fréquemment utilisés:

	cad cp mv ed h lok mph psa rs su w xd

Certains sont seulement appelés occasionnellement.

La dernière catégorie des alias qui appellent les scripts. Je discuterais sur ça dans un article sur les scripts.


Henry Grebler

Henry a passé ses journées a travailler avec des ordinateurs, la plupart du temps avec les fabricants d'ordinateurs ou les développeurs de logiciels. Son expérience en ordinateur comprend au début des reliques comme les cartes perforées, bandes de papiers et rubans magnétique. C'est son secret sombre qui a payé pour faire ce genre de choses et versé pour être autorisé a le faire. Il suffit juste de ne pas le dire a l'un de ses employeurs.


Adaptation française de la Gazette Linux

L'adaptation française de ce document a été réalisée dans le cadre du Projet de traduction de la Gazette Linux

Cet article est publié selon les termes de la Open Publication License. La Linux Gazette n'est ni produite, ni sponsorisée, ni avalisée par notre hébergeur principal, SSC, Inc.

Vous pourrez lire d'autres articles traduits et en apprendre plus sur ce projet en visitant notre site http://www.traduc.org/Gazette_Linux

Si vous souhaitez apporter votre contribution, n'hésitez pas à nous rejoindre, nous serons heureux de vous accueillir.