OVH Cloud OVH Cloud

pipe connaître la commande appellante ?

16 réponses
Avatar
Une Bévue
soit la commande :

$ mon_bin mon_fichier | /path/to/mon_script

je voudrais pouvoir récupérer dans "mon_script" la commande précédente,
càd ce qu'il y a avant le pipe "|", ici "mon_bin mon_fichier".
Avec tous les arguments.

est-ce possible ?

si oui, comment ?

6 réponses

1 2
Avatar
filh
Une Bévue wrote:

soit la commande :

$ mon_bin mon_fichier | /path/to/mon_script

je voudrais pouvoir récupérer dans "mon_script" la commande précédente,
càd ce qu'il y a avant le pipe "|", ici "mon_bin mon_fichier".
Avec tous les arguments.

est-ce possible ?

si oui, comment ?



Dans l'absolu je dirais non : si tu fais un ls | more et que tu regardes
les processus, le ls est fini quand le more tourne encore (ben le ls a
remplit le buffer du pipe et donc quitte).

La vraie question est : qu'est-ce que tu veux vraiment faire ? Quelle
est la fonction que tu veux remplir ? Dans quel cas ce machin là t'es
utilie...

Parce que peut-être que tu cherches la mauvaise solution à ton pb :)

FiLH


--
Le fondement du constat bourgeois, c'est le bon sens, c'est-à-dire
une vérité qui s'arrête sur l'ordre arbitraire de celui qui la parle.
Roland Barthes.
http://www.filh.org
Avatar
Une Bévue
Le 08/07/12 21:40, FiLH a écrit :
La vraie question est : qu'est-ce que tu veux vraiment faire ? Quelle
est la fonction que tu veux remplir ? Dans quel cas ce machin là t'es
utilie...

Parce que peut-être que tu cherches la mauvaise solution à ton pb:)



Remarques très justes, il semblerait que script remplisse la fonction
que je recherche :

copier les résultats d'une commande dans un fichier dont le nom sera la
string de la commande, modulo les caratères inderdits pour un nom de
fichier, en y ajoutant comme préfix la date et l'heure.

tout ça pour m'éviter un copier / coller.
Avatar
blanc
Une Bévue wrote:

> $ fdate"!!" >> fichier_ou_tu_veux_copier_le_résultat

euh, là, je ne pige pas, c'est quoi "!!" un truc spécial à zsh ?



D'abord, désolé : il manque une espace :

$ fdate "!!" >> fichier_ou_tu_veux_copier_le_résultat

Ensuite !! rappelle simplement la commande précédente (cela fait partie
du mécanisme d'historique de csh, lequel a été repris par (entre autres)
zsh.

Pour savoir ce que fait
fdate "!!"
sans l'exécuter, tu peux simplement au lieu de valider faire une
tabulation après avoir tapé la commande.

Pour avoir plus de détails sur le mécanisme d'historique dans zsh :
man zshexpn
et chercher le mot HISTORY en majuscule
(en fait il suffit de faire /HIS pour cette recherche)


--
JiPaul.
/ /--/--// Jean-Paul Blanc
|/| L | quelquepart en (somewhere in)
/|| = ||| FRANCE
Avatar
blanc
Une Bévue wrote:

Hier j'ai eu un problème avec Zsh : je me suis rendu compte qu'on ne
peut pas faire un dirname d'un fichier qui n'existe pas, alors j'ai



???
Avec Zsh je ne sais pas, mais avec zsh ça marche sans probleme :
Je viens d'essayer la commande
dirname /var/pol/machin/truc
et ça m'a bien donné
/var/pol/machin

alors que ni pol, ni machin ni truc n'existent chez moi dans le dossier
/var


--
JiPaul.
/ /--/--// Jean-Paul Blanc
|/| L | quelquepart en (somewhere in)
/|| = ||| FRANCE
Avatar
unbewusst.sein
JiPaul wrote:

Une Bévue wrote:

> > $ fdate"!!" >> fichier_ou_tu_veux_copier_le_résultat
>
> euh, là, je ne pige pas, c'est quoi "!!" un truc spécial à zsh ?

D'abord, désolé : il manque une espace :

$ fdate "!!" >> fichier_ou_tu_veux_copier_le_résultat

Ensuite !! rappelle simplement la commande précédente (cela fait partie
du mécanisme d'historique de csh, lequel a été repris par (entre autres)
zsh.

Pour savoir ce que fait
fdate "!!"
sans l'exécuter, tu peux simplement au lieu de valider faire une
tabulation après avoir tapé la commande.

Pour avoir plus de détails sur le mécanisme d'historique dans zsh :
man zshexpn
et chercher le mot HISTORY en majuscule
(en fait il suffit de faire /HIS pour cette recherche)



OK, merci bien, je rentre de vacances...

--
« Les femmes font les meilleurs psychanalystes jusqu'à ce qu'elles
tombent amoureuses. Elles font alors les meilleurs patients. »
(Alfred Hitchcock)
Avatar
Une Bévue
Le 26/07/2012 09:47, JiPaul a écrit :
$ fdate "!!" >> fichier_ou_tu_veux_copier_le_résultat



bon, j'ai enfin eu le temps d'essayer, comme mon script "fdate"
construit le nom du fichier à partir ${1} :
DATEDFILE="${HOME}/Installations/${DATE}${1}.txt"
avec :
DATE=`date '+%y-%m-%d--%H-%M--'`

il suffit que je fasse :

$ fdate !!

et ça roule super, merci beaucoup.

Ensuite !! rappelle simplement la commande précédente (cela fait partie
du mécanisme d'historique de csh, lequel a été repris par (entre autres)
zsh.

Pour savoir ce que fait
fdate "!!"
sans l'exécuter, tu peux simplement au lieu de valider faire une
tabulation après avoir tapé la commande.

Pour avoir plus de détails sur le mécanisme d'historique dans zsh :
man zshexpn
et chercher le mot HISTORY en majuscule
(en fait il suffit de faire /HIS pour cette recherche)



Extrait :
For example, `!' is the event designator for the previous command, so
`!!:1' always refers to the first word of the previous
command, and
`!!$' always refers to the last word of the previous command.
With
CSH_JUNKIE_HISTORY set, then `!:1' and `!$' function in the same
manner
as `!!:1' and `!!$', respectively. Conversely, if
CSH_JUNKIE_HISTORY
is unset, then `!:1' and `!$' refer to the first and last
words,
respectively, of the same event referenced by the nearest other
history
reference preceding them on the current command line, or to the
previ-
ous command if there is no preceding reference.

super clair ))
1 2