Это немного пустяк, но я научился не делать предположений о возможностях чего-либо, поскольку меня часто поражают скрытые функции, скрытые в инструментах 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
.