Как разработчик, мой вопрос производительности номер один: как мне быстро получить свою команду?
Я пробовал разные решения на протяжении многих лет. Большинство из них — просто разные способы делать заметки. Обратный поиск (ctrl + r
) из оболочки также помогает, когда мне нужно повторять команды снова и снова в течение короткого промежутка времени.
Однако ни заметки, ни обратный поиск меня полностью не удовлетворяют.
Для заметок часто контент находится внутри приложения, такого как Evernote, которым я когда-то пользовался. Самая большая проблема с заметками в том, что я не могу найти их из командной строки. Мне нужно переключиться с iTerm на приложение для заметок, скопировать команду и вернуться в iTerm. Это раздражает.
Для обратного поиска с дополнительными инструментами, такими как fzf, он действительно может быть очень мощным. Если вы также используете zsh, это, вероятно, решит 90% проблемы. Тем не менее, я упрямый человек. Я не использую zsh, потому что zsh иногда тормозит при открытии нового сеанса терминала в macOS. Кроме того, рабочие серверы используют bash. Для меня самая большая проблема с обратным поиском заключается в том, что у него нет команд, которые я запускаю только на рабочем сервере (или любом удаленном сервере, если на то пошло).
В конце концов я написал g
, чтобы решить свою проблему.
g
это сценарий оболочки. Название происходит от команды grep
. То, что он делает, просто. Он ищет текстовый файл, в котором я выгружаю всевозможные команды и даже фрагменты кода. Его исходный код размещен ниже. А пока позвольте мне привести несколько примеров того, как это работает.
$ g git | wc -l # show how many git commands I saved 27 $ g git log # show commands that match "git" and "log" git log --pretty=full -u -L 1,1:/path/to/some/file git log --pretty=format:"%ad %h by %an, %s" --date=iso | sort -r | less $ g date epoch # show date commands related to unix epoch date +%s # unix epoch in seconds date +%s%N | cut -b1-13 # unix epoch in milliseconds gdate -d @1361234760.790 # get human date from epoch (in seconds)
Вы можете видеть, что некоторые из команд довольно неясны и их почти невозможно запомнить. С g
эти непонятные команды становятся на расстоянии кончиков пальцев. И старая добрая копипаста подойдет.
Идея g
проста: она объединяет несколько команд grep
для поиска, и каждая команда grep
берет одно слово из входных аргументов. Источником команд grep
является вышеупомянутый текстовый файл ($HOME/.me/g/commands.txt
), в котором я сохраняю команды и фрагменты кода. У меня также есть этот псевдоним для быстрого редактирования файла: alias vicmd='vi ~/.me/g/commands.txt'
.
Ниже приведен исходный код g
на Gist.
Это легко попробовать.
- Скопируйте исходный код и сохраните его (надеюсь, вы сохраните имя
g
). - Убедитесь, что он исполняемый и находится в вашем $PATH.
- Создайте файл
$HOME/.me/g/commands.txt
и добавьте туда содержимое. - Начните использовать его.
И я надеюсь, что это сделает вас более продуктивным.