HAL: Partie 4 de Scripts

Gazette Linux n°187 — juillet 2011

Sabrine Affes

Adaptation française  

Prénom Nom du relecteur

Relecture de la version française  

Article paru dans le n°187 de la Gazette Linux de juillet 2011.

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.


Table des matières

Les Alias qu’invoquent les Scripts
Les scripts qui ont résisté à l’épreuve du temps
Meilleur du reste
C’est elle
À propos de l’auteur

C’est la dernière partie des series d’articles sur la manière dont j’opère.

Voilà une liste de toutes les series d’articles:

Dans HAL: Partie 1 Préliminaires, Il y avait un lien qui permettrait au lecteur de télécharger mon HAL. Vous y trouverez environ 123 scripts.

Ici sont les plus intéressants.

Les Alias qu’invoquent les Scripts

Je vais commencer avec les scripts que j’ai mentionné dans « HAL — Mes Alias favoris » dans la section « Alias qui appeler Scripts ».

nettoyage alias $HOME/scripts/nettoyage.sh

Ceci n’est valable que pour les utilisateurs de emacs. Par défaut, lors de la modification d’un fichier, emacs conserve une copie du fichier original dans un fichier dont le nom a une fin tilde (~). Ils auront une valeur attachée tant que le programme est en cours de developpement, soit pour un script ou un article. Mais une fois terminée, ils seront confondu, surtout si vous gardez une sorte de contrôle de révision (ce que je fais).

Ce script trouve tous emacs ces fichiers de sauvegarde dans l’arbre enraciné au répertoire de travail actuel, répertorie et offre à supprimer.

alias diff $HOME/scripts/diff.sh

Ce script peut-être considéré comme étant en relation avec le script précédent. Avec plus d’arguments, il se comporte comme un diff régulier. S’il y a un seul argument, il compare ce fichier avec sa sauvegarde d’emacs . Ainsi, par exemple, diff HAL.Scripts (le ficher que je suis entrain de créer) deviendrait diff HAL.Scripts~HAL.Script.

Maintenant en regardant le script, je grimace : il semble donc mal écrit. Et il semble qu’il aurait mieux effectuer une conversion de type fonction. Mais il a évolué au fil du temps, peut-être que je devrais être plus compatissants.

alias lns ’$HOME/scripts/lns.sh’

Comme ln -s, mais, si la cible est un lien symbolique, supprimer le tout d’abord. Si c’est un fichier, proposer de le supprimer.

Idéal pour remplacer un lien symbolique

alias tcg=’/home/henryg/scripts/tarcompressuuencode.sh +u -g’
alias tcu=’/home/henryg/scripts/tarcompressuuencode.sh’
alias uut=’/home/henryg/scripts/uudecodeuncompresstar.sh’

Le nom du script fournit des indices sur ses origines. J'ai utilisé le courrier électronique depuis au moins 1993. Dans les premiers jours, la maniére typique d’envoyer des arborescences de répertoires a tar-compress-uuencode. C'est ce que fait ce script. Au fil des années,gzipa remplacé la compression et pourtant je ne l’utilise pas uuencode(sauf quand je m’envoyais à moi-même).

tcu c’est ce que j’ai utilisé dans un premier temps; tcg est ce que j’utiliserai régulièrement maintenant.

uut est utilisé dans l’autre sens. Je suppose que, ces jours-ci, je l’utiliserais seulement des courriers à ma destination. Autres capacités connexes sont fournies par les fonctions gttv et gtx (à voir « HAL: Partie 3 Fonctions »).

alias x=’/home/henryg/scripts/expr.sh’

L’x alias (belle et courte) appelle expr.sh,ma calculatrice de Mickey Mouse. Pour la plupart de mes calculs, cela suffit. Je peux entrer astérisque (« * ») ou minusculex pour la multiplication. Je peux utiliser des parenthèses pour les grouper tant que je cite l’expression.

Par exemple:

x ’(2 + 3)/ 7’
0.714286

A l’intérieur des parenthèse, elle appelleawk.

alias xr=’/home/henryg/scripts/xrenamewindow.sh’
alias xt=’/home/henryg/scripts/xterm.sh’

Je suis en cours d’exécution 34 xterms réparties sur 6 bureaux virtuels. Par défaut, ils auraient le texte« xterm » à l’ouverture tous seraient identiques, et ont tous le texte « xterm » près du bas de l’icône. Comment trouver celui que je veux ?

Lorsque je commence unxterm, j’utilise l’xt alias suivies d’une chaine spécifiant le texte que je veux voir dans la barre de titre et sur l’icône.(Je peux choisir d’avoir un texte différent par icône, mais en général je n’aime pas.)

Ce texte est utile pour moi et m’aide à garder une trace de tous mes xtream. La, en ce moment, je travaille à« ECRIT » dans la barre de titre. Il y a un autre droit près de lui avec « ECRIRT2 ». Il s’agit de ma fenêtre principale pour la création de la lecture instantanée. L’autre est une « assistante » fenêtre; par exemple, je l’utilise pour rechercher ce que j’ai écrit dans un article précédent.

Ces deux fenêtres sont ici sur le long terme. J’ai ouvert« ECRITURE » dernier jour de noël, peu de temps après j’ai redémarré 23 Décembre 2010 (que j’écris, est aujourd’hui le 28 Février 2011). Je ne sais pas pourquoi il devrait être autrement, mais j’ai seulement ouvert« ECRIRE » 3 Janvier 2011.

Souvent je travaille sur quelque chose en peu de temps, qand j’ai fini, si je veux recycler le xterm, je pourrais décider de lui donner une chaine de texte différente dans la barre de titre. Pour cela j’utilisexr.

Les scripts qui ont résisté à l’épreuve du temps

Certains de ces scripts affichent mon ignorance ou ma naiveté au moment ou j’ai écrit ce qui prouve, encore une fois, un script ne doit pas être brillant ou parfait pour être efficace et utile.

Si quelqu’un me fournit une meilleure façon d’atteindre le même résultat, je vais envisager de remplacer le script correspondant.

Les dates ci-dessous se réfèrent à la première fois que j’ai écrit le script. Beaucoup ont été modifiées au fil du temps.

1991 expire.sh - déplacer un fichier à l’expiration répertoire

De nos jours, il serait juste une fonction.

L’idée de base est que certaines choses (fichiers, répertoires) se ressemblent. Vous avez fini avec eux, mais vous n’êtes pas tout à fait sûr. Déplacez-les vers la fin répertoire. De temps en temps, lorsque vous visitez le répertoire expiration, si elles sont toujours là, supprimer-les. Je suppose que c’est un peu Trash comme sur un système Microsoft Windows.

Utiliser rarement.

1992 howWide - affiche le nombre de caractères dans la plus grande ligne dans le fichier 

Je ne peux pas vous dire combien de fois j’ai utilisé ce script. Il détermine souvent si je choisis d’imprimer un fichier dans le paysage plutôt que portrait.

1993 rcsdiffp - faire une rcsdiff sur ce fichier et la révision précédente en RCS

rcsdiff est généralement utilisé pour comparer la copie de travail avec la dernière version. Il y a beaucoup d’options pour effectuer d’autres sortes de comparaisons. Au fil des années, la deuxième comparaison, pour moi, a été l’avant-dernière révision, car après que j’ai vérifié un fichier, je ne pouvais modifier qu’une seule fois.

1995 add.sh

Ajout des nombres. Exemple d’utilisation:

ls -la | cutf 5 | add.sh

cutf, une fonction, est ma réponse à certains non-uniformité entre awk et coupées. Coupe connait seulement des séparateurs de champs unique-char, par défaut, awk traite l’espace blanc comme le séparateur de champ . cutf se comporte de plus« intuitivement » de coupées sur plusieures sortes de ( non structurées de sortie) de données.

Le pipeline ci-dessus de la liste des fichiers, sélectionne le champ 5e (taille du fichier) et ajoute les tailles.

Dans de nombreux cas, même s’il y a texte mêlé avec les nombres, add.sh produit la somme.

1995 ps_who_owns_it*.sh - fournir une liste d’identifiants de processus parent pour un pid

Solaris a ptree qui fait un meilleur travail que ce script Linux a pstree, mais j’ai jamais trouvé satisfaisant.

Donnez-lui un pid et ce script offrira une entrée de liste PS complet pour le pid donné et tous ses parents jusqu’à 1. Je n’ai jamais réussi à obtenir que ce script pour travailler vers le haut et vers le bas. Chaque processus a un seul parent, mais peut avoir plus d’un enfant, de sorte que le script complet serait plus difficile.

Utiliser souvent.

1996 emacs-nw - interlude pour les commandes en .mailrc

C’est un script intéressant. Il a environ 12 caractères fonctionnels dans l’ensemble du script. Toute explication sera plus grande que le script lui-même. Si vous n’exécutez pas emacs, vous n’aurez aucune garantie.

emacs est disponible en 2 procédés. Si vous exécutez emacs depuis la ligne de commande, il tentera de s’exécuter àl’aide de son interface spéciale pour X dans une fenêtre distincte emacs. Si vous souhaitez l’exécuter dans un xterm vous devez spécifier quelque chose de spécial. Je veux jamais exécuter la GUI version.

Il y a des fois des applications offrent la possibilité d’exécuter avec votre éditeur préféré. Parfois, vous pouvez ajouter des arguments, parfois vous ne pouvez pas. Ce script est pour le moment ou vous ne pouvez pas.

Notez que, bien qu’il pouvait être classé comme une fonction pour une utilisation interactive, une fonction peut ne pas être vu à l’application

C’est un des quelques scripts que j’ai écrit qui n’a pas .sh àla fin du nom. Je ne peux pas rappeler ce que ma pensée était àl’époque.

1996 chmod_g-o.sh - chmod copier rx bits du groupe à l’autre

C’est un script que je n’utilise pas souvent, mais chaque utilisation, je suis heureux que je l’ai écrit. C’est une simple fonction de l’état, et pas dur àécrire, mais pas le genre de chose que l’on peut faire facilement sur la ligne de commande. Ce script ne fait pas de recherche dans la hièrarchie. Utilisez une construction comme chmod_g-o.sh `trouver`

Il est particulièrement agréable car, bien souvent, lorsque vous travaillez sur un arbre, vous souhaitez définir la permission de lecture sur les fichiers et rx sur les répertoires. Cela permet d’économiser sur ce genre de détail. Si les groupes autorisations sont justes, alors les autres autorisations seront juste après que le script soit exécuté.

1997 rename.sh - renommer les fichiers

Apparemment écrits en 1997, un commentaire près du haut donne à penser que j’avais déja écrit quelque chose comme cela auparavant. Je pensais que j’inspire une commande similaire de VMS, mais je ne vois aucune confirmation pour cette proposition.

Lorsque j’ai écrit, j’étais inquiet que je pourrais obtenir un faux, donc plutôt que de faire faire un renommer, il affiche simplement les commandes qu’ils auraient exécuté. Vérifie que les commandes sont juste ensuite les copier et coller afin de les renommer.

Je suppose parce que je l’utilise rarement, j’ai laissé dans l’utilisation de sorte qu’il soit toujours affiché.

rename.sh ’part*’ part=.doc
Utilisation:  /home/henryg/scripts/rename.sh  <from> <to> ou est maitre du nom de fichier pour correspondre à
        <from> est de la forme <string1>*<string2>
        <to>   est de la forme <string3>=<string4>

soit de <string1> or <string2> peut être nulle ou l’autre de
<string3> or <string4> peut être nulle

 mv part1 partie1.doc
 mv part2 partie2.doc
 mv part3 partie3.doc

Meilleur du reste

dircmp - comparer  2 répertoires

y peut-être des autres façons d’atteindre les mêmes objectifs, mais avez utilisé dircmp Depuis 1993 et toujours trouver utiles. Il signale les fichiers qui sont différents et les fichiers dans le répertoire de la première sont absents dans le deuxième répertoire (il n’est pas symétrique).

disp_args.sh - affichage arguments

J’utilise ceci afin de déterminer ce qu’un script shell considère de ses arguments. Cela peut être utile s’il y a beaucoup de citant de différentes sortes.

du-forte.sh - puissance industrielle de
du-root.sh - puissance industrielle pour la partition racine 

L’objectif principal de ces scripts est d’éviter les NFS-systèmes de fichiers montés. Si je veux savoir ou l’espace est utilisé sur un disque, surtout si c’est le système de fichiers racine, je ne veux patienter pendant que les grands disques distants sont recherchées inefficacement. Si l’espace est distant, je vais à l’ordinateur distant pour faire l’analyse.

Dernièrement, j’ai trouvé que les NFS-systèmes de fichiers montés ne sont pas la seule douleur. J’ai également un disque USB de 1To attaché à ma machine. Il est assez lent. Habituellement je ne veux pas faire que des recherche. Je ne suis pas sur, il existe un moyen facile d’atteindre cet objectif.

Jusqu’àce que je commençais àécrire ceci, j’avais oublié que j’avais du-root.sh. Merde, il aurait été très utile, l’autre jour!

Je l’ai essayé tout àl’heure:

du-root.sh
Ce script effectue
        du -csk /*
pour les répertoires (et pas les fichiers) sur la partition racine uniquement. 
2       /.snap
Skipping non-root /dev
Skipping non-root /tmp
Skipping non-root /usr
Skipping non-root /var
1902    /etc
Skipping non-root /cdrom
Skipping non-root /cdrom1
2       /dist
1026    /bin
160510  /boot
6842    /lib
242     /libexec
2       /media
14      /mnt
2       /proc
4128    /rescue
66      /root
5398    /sbin
Skipping non-root /p6
1320    /History_dir
75398   /sw
2       /Big
Skipping non-root /WD5
Skipping non-root /DISKA
Skipping non-root /p7
Skipping non-root /p8
2       /p5
2       /p1
Totale (exclut /proc) 256858

C’était rapide. C’est si malin.

openwin*

Il est une famille entière de scripts que j’utilise pour tirer le même environnement fenêtre sur Solaris, Linux et FreeBSD. J’utilise cette famille constamment.

treecopy.sh - comme l’arbre du premier exemplaire(trecpy)

Ce script utilise le goudron dos à dos pour copier une arborescence de répertoires. J’ai utilisé ce abondamment jusqu’àce que j’ai découvert rsync.

C’est elle

C’est de tous les scripts que je vais parler en détail. Il y a beaucoup d’autres, mais je ne pense pas qu’ils sont d’intérêt pour un public plus large. Si vous les avez téléchargé, n’hésitez pas à explorer, à ignorer, à adapter, à réutiliser et à recycler.

Comme je l’ai dit au début, ces entités (alias,fonctions, scripts) étaient destinées à rendre la vie plus confortable pour moi. Ils conviennent à la façon dont je veux exploiter. Je n’attends pas que j’ai des clones. Chaque lecteur sera différent et aura des différents notions de confort.

Je prévois qu’un lecteur ignorera complètement peut-être que 90 % de ces entités. Les 10 % restants, peut-être 2 ou 3 seront réputées dignes d’un examen plus poussé.

D’autre part, j’espère qu’il y en a assez des lecteurs qu’au moins une personne trouve certaines de ces entités valables, même si c’est uniquement de servir de rampe de lancement pour une entité tout àfait différente.

Jouir.

À propos de l’auteur

Henry Grebler

Henry a passé son temps à travailler avec des ordinateurs, principalement pour les fabricants d’ordinateurs ou les développeurs de logiciels. Ses premières expériences de l’ordinateur comprenent des vestiges tels que des cartes perforées, ruban de papier et ruban de mag. C’est son secret le plus sombre qu’il a été payé pour faire ce genre de choses, il aurait versé de l’argent pour être autorisés à le faire. Il en parler sauf à ses employeurs.

Il a utilisé Linux comme système d’exploitation puisque la famille a obtenu son premier PC en 1996. à l’époque, lorsque la famille a partagé un PC, c’est un programme d’installation de Windows/Slackware dual-boot. Maintenant que chaque membre a son propre ordinateur, Henry survit d’une certaine manière dans un monde purement Linux.

Il vit dans une banlieue de Melbourne, en Australie.

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.

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.