Возникла потребность настраивать по-разному конфиги гита для разных проектов (email контактный поменять, хотя бы, или хук на прогон тестов повесить).
Ну и понятно, что как-то эти конфиги подкладывать туда-сюда — не слишком увлекательно. К счастью, в свежих версиях гита — есть инклюды. В том числе — по условию — includeIf. Вот ими и стоит воспользоваться.
Сделал себе автоподключение к сессии tmux (или автозапуск tmux-сервера с новой сессией, если её ещё нет) при заходе в локальную консоль или при подключении по ssh к удалённым машинам (пользоваться бесплатным шеллом bshellz стало удобней).
# Autostart tmux on login
__autostart_tmux() {
# $( type -p ) - built-in in sh or bash only?
#TMUX_BIN="$( whereis tmux | cut -d " " -f 2 )"
# which versions different output format
TMUX_BIN="$( which tmux 2> /dev/null )"
if [ -z "${TMUX_BIN}" ]; then
echo "Tmux not found"
return 0
fi
TMUX_AS_SESS_NAME="$(echo "${USER}" | cut -c '1-3')"
# return empty line if specified session exist or return 1
TMUX_AS_SESS_RUN="$( tmux has-session -t "${TMUX_AS_SESS_NAME}" &> /dev/null || echo "$?" )"
#TMUX_AS_DAEMON_MODE="$1" # $1 == "-d" or " "
#TMUX_AS_EXIT="$2" # "return 0" or "exit 0"
# do not attach automatically to tmux session if login on local XTerm
if [ -z "${TMUX_AS_SESS_RUN}" ] && [ -z "${SSH_TTY}" ] && [ "${TERM}" = "xterm" ]; then
echo "Tmux: running, not attached on local XTerm"
return 0
# do not run tmux automatically in another tmux (or screen)
# in exists tmux session shell be started on non-login mode and .profile not used
# (see set -g default-command "${SHELL}" in tmux.conf)
elif [ -n "${TMUX}" ] || [ "${TERM}" = "screen" -o "${TERM}" = "screen-256color" ]; then
echo 'Tmux: not be running in another terminal multiplexer "'${TERM}'"'
return 0
# attach to existed tmux session or create it and exit login-shell; or print error message
else
((tmux has-session -t "${TMUX_AS_SESS_NAME}" && exec tmux attach-session -t "${TMUX_AS_SESS_NAME}") || (tmux new-session -d -s "${TMUX_AS_SESS_NAME}" && exec tmux attach-session -t "${TMUX_AS_SESS_NAME}")) && exit 0;
echo "Tmux: autostart failed: $?"
fi
}
Как ни странно, я только недавно познакомился с VCHS — надстройкой над Git, призванной облегчить резервирование конфигурационных файлов, расположенных в домашней директории (Version control system for $HOME — один из вариантов расшифровки аббревиатуры). Очень жаль, что этого не произошло раньше, и бэкап конфигов делался нерегулярно, кое-как, с изобретением различных костылей. Но, всё это в прошлом! Итак, что же представляет собой VCSH и как ей пользоваться? Читать далее VCSH — спасение настроек в $HOME→
Аж на восьмой год знакомства с Linux наконец-то познакомился и с Коньками (Conky) — раньше всё лень было, да и не особо нужно как-то (как мне казалось). Всякие индикаторы были на панельках Gnome, по клику на них вызывались развёрнутые версии, а Коньки я кроме как индикатором никак иначе и не воспринимал. После перехода на Openbox наконец решился на них посмотреть, три месяца потихоньку читал инструкции на сайте и настраивал Коньки под себя.
По итогам этой вялопротекавшей настроечной эпопеи могу сказать, что Conky я совершенно точно недооценивал. И хотя расширение при помощи LUA мне пока не пригодилось (да и возможность вывода нескольких окон с применением разных настроечных файлов тоже пока не требовалась), уже понятно, что Conky — это некий Emacs в мире системных мониторов 🙂
Кроссплатформенный видеоплеер Mplayer по праву может считаться одной из самых популярных программ современности, предназначенных для воспроизведения видео. Начало его разработки датируется 2000 годом, автором стал Апард Герёфии, к работе которого затем подключилось множество программистов со всего мира.
Уникальность Mplayer заключается в том, что его стандартная версия является полностью консольной и может управляться с клавиатуры или при помощу пульта ДУ, на экран выводится только окно с проигрываемым видеофайлом, что неплохо экономит системные ресурсы и не отвлекает от просмотра обилием кнопочек и ползунков.
При желании Mplayer может быть дополнен графическим пользовательским интерфейсом, коих существует великое множество. Самые популярные — GnomeMplayer, KMPlayer, SMPlayer и UMPlayer. Последние две обладают наибольшем функционалом и большим набором скинов. Кроме того, существуют графические интерфейсы к MEncoder, разработанные для сред KDE и Gnome — это KMencoder и GMencoder.
Помимо того, что Mplayer достаточно экономно расходует системные ресурсы (а значит — отличается невысокими системными требованиями), поддерживает воспроизведение множества видео- и аудиоформатов, позволяет производить пакетную обработку медиафайлов и может проигрывать видеофайлы «на лету», после загрузки нескольких процентов, он также позволяет конвертировать видео и аудио при помощи встроенного кодировщика MEncoder. Кроме того, при помощи MPlayer можно проверить работоспособность веб-камеры в Linux и производить захват изображения с нее или слушать подкасты на лету, если встроенный в сайт плеер по какой-то причине не устраивает.
mplayer и проигрывание playlist
Естественно, mplayer имеет поддержку чтения плейлистов — достаточно вызвать его с соответствующей опцией: mplayer -playlist название_плейлиста.m3u. Сам плейлист можно легко сгенерировать при помощи find: find "$(pwd)" \( -name "*.mp3" -o -name "*.ogg" \) | sort > playlist.m3u — этак команда найдёт все файлы с расширением mp3 или ogg в текущей директории или поддиректориях и внесёт их в плейлист с названием playlist.m3u. Её удобно добавить в bashrc как alias, причём можно сразу с вызовом mplayer для проигрывания созданного плейлиста.
mplayer и проигрывание потокового аудио
Никаких особых секретов при воспроизведении аудиопотока в mplayer нет, достаточно указать адрес самого потока: mplayer http://audio_stream. В данном случае полезными могут оказаться две опции, отвечающие за кэширование потока: mplayer -cache 4456 -cahce-min 2 http://audio_stream — укажет использовать кэш размером 4456 килобайта и начинать проигрывание потока не раньше, чем будет заполнено 2% от размера кэша.
Настройки mplayer — ~/.mplayer/config
Настройки mplayer находятся в файле ~/.mplayer/config, который может состоять из нескольких секций с разными настройками для «чистого» mplayer и его графических оболочек (smplayer, gnome mplayer и т.п.). Одна из полезных опций — zoom = 1 — она заставляет mplayer автоматически масштабировать изображение до размеров окна при его растягивании/уменьшении — автоматический zoom видео в mplayer. Мои настройки приведены в качестве примера конфигурационного файла для mplayer:
С некоторых пор стал пользоваться эмулятором терминала urxvt (unicode-версия rxvt) вместо gnome-terminal. Причина простая — на старом ноуте разница в скорости заметна и эта разница — в пользу urxvt (особенно если запускать его при старте GUI в режиме демона).
В остальном отличий в общем-то нет, urxvt тоже поддерживает именованные вкладки (табы), обработку гиперссылок, копирование и вставку мышью. Кроме того, он имеет поиск по выводимым в терминал данным (по Alt+S — очень удобно) и поддерживает цветной вывод man-страниц. Также urxvt существует и для cygwin.
На этом вводную часть закончу и ниже просто на память, чтобы не перечитывать ман при необходимости настроить терминал, выложу конфиг для urxvt, выполненный в виде отдельного файла, подключаемого из .Xdefaults.
bash представляет собой модернизированную и усовершенствованную версию оболочки командной строки Bourne shell. В системах семейства *NIX bash на данный момент является одной из наиболее популярных и распространённых оболочек, на многих таких ОС (и например в эмуляторе unix-подобного окружения Cygwin) эта оболочка предустановлена.
Корнями bash уходит к оболочке sh за авторством Стивена Борна, разработанной им в 1978 г. и усовершенствованной в 1987 году Брайаном Фоксом. Дословно Bash можно расшифровать как Biurne-again-shell или «Ещё одна оболочка Борна». Также фамилия Борн созвучна со словом born (родившийся), что порождает альтернативное название: «вновь рождённая оболочка».
Порядок запуска Bash
При запуске bash, во-первых, считывает и исполняет команды из основного файла профиля /etc/profile (при условии существования такого файла). Затем происходит чтение файлов из домашней директории пользователя: $HOME/.bash_profile, $HOME/.bash_login, и $HOME/.profile и исполнение записанных в них команд. В момент завершения работы при выходе из оболочки вызываются команды из файла $HOME/.bash_logout.
Помимо перечисленных выше файлов, bash также распознаёт команды, описанные в так называемом дот-файле (или .rc-файле) $HOME/.bashrc (примеры — файлы .vimrc и .wgetrc) Обычно здесь содержатся пользовательские настройки внешнего вида оболочки, переопределения пользовательских команд и т.п. Пользовательские функции для bash в целях удобства восприятия полезно выносить в отдельный файл (например $HOME/.bash_function), который затем подключать из .bashrc командой source (source $HOME/.bash_function).
Примеры файлов настроек для bash
bashrc — основной файл настроек
Мой файл bashrc (открыть на новой странице) содержит основные настройки оболочки — алиасы, сохранение истории команд, вид приглашения командной строки, настройки вывода некоторых команд и т.п. Все пользовательские функции вынесены в отдельный файл .bash_functions, подгружаемый из .bashrc. Локальные настройки для разных машин (переменные окружения, цвета приглашения командной строки) также подгружаются из отдельных внешних файлов .bash_local.
bash_functions — функции оболочки
bash_functions (открыть на новой странице) — содержит определения пользовательских функций и подгружается по вызову из .bashrc.
bash_usage — справка по использованию bash
А небольшая справка по использованию самописных функций и некоторых, не слишком часто нужных, программ, у меня вынесена в отдельный файл bash_usage, который также подгружается из .bashrc: .bash_usage (открыть на новой странице) — содержит справку по пользовательским функцям и подгружается по вызову из .bashrc.
Остальные настройки оболочки, подключаемые в bashrc
Надумал и я побаловаться созданием простой и дешевой домашней системы видеонаблюдения и видеорегистрации (сподвигла меня на это статья из журнала «Хакер»). Естественно, что идея использовать веб-камеру и домашний компьютер в данном случае выглядит наиболее привлекательной.
Веб-камера для Linux
Свой выбор веб-камеры для Linux я остановил на Logitech Webcam C120 по ряду причин: во-первых, она отличается приемлемым качеством картинка (изображение с камер Genius аналогичного ценового диапазона меня не впечатлило совсем), во-вторых — камера работает по протоколу UVC, что означает её поддержку ядром Linux «из коробки» (штатно поддержка добавлена в ядро Linux с версии 2.6.26, также в Linux заработают веб-камеры, управляемые драйвером GSPCA) и в-третьих — эта веб-камера стоит всего 500 рублей и её мне не жалко разобрать с целью создания из неё ИК-камеры (камеры «ночного видения»).
Продолжу сохранение самых интересных своих конфигурационных файлов. Сегодня пришла очередь файла конфигурации для редактора vim — .vimrc (находится обычно в домашнем каталоге пользователя: ~/.vimrc, также пример файла есть в /etc/vim). Довольно много времени ему уделил, собирая настройки и разделяя их применение для разных ОС (Windows и Linux). А будет ли он завершён окончательно — даже и не знаю 🙂
Самое хорошее русскоязычное руководство (с примерами) по настройке Vim из встретившихся мне в интернете: Очередной HowTo по Vim. Именно из него я взял функцию для переключения раскладок клавиатуры без потери реакции редактора на нажатия управляющих клавишей в случае раскладки, отличной от английской.
Настроил сегодня на работе wget в качестве загрузчика в Firefox (при помощи плагина flashgot). Теперь и с файлообменников качает, и имена закачиваемым файлам даёт нормальные, а не из имени ссылки. Чтобы не забыть в дальнейшем, что да как и при необходимости иметь лёгкий доступ к описанию процесса — сохраню памятку тут. Что удобно — wget под Win можно не только из cygwin использовать, но и нативную сборку скопировать например в C:\Windows\System32 (я на флешке виндовую сборку вгета ношу — один файлик маленький, установки не требует — очень удобно когда стоит только IE на машине, который докачку поддерживать, видимо, никогда не научится). Читать далее Wget(rc) и flashgot — памятка→
Perl, Linux, программирование, настройка и что-нибудь ещё…