J'essaie de rediriger la sortie d'une commande bash dans un nouveau fichier.
Si j'essaye le tuyau comme ci-dessous:
ls -la | vim
Bash me montre les erreurs:
Vim: Error reading input, exiting...
Vim: preserving files...
Vim: Finished.
Je sais que je peux ouvrir Vim puis utiliser:
:r !ls -la
Mais existe-t-il un moyen de le faire dans bash lui-même, de sorte que Vim soit ouvert et que la sortie y soit collée automatiquement?
<(ls -la)
est en fait un processus de substitution plutôt que de substitution de commande .Vous êtes vraiment proche l'un de l'autre. Il vous manquait juste un personnage.
la source
Voici une autre approche, j'espère enseigner quelque chose de nouveau à quelqu'un.
Si vous savez que la commande
:r !ls -la
fonctionne dans vim, vous pouvez procéder comme suit pour ouvrir vim et lui demander d'exécuter la commande dès son ouverture, directement depuis bash:Cela équivaut à ouvrir
vim
puis exécuter la commande:r! ls -la
. Cela devrait fonctionner avec n'importe quellevim
commande, où la commande vient après l'-c
option.la source
Vous pouvez dire à vim d'ouvrir stdin:
la source
Si votre objectif est simplement d'obtenir la sortie dans un fichier texte, vous n'avez pas besoin d'appeler vim. Bash peut le faire seul avec
la source
setlocal buftype=nofile
C'est une bonne option si vous voulez créer un alias à remplacer
less
:Maintenant, vous n'avez pas besoin de taper le! quitter.
Une autre option est:
afin que vous puissiez sortir avec juste
q<enter>
.la source