Полезности в .profile


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

Многие операции в консоли можно автоматизировать с помощью алиасов и функций. Этот пост про те алиасы и функции, которые прижились у меня в .profile и которыми я часто пользуюсь.

Итак.

Алиасы

Первый алиас остался с тех времен, когда я пользовался todo.txt. Но сейчас список дел лежит в Notational Velocity, а привычка иногда просматривать текущий список дел из консоли остался.

t="vim $HOME/Documents/personal/sergeyb-notes/TODO.txt"

Чтобы что-то автоматизировать нужно сначала понять в каком месте рутина. Этот алиас помогает понять какие команды чаще всего я набираю и сделать вывод об автоматизации этих команд.

topc="history | awk {'print $2'} | sort | uniq -c | sort -k1 -rn | head"

Узнать IP адрес, под которым вы выходите во внешнюю сеть, иногда бывает необходимо:

ip='dig myip.opendns.com @resolver1.opendns.com +short'

tmux использую ещё с тех пор как одна из его первых версий была добавлена в OpenBSD. Что делает алиас ниже думаю не надо объяснять.

tmux='tmux attach || tmux new'

Зачем писать дополнительные команды, если можно просто хорошо попросить?

please='sudo'

Функции

Если apg не установлен, то используем openssl для создания пароля:

if [ -x /usr/local/bin/apg ]; then
        alias newpassword='apg -n 1 -m 40 -M SNCL -E oO0'
else
        alias newpassword='openssl rand -base64 40'
fi

Сокращение ссылок в консоли:

clck { curl https://clck.ru/--?url=$1 || exit 1; echo; }

Чтобы передать кусочек текста с ноутбука на телефон я пользуюсь QR кодами: сделал изображение QR кода, сфотографировал и текст на телефоне. Чтобы QR делать быстро и из консоли я пользуюсь сервисов Google:

qr { open "https://chart.googleapis.com/chart?chs=500x500&cht=qr&chl=$1" || exit 1; }

Часто перечитываю маны для FreeBSD/OpenBSD и чтобы быстрее открывать нужную страницу документации полезен сервис mdoc.su.

m { open "http://mdoc.su/-/$1" || exit 1; }

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

share { scp -r $1 gw.bronevichok.ru:/var/nginx/html/trash/ > /dev/null 2>&1 && echo "https://bronevichok.ru/trash/$(basename $1)" || echo "Failed to share :("; }

Про команду ssh-copy я знаю, но её нужно дополнительно устанавливать, а эта функция всегда будет под рукой, если её добавить в .profile:

sshcp { cat ~/.ssh/id_rsa.pub | ssh $1 'cat >> ~/.ssh/authorized_keys'; }

Таймер в консоли:

function stopwatch(){
  case $(uname) in
    "Linux") DATE=date ;;
    "Darwin") DATE=gdate ;;
  esac
  local BEGIN=`$DATE +%s`
  while true; do
    echo -ne "$($DATE -u --date @$((`$DATE +%s` - $BEGIN)) +%H:%M:%S)\r";
  done
}

Добавлено: Пару дней назад на HN было обсуждение любимых алиасов, в котором можно найти немало полезных.

Метки: opensource productivity openbsd personal