Le moyen le plus simple est de passer locate
en substitution de shell , comme:
vim $(locate filename123)
Vous pouvez également envisager d'utiliser find
au lieu de locate
passer des noms de fichiers à modifier, par exemple:
find . -name 'filename123' -exec vim {} +
Sur Unix / OSX, vous pouvez utiliser xargs
un -o
paramètre, comme:
locate filename123 | xargs -o vim
-o
Rouvrez stdin en tant que / dev / tty dans le processus enfant avant d'exécuter la commande. Ceci est utile si vous souhaitez que xargs exécute une application interactive.
Ou sous Linux, essayez la solution de contournement suivante en utilisant:
locate filename123 | xargs -J% sh -c 'vim < /dev/tty $@'
Si vous utilisez différentes commandes, utilisez la substitution de commandes pour y parvenir, comme:
vim $(locate filename123)
vim `locate filename123`
Vous pouvez également utiliser GNU parallel
au lieu de xargs
pour forcer l'allocation tty, par exemple:
locate filename123 | parallel -X --tty vi
Remarque: parallel
sous Unix / OSX ne fonctionnera pas car il a des paramètres différents et ne prend pas en charge tty.
De nombreuses autres commandes populaires fournissent également une allocation pseudo-tty (comme -t
dansssh
), alors vérifiez l'aide.
Une autre suggestion serait d'utiliser vipe
(un canal de commande Vim) ou d'utiliser le script simple suivant:
#!/bin/sh
# usage: locate filename123 | vip
exec vim < /dev/tty "$@"
En relation: