Консольные трюки

Всем привет!
Сидел думал как назвать пост чтобы его заголовок точно и ёмко передавал суть написанного, но не придумал ничего лучшего чем «Консольные трюки». Да ну и пусть, фиг с ним =)

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

1. Я хочу быстро сохранять заметки в облачное хранилище

Действительно, сейчас без облачных технологий никуда. Все мы где-то храним свои заметки, кто в Google Docs, кто в Evernote, а кто-то и вовсе в виде текстовых файликов в директории синхронизированной с Dropbox’ом.

Мне просто нужно быстро что-то записать.

Мне же по душе вариант с Evernote т.к. тут упорядоченное представление содержимого в виде отдельных блокнотов, полнотекстовый поиск по заметкам и приятный интерфейс приложений. Но вот для того чтобы сохранить какую-то мелкую заметку мне очень лениво грузить новую вкладку с веб-приложением или запускать Windows-клиент в WINE.

И тут на помощь нам приходит Geeknote.

geeknote

Проект развивается уже давно и на мой взгляд обладает очень удобным консольным интерфейсом.
Теперь для того чтобы создать новую заявку нужно лишь на брать в консоли

1
geeknote create --title "Note title" --content "WRITE" --notebook "My note"

Где нужно заменить “Note title” и “My note” на заголовок и название блокнота соответственно. В итоге после ввода команды открывается ваш любимые текстовый редактор где вы можете набирать свою заметку. После его закрытия и сохранения заметки она автоматически улетает в Evernote, а из памяти вашего компьютера растворяется без следа.

Все бы ничего, но такую длинную команду писать долго и лениво.

Так что делаем вот так:

1
2
mkdir ~/.bin
vim ~/.bin/geeknote.sh

Внутри пишем однострочный скрипт:

1
2
#!/bin/bash
geeknote create --title "$1" --content "WRITE" --notebook "Fast"

Сохраняем. Даем права на запуск:

1
chmod +x ~/.bin/geeknote.sh

Теперь нам осталось только прописать alias в нашей оболочке. Допустим у вас Bash:

1
vim ~/.bashrc

В конце файла прописываем наш алиас:

1
alias gnote='~/.bin/geeknote.sh'

Осталось только перезапустить шелл и можно писать что-то вроде:

1
gnote 'Моя первая запись'

Единожды утилита спросит логин-пароль и после сохранения записи вы ее увидите в своем Evernote.

Блокнот в Evernote

2. Быстро сохранить какой-либо полезный код

Нередко по работе возникает необходимость накидать какой-то быстрый код который возможно в будущем пригодится, но при этом качество у него совершенно не подходящее для захламления им своего публичного аккаунта на Github. Сохранять у себя где то на диске или просто заливать код в какой-нибудь cloud-storage также смысла нет ибо вряд ли вы его потом отыщете когда он вам пригодится. Тут на помощь может придти gist.github.com либо же сниппеты на bitbucket. Но у них есть существенный недостаток - нет возможности сохранить какую-либо структуру директорий. Короче не совсем то, да и открывать новую вкладку в браузере, а потом копипастить туда код с каждого файла по отдельности тоже не наш путь.

И тут мы вспоминаем про приватные репозитории в Bitbucket которые можно бесплатно создавать в неограниченных количествах! Точно! Вот туда то мы и будем лить. А потом вспоминаем про то что в этом случае нам также придется идти на Bitbucket, создавать там новый репозиторий и делать вручную git remote add. Короче снова слишком много действий.
А вот тут нас выручат bash,curl и API Bitbucket.

1
vim ~/.bin/bbsyc.sh

Пишем скрипт:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#!/bin/bash
echo 'Repo name?'
read repoprename

reponame="bb-"$repoprename

curl --user login:'password' https://api.bitbucket.org/1.0/repositories/ --data name=$reponame --data is_private='true'

if [ ! -d ".git" ]; then
git init
git add -A
git commit -m "Fast"
fi

git remote add bitbucket git@bitbucket.org:login/$reponame.git
git push -u bitbucket --all
git push -u bitbucket --tags

Тут мы заменяем login и password на свои.

Далее мы снова открываем .bashrc и добавляем алиас:

1
alias bbsync='~/.bin/bb.sh'

Затем рестартим шелл.

Теперь мы можем просто перейти в любую директорию и вызвать bbsync. Скрипт спросит у нас название нового репозитория, создаст его на Bitbucket и зальет наш код.
Как видите все просто и удобно. Занимает считанные секунды.
Для удобства созданные таким способом репы я помечаю префиксом ‘bb-‘.

Bitbucket-репозитории