Forum Programmation.shell Fonctions et alias de même noms, et surcharge d'alias

Posté par  (site web personnel) . Licence CC By‑SA.
Étiquettes :
3
5
août
2013

Bonjour,

J'ai deux questions à propos du shell sous GNU/Linux (bash ou zsh).

==> Si un alias et une fonction de même nom existent, comment savoir laquelle sera appelée ?
Ex :

alias rr='echo Hello'
rr () { command echo Hello "$@"; }

Dans ce cas, c'est ennuyeux avec zsh : à la définition de la fonction rr, le nom est remplacé par l'alias, et c'est echo qui va être remplacé par la fonction définie… (et donc, rr world renvoie (…)

Journal Se souvenir de ses alias bash

Posté par  . Licence CC By‑SA.
Étiquettes :
11
28
juil.
2013

Bonjour,

Mes vacances sont finies, demain c'est la reprise, oh que c'est dur. Durant mes quelques semaines de farniente, je me suis rendu compte que le fichier de mon shell, bash en l'occurrence (certes avec le mode vi activé) était rempli d'alias et de fonctions : présent en premier lieu pour me simplifier la vie - c'est leur rôles - mais aussi pour stocker des commandes à rallonge utilisées trois fois dans l'année. Cela m'arrive donc d'oublier carrément leur existence. (…)

Coloriser des flux de texte avec colout

Posté par  (site web personnel, Mastodon) . Édité par Benoît Sibaud. Modéré par claudex. Licence CC By‑SA.
65
4
avr.
2013
Ligne de commande

Les réalisateurs de films policiers ne s'y trompent pas : lire des flux de textes en ligne de commande nécessite parfois le super pouvoir de lisibilité.

Bien que les outils GNU soient extrêmement pratiques pour manipuler des flux de texte, il en manquait un pour aider à mettre en valeur l'information importante, sans masquer l'accessoire. Par exemple pour faciliter la lecture de logs s'étendant sur plusieurs lignes ou pour détecter rapidement le numéro de ligne d'un fichier responsable d'une erreur de compilation.

Heureusement, grâce à la commande colout (aujourd'hui en version 1.0), vous pouvez maintenant très facilement coloriser colorer colorier mettre de la couleur là où vous le souhaitez dans votre ligne de commande.

Basiquement, colout s'utilise comme un filtre de flux de texte classique, généralement après un pipe, et mets en valeur les bouts de texte correspondant à une expression régulière avec une couleur et un style de votre choix :

    <flux de texte> | colout <expression régulière> [couleur [style]]

L'IHM de colout est pensée pour être simple tout en permettant des utilisations vraiment intéressantes, telles que le coloriage l'application des couleurs sur les groupes des expressions, l'utilisation de cartes de couleurs (mais si, vous savez, les couleurs de l'arc-en-ciel…), la coloration la mise en valeur de la syntaxe de code source, des thèmes automatiques et même l'application d'une couleur en fonction de la valeur d'un nombre.

Forum Programmation.shell Calcul occupation disque dur d'un exécutable

Posté par  . Licence CC By‑SA.
Étiquettes :
0
8
avr.
2013

Bonjour à tous

Pour tracer la consommation disque dur lors de l'exécution d'un logiciel de traitement d'images que l'on développe dans ma boîte, j'ai développé rapidement un petit script shell qui fait à intervalle régulier des "df" et exporte les résultats au format CSV.
De la même façon, pour tracer la consommation CPU j'utilise "top" en mode batch.

Dans les deux cas mes scripts marchent très bien mais je suis confronté à des difficultés :
- le parsing de la (…)

Guake perd son dernier développeur - appel à un repreneur

Posté par  (site web personnel) . Édité par Benoît Sibaud et Nÿco. Modéré par rootix. Licence CC By‑SA.
19
27
mar.
2013
Ligne de commande

Cette fin d'après-midi, Pierre-Yves Chibon annonce qu'il quitte le développement de l'application et lance l'appel pour un éventuel repreneur. L'application est écrite en python, et utilise GTK2. Celui qui reprendrait le projet aurait un travail de fond à effectuer, s'il veut assurer le futur du logiciel, pour le passer en dconf/gtk3. Il y a également beaucoup de tickets ouverts dans le système de ticketing, avec des patchs, fonctionnalités qui n'ont jusque là pas été implémentées. Citons notamment le support multi-moniteurs.

NdM : une précision apportée dans le commentaire de GeneralZod : Pierre-Yves Chibon administrait le serveur et faisait les paquetages Fedora, sans être développeur du projet.

Journal waitend: exécuter une commande après une autre (déjà lancée)

Posté par  (site web personnel) . Licence CC By‑SA.
Étiquettes :
10
5
mar.
2013

Parfois, j'ai besoin de lancer une commande après qu'une autre (quelconque) est déjà été lancée. J'ai cherché et demandé sur le forum (merci pour les réponses!) s'il existait une commande pour faire cela.

Les réponses (bout de scripts shell, outils qui ne correspondent pas tout à fait au besoin) me confortent dans l'idée que ça n'existe pas (ou plus probablement que personne n'en connait un). J'en ai donc écrit un… C'est du python car c'est ce que je pratique au (…)

Forum Programmation.shell Surveiller l'usage des inodes

Posté par  . Licence CC By‑SA.
Étiquettes :
1
5
mar.
2013

La problématique : Certains serveurs font tourner certaines applications qui chient du fichier (par exemple snort sans un -K None), il faut avoir un œil dessus.

Une solution serait de profiter du fonctionnement de cron qui envoie un mail si et seulement si la commande lancée produit quelque chose sur stdout avec un truc comme ça :

df -iPh | tail -n +2 | sed -e 's/  */;/g' | cut -d';' -f 1,5 | awk -F';' '{print $2,"\t",$1}'
(…)

Forum général.cherche-logiciel outil en ligne commande pour exécuter une commande après une autre (déjà lancée)

Posté par  (site web personnel) . Licence CC By‑SA.
Étiquettes :
1
8
fév.
2013

Bonjour !

Parfois je lance une commande et je me rend compte qu'elle prend plus de temps que prévu. J'aimerai pouvoir lancer une autre tâche ensuite (soit une autre commande, soit éteindre la machine, soit connaître la date de fin de la première, etc.). J'imagine pouvoir faire quelque chose comme :
$ waitfor --process 1234 --exec 'shutdown -r now'

Ce n'est pas grave si l'exécution n'est pas immédiate (si le délai est d'une minute par exemple).

J'ai cherché s'il existait un (…)

Journal Communes de France finissant par "ville"

Posté par  . Licence CC By‑SA.
35
4
jan.
2013

Sommaire

Une connaissance me faisait récemment remarquer qu’une très grande partie des communes françaises dont le nom finit par "ville" se situe en Normandie (départements 14-Calvados, 27-Eure, 50-Manche, 61-Orne et 76-Seine-Maritime).
Je décide donc de prendre la liste des communes françaises, de dénombrer celles finissant par "ville" et d’afficher tout ça sur une jolie carte.

Récupérer les données

La liste des communes est disponible sur le site de l’INSEE. (…)

pyxshell : piper des flux de texte en pur Python

Posté par  (site web personnel, Mastodon) . Édité par Davy Defaud, Nÿco, claudex, Benoît Sibaud et Xavier Teyssier. Modéré par claudex. Licence CC By‑SA.
Étiquettes :
33
16
jan.
2013
Python

pyxshell (à prononcer comme vous pouvez) est un module Python qui permet d’enchaîner des fonctions de traitement de flux avec un opérateur « tube » — pipe, en anglais — (|) , de la même manière qu’avec un shell.

Si — comme moi — vous devez régulièrement analyser à la main des données textuelles diversement structurées sous différents environnements. Si vous affectionnez la ligne de commande sans raffoler de la syntaxe de Bash, vous apprécierez d’avoir tout sous la main à côté de vos outils Python favoris.

Par exemple :

>>> out=[]
>>> (random.randint(0,2) for i in range(10)) | map(lambda x: ["Oui ","nous sommes ","tous différents "][x]) | sort | uniq | tee(sys.stdout) > out
Oui tous différents nous sommes
>>> print(out)
['Oui ', 'tous différents ', 'nous sommes ']

Forum Programmation.shell Utilisation de awk pour la jointure de 2 fichiers

Posté par  . Licence CC By‑SA.
2
21
jan.
2013

Je possède deux fichiers de taille différente ayant en commun un champ.
fichier 1:

1 48102
2 48103
3 48152
4 48156
5 48189

fichier 2:

14 jean
503 Benjamin
48102 Georges
48103 Lili
48152 Mélina
48156 Chantal
48189 Daniel
48512 Esthelle

Je souhaite réaliser un fichier final jointant ces 2 fichier le premier par le deuxième champ et le deuxième par son premier champ.

Mais essai avec join n'ont pas était concluant et il me semble que awk peut (…)

LiquidPrompt version 1.2

Posté par  (site web personnel, Mastodon) . Édité par baud123, Nils Ratusznik et NeoX. Modéré par Nÿco. Licence CC By‑SA.
42
16
jan.
2013
Ligne de commande

LiquidPrompt est un prompt clefs-en-main pour bash ou zsh, dont l'idée générale est d'afficher élégamment des informations utiles uniquement quand le contexte le demande.

De nombreuses nouveauté sont disponibles depuis la dernière linuxfrisation, notamment :

  • la gestion de zsh en plus de bash ;
  • des commandes pour désactiver temporairement le prompt (et revenir à l'ancien ou carrément tout désactiver) ;
  • de quoi configurer facilement le prompt dans des fichiers à soi (couleurs, thèmes, options) ;
  • la désactivation optionnelle de chaque fonctionnalité du prompt (même à chaud) ;
  • une couleur indiquant si le forwarding X est actif ;
  • gestion du chroot sous Debian et du virtualenv sous Python ;
  • la réplication du prompt dans le titre de la fenêtre ;
  • la gestion de Fossil (le gestionnaire de version) ;
  • la possibilité de masquer l'utilisateur, si c'est celui qui est loggué ;
  • l'utilisation du builtin DIRTRIM, sous bash, s'il est installé ;
  • un fichier .bashrc à utiliser pour l'installation ;
  • plein (mais alors plein) de bugs en moins et de vitesse en plus !

Journal 100 scripts shell UNIX

Posté par  (site web personnel) . Licence CC By‑SA.
Étiquettes :
44
30
nov.
2012

Aujourd'hui pour me changer les idées, je me suis décidé à aller faire une petite razzia de bouquins à la bibliothèque de ma fac. Généralement, je sors assez déçu de ce genre d'expérience, mais pour une fois un livre a accroché mon esprit.

Il s'agit de 100 scripts shell UNIX par Dave Taylor, traduit en français, et aux éditions EYROLLES.
Ce petit bouquin d'environ 350 pages se propose de présenter, discuter, optimiser cent scripts shell.

Les chapitres

Le bouquin (…)

Forum Programmation.shell Trier une liste sur une partie du nom

Posté par  .
Étiquettes :
1
4
oct.
2012

Bonjour,

Je recherche une méthode en SHELL permettant de trier une liste de noms de fichiers. Toutes les commandes de base sont permises (ls, grep, sort, sed, awk, …)

Liste à trier contenu dans le fichier FOO.TXT :

01_ceci_est_le_nom_d_un_fichier_20121004_100000.txt
02_cela_est_un_autre_fichier_20111003_110000.csv
03_encore_un_autre_fichier_20121002_090000.tar
04_et_un_petit_dernier_pour_la_route_20121212_121212.tgz

Il faut que la commande magique puisse trier uniquement sur la partie 'YYYYMMJJ' pour donner :

02_cela_est_un_autre_fichier_20111003_110000.csv
03_et_encore_un_autre_fichier_20121002_090000.tar
01_ceci_est_le_nom_d_un_fichier_20121004_100000.txt
04_et_un_petit_dernier_pour_la_route_20121212_121212.tgz

La seul règle commune aux 4 noms de fichier de la liste est que les noms (…)