Назад | Перейти на главную страницу

синтезировать оператор функционального приложения bash

Это немного пустяк, но я научился не делать предположений о возможностях чего-либо, поскольку меня часто поражают скрытые функции, скрытые в инструментах UNIX / Linux, так что приступим.

Я часто замечаю, что запускаю команды, в которых мне нужно найти файл в системе, а затем, когда я оцениваю местоположение на предмет работоспособности, мне нужно что-то сделать с путем.

Возьмем, к примеру, этот рабочий процесс:

$ which foo.sh
/path/to/something/foo.sh
$ vim `which foo.sh`

На ввод этой второй команды у меня уходит 1-2 секунды. Это безумие. Я делаю это так часто, что это начинает казаться шаблонным, и я должен уметь его исключить.

Что бы я хотел, так это волшебство фэнтезийной оболочки, которое позволило бы мне делать следующее:

$ which foo.sh
/path/to/something/foo.sh
$ which foo.sh |! vim

Этот второй случай намного превосходит ИМО. Мне гораздо проще набрать «|! Vim» после стрелки вверх, чем искать начало строки, набирать обратную кавычку vim, затем искать конец строки и набирать последнюю обратную кавычку.

Представьте, что оператор pipe-bang делает что-то похожее на "| xargs, vim", но таким образом, чтобы сохранить терминал для vim, а также что-то гораздо более короткое для ввода. Pipe-bang - это, конечно, синтаксическая ошибка в bash, и она не может быть псевдонимом, поэтому то, что я хочу сделать, кажется невозможным.

Либо это? Я подозреваю, что это случай TMTOWTDI, но у меня психический блок.

Это не обязательно должно быть буквально «труба», но цель - это нечто близкое.

Это также должно работать:

который foo.sh | xargs vim

Я часто делаю то же самое (обычно, чтобы найти двоичный файл, затем rpm -qf, чтобы узнать, какой пакет его предоставляет)! Мой маршрут лучше, чем вы делаете, но медленнее, чем вы хотите; Предлагаю как дом на полпути.

$ which foo.sh
/path/to/something/foo.sh
$ vim `!!`

На большинстве клавиатур обратная кавычка и клавиша 1 также довольно близки, поэтому набирать их довольно быстро.

Дайте это (vя ппредыдущий) попытка:

$ alias vp='vim $(fc -s)'
$ which foo.sh
$ vp

В fc -s повторно выполняет предыдущую команду с заменой (в данном случае null).

Вы можете поместить псевдоним в свой ~/.bashrc файл. У меня есть в aliases файл, полученный от моего ~/.bashrc.