Le moyen le plus simple est de passer locateen substitution de shell , comme:
vim $(locate filename123)
Vous pouvez également envisager d'utiliser findau lieu de locatepasser des noms de fichiers à modifier, par exemple:
find . -name 'filename123' -exec vim {} +
Sur Unix / OSX, vous pouvez utiliser xargsun -oparamètre, comme:
locate filename123 | xargs -o vim
-oRouvrez 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 parallelau lieu de xargspour forcer l'allocation tty, par exemple:
locate filename123 | parallel -X --tty vi
Remarque: parallelsous 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 -tdansssh ), 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: