2 votes

utiliser la sortie de la commande alias comme nom de fichier à ouvrir dans vi

J'ai mis en place un alias ce matin pour aider à trouver le dernier fichier journal dans un répertoire. Mon alias ressemble à

alias latest="ls -lat | grep ^- | awk '{print \$8}' | head -1"

Dans mes recherches jusqu'à présent ce matin, j'ai lu un blog - ParsingLS ce qui me dit que ce n'est probablement pas la meilleure façon de faire - ignorons cela pour le moment, je peux chercher à faire un meilleur alias en utilisant find plus tard. Pour l'instant, supposons que j'ai une commande qui fonctionne parfaitement et qui doit sortir un nom de fichier du répertoire courant.

Je pensais que j'allais pouvoir faire latest | vi pour ouvrir le dernier fichier modifié dans le répertoire, mais il semble que cela ne fonctionne pas - vi se plaint que la sortie n'est pas un terminal. J'ai vu une question sur stackoverflow qui suggérait que le problème était lié aux sous-shells et au piping.

latest | vi < `tty` > `tty`

Mais ça ne fait que m'énerver

`tty`:ambiguous redirect

Je suis sûr qu'il y a quelque chose de fondamental que je ne comprends pas dans les tuyaux - je n'ai commencé que récemment à essayer de les utiliser sérieusement, des idées ?

4voto

waltinator Points 32821

C'est simple. Si latest produit un nom de fichier sur stdout , $() est la réponse :

vim $( latest )

Voir man bash .

1voto

Michal Bernhard Points 2203

Je suppose qu'un téléavertisseur n'est pas suffisant ?

Je ne pense pas que vi ait le support pour cela (du moins pas nvi ou le récent vi de FreeBSD), vim l'a cependant :

latest | vim -

Une solution de contournement consiste à utiliser un tuyau nommé :

mkfifo vi.fifo
latest > vi.fifo & vi vi.fifo
rm vi.fifo

Pas très joli et le vi de FreeBSD semble avoir besoin d'un supplément de :e avant de lire le fifo.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X