Самый простой способ - передать в locate
качестве замены оболочки , например:
vim $(locate filename123)
Вы также можете использовать find
вместо locate
передачи имен файлов для редактирования, например:
find . -name 'filename123' -exec vim {} +
В Unix / OSX вы можете использовать xargs
с -o
параметром, например:
locate filename123 | xargs -o vim
-o
Откройте команду stdin как / dev / tty в дочернем процессе перед выполнением команды. Это полезно, если вы хотите, чтобы xargs запускал интерактивное приложение.
Или в Linux попробуйте следующий обходной путь, используя:
locate filename123 | xargs -J% sh -c 'vim < /dev/tty $@'
Если вы используете разные команды, используйте подстановку команд для достижения этого, например:
vim $(locate filename123)
vim `locate filename123`
В качестве альтернативы используйте GNU parallel
вместо xargs
принудительного распределения tty, например:
locate filename123 | parallel -X --tty vi
Примечание: parallel
в Unix / OSX не будет работать, так как он имеет разные параметры и не поддерживает tty.
Многие другие популярные команды также предоставляют псевдо-tty распределение (например, -t
в ssh
), поэтому обратитесь за помощью.
Другое предложение - использовать vipe
(командный канал Vim) или использовать следующий простой скрипт:
#!/bin/sh
# usage: locate filename123 | vip
exec vim < /dev/tty "$@"
Связанные с: