logo

muhas.ru — это просто блог…

О linux, о используемых или просто понравившихся инструментах, вобщем обо всем что окружает мою аскетичную компьютерную жизнь и показалось достойным упоминания или заметки «на память»

Консоль-раскарска — цветной man

Увидел на хабре запись под заголовком «Цветной man или как разукрасить вывод echo» автор которого цветном отображении манов так ничего и не сказал, зато о echo и собственно самих цветах наплел знатно. Комментировать на хабре не хочется, посему о раскрашивании скажу я.
Т.е. проведу краткий экскурс с пояснениями...

1) Программа в которой отображается страницы экранной документации aka man указана в переменной окружения $PAGER и указать в неё можно хоть vim (т.е. vimpager). Есть ещё $MANPAGER считывающая если переменная $PAGER не установлена.
По умолчанию программа man использует less (а именно команду less -s).

2) Расцветка зависит от программы указанной в $PAGER/$MANPAGER.

Рассказывать обо всех возможных программах для просмотра nroff/groff текста используемого в манах я не буду, расскажу о том как раскрасить умолчальный less и используемый мной most

less
Не имеет конфигурационного файла, зато читает переменные окружения.
export LESS_TERMCAP_mb=$'\E[01;31m'       # начала мигающего
export LESS_TERMCAP_md=$'\E[01;38;5;74m'  # начало жирного текста
export LESS_TERMCAP_me=$'\E[0m'           # окончание
export LESS_TERMCAP_so=$'\E[38;5;246m'    # начала текста в инфобоксе
export LESS_TERMCAP_se=$'\E[0m'           # конец его
export LESS_TERMCAP_us=$'\E[04;38;5;146m' # начало подчеркнутого
export LESS_TERMCAP_ue=$'\E[0m'           # конец подчеркнутого
Добавив сии строки в bashrc/zshrc мы увидем уже цветной ман. Можно и сделать алиас на man с этими переменными дыбы они без толку не висели. Значения цветов описыны в man dir_colors (когда-то частично и я описывал в своем zshrc), ну и в помянутом посте на хабре о значении цветов написано прилично, даже более чем.
Кстати, на хабре, несмотря на всю бестолковость топика, в комментариях приведен наглядный скрипт-памятка который привожу и я в конце поста, ибо пригодиться он может многим.

most
most уже имеет файл настроек — ~/.mostrc в котором помимо цветов можно настроить и сочетания клавиш, но сейчас мы о цветах... Вот мой ~/.mostrc
color normal gray default
color status white lightgray
color underline green default
color overstrike blue default
Здесь уже всё наглядно и понятно. color объект цвет_текста цвет_фона, где объекта всего четыре — underline (подчеркнутый текст), overstrike (якобы жирный), status (статусная строка) и normal (всё остальное).

Часто используемый more, к сожалению не разукрасить...

Вот такое вот пост у меня родился из-за не оправдавшего себя заголовка с хабра.

Обещанная наглядная памятка в виде скрипта
#!/bin/bash
echo -e "\033[00;30m 00;30m \033[00m \033[02;30m 02;30m \033[00m \033[01;30m 01;30m \033[00m \033[01;40m 01;40m \033[00m"
echo -e "\033[00;31m 00;31m \033[00m \033[02;31m 02;31m \033[00m \033[01;31m 01;31m \033[00m \033[01;41m 01;41m \033[00m"
echo -e "\033[00;32m 00;32m \033[00m \033[02;32m 02;32m \033[00m \033[01;32m 01;32m \033[00m \033[01;42m 01;42m \033[00m"
echo -e "\033[00;33m 00;33m \033[00m \033[02;33m 02;33m \033[00m \033[01;33m 01;33m \033[00m \033[01;43m 01;43m \033[00m"
echo -e "\033[00;34m 00;34m \033[00m \033[02;34m 02;34m \033[00m \033[01;34m 01;34m \033[00m \033[01;44m 01;44m \033[00m"
echo -e "\033[00;35m 00;35m \033[00m \033[02;35m 02;35m \033[00m \033[01;35m 01;35m \033[00m \033[01;45m 01;45m \033[00m"
echo -e "\033[00;36m 00;36m \033[00m \033[02;36m 02;36m \033[00m \033[01;36m 01;36m \033[00m \033[01;46m 01;46m \033[00m"
echo -e "\033[00;37m 00;37m \033[00m \033[02;37m 02;37m \033[00m \033[01;37m 01;37m \033[00m \033[01;47m 01;47m \033[00m"


PS. Напомню что про разукрашивании консоли я уже немного писал, в частности «Цвета в консоли zsh» и «Разукрашиваем вывод команд с помощью grc», может быть в них кто увидит для себя что-то полезное (grc рекомендую!)

PPS. alparo, смотрю по истории — у нас с тобой по этому поводу ещё в декабре беседа была)

vils и vimv — переименование файлов с помощью текстового редактора

переименование — vils и vimvvils — это скрипт на zsh позволяющий переименовывать файлы из текстового редактора.
Работает до ужаса просто, чем и подкупает...
vils [file ...]
Без указания файлов открывает для редактирования список файлов текущей директории.
Вот пример того как будет выглядеть текстовый файл
0001 filename1
0002 filename2
0003 filename3

Редактирую имя файла и сохраняя текстовый документ мы выполняем переименование. Проще простого, ну а текстовый редактор указанный в $EDITOR может позволить сделать что-то вроде массового переименование по шаблону или какие-нибудь другие чудеса, хотя использовать vils для редактирования имени нескольких файлов мне кажется удобнее всего.
Страница vils (скачать сам скрипт)

Есть ещё схожая по функционалу программа vimv (Vi move оффсайт) написанная на python и работающая в духе vim, хотя можно использовать и любой другой редактор. Отображает в текстовом редакторе список аналогично как и vils, но не показывает номера файлов (только их имена). Так же vimv немного функциональнее, к примеру, в списке файлов не отображает каталоги, ведь их он переименовывать как и vils не умеет.
Так же у vimv есть пара полезных опций придающих ему дополнительный функционал отсутствующий в vils:
  • -a — позволяет показывать скрытые файлы
  • -v, --verbose — показывает сделанные изменения после закрытия редактируемого файла
  • -e EDITOR, --editor=EDITOR — для указания редактора, который к сожалению нельзя внести в какой-нибудь конфиг или переменную окружения, так что придется указывать редактор каждый раз если не хочется пользовать vi (хотя заменить редактор в строке default='vi' в файле программы никто не запрещает)

Две очень схожих по функционалу консольных полезняшки — я разрвался в выборе, ибо vils может переименовывать список файлов, а vimv может принимать параметрами список каталогов файлы в которых надо переименовать. Но два одновременно пользовать не удобно, лишняя команда в памяти, посему написал небольшую обёртку для одновременного использования двух этих полезняшек, дабы не задумываться о том какую сейчас лучше запустить
#!/bin/sh
# враппер для переименовальщиков vils и vimv            #
# упрощающий одновременную работу с обоими              #
#########################################################
#            by muhas            #
#########################################################

# мало ли у вас они по другому названы
# к примеру vimv может быть vimv.py
# или вообще в переменной $PATH этих двух полезняшек нет
VILS="vils"
VIMV="vimv"

if [ .$1 = ."" ]; then 
	#если нет параметров то вызываем то что больше по нраву
	$VIMV
else
	if [ -d $1 ]; then
		# если первая опция окажится каталогом, то тогда лучше пользовать vimv
		$VIMV $@
	elif [ -f $1 ]; then
		# если первой опцией файл пойдет
		$VILS $@
	else
		# ну а если не файл и не каталог, то видимо какая-то опция, а опции у нас только vimv понимает
		$VIMV $@
	fi
fi
Надеюсь со временем vimv возымеет возможность редактирования списка файлов передаваемых в параметрах и надобность в этом врапере отпадет...

Охуенный блять совет в консоли!

Увидел сегодня в твиттере что у сайта охуенный блять совет появилось приложение для iphone/ipad/android. Полез посмотреть, а там и скрипт на bash.
Но он мне ужасно не понравился, ибо использует lynx (которого у меня в системе нет) и парсящий целых 2 страницы сайта. Такой достаточно многословный скрипт, в общем по заветам KISS решил упростить.
В итоге получился простой однострочник получающий рандомный совет
echo -e `curl -s  http://fucking-great-advice.ru/api/random | awk -F \" '{print $8}'` |sed 's/\ / /g'
Теперь я это в своем zsh вместо фортунок пользую!
В баше может не работать =)

UP и правда в баше не работало, пофиксил. теперь и в bash и в zsh работает

UP2 если у кого-то возникают проблемы и вместо руских букв видны странные последовательности, то можно использовать такой код
/usr/bin/printf "$(echo -e `curl -s http://fucking-great-advice.ru/api/random | awk -F \" '{print $8}'` | sed 's/\ / /g')"\\n 

UP3 Нелюбители курла могут заменить curl -s на wget -q -O -

AppSet

AppSet сразу после запускаAppSet — GUI фронтенд для консольных пакетных менеджеров, в частности для pacman/alpm. Ещё не так давно он выглядел в расцветку оффсайта ArchLinux, что несомненно придавало ему шарм, но сейчас уже выглядит как и все qt-приложения... Один из немногих вменяемых графических пакетных менеджеров для арча.

Что же этот AppSet умеет?
  • Автоматическая генерация пакетов по разделам (игры, офис, мультимедиа, интернет и т.д.)
  • Встроенный браузер, показывающий домашние страницы пакетов
  • Отображение новостей с сайта
  • Иконка в трее, показывающая доступные обновления
  • Очистка кэша пакетов
  • При установленном packer позволяет работать с AUR (у меня, почему-то, не стал искать по aur — но особого желания ковырять не было)
  • При запуске через appset-launch сам спрашивает пароль для sudo через kdesu или gksu (на крайнях xterm запускает, хотя просто через sudo никто)
  • Ну и конечно стандартный набор возможностей: установка; удаление; обновление; поиск; отображение списка установленных, неустановленных или требующих обновления. И всё это с возможность (опционально) видеть вывод бэкенда, то бишь pacman/packer

AppSet — установка пакета

PKGBUILD и оффсайт на котором ещё пару скринов.

PS. надеюсь он не отдаст концы как и многие другие графические пакетные менеджеры... Хотя, используемый во многих дистрибутивах PackageKit (имеющий как консольный так и gtk и qt интерфейсы) поддерживает ArchLinux (здесь список поддерживаемого — для арчеводов интересен бекенд alpm) и постоянно развивается, и судя по всему забрасывать его никто не собирается, скорее наоборот...

packer — облегчаем установку пакетов

packer —  пример интерактивного режима с поиском пакетов
packer — обертка для работы с pacman и AUR. Примечательным является то, что это всего лишь один bash-скрипт из почти восьмиста строк включая комментарии. Умеет packer не так много, но обычно этого не много более чем достаточно...
Ниже список опций, из которых заодно видны все возможности packer.
-Ss
Поиск пакетов
-S
Установка пакета
-Syu
Синхронизация реп и обновление
-G
Загрузка и распаковка тарбола из AUR, без установки
-h
Хелп =)
--ignore <'пакеты'>
Игнорирование пакетов
--noconfirm
Избавит от надоедливых y/n, делая всё не требуя подтверждения
--noedit
Избавит от вопросов о редактировании PKGBUILD'ов и пост-установочных файлов
--auronly
Работать только с AUR, к примеру, packer -Syu --auronly обновит пакеты только из AUR'а
--devel
Обновить пакеты находящиеся в разработке (git, svn, hg, etc)
--skipinteg
Пропустить проверку контрольных сумм для пакетов из AUR

Без опций показывает список найденного, в интерактивном режиме предлагает установить что-нибудь из этого. Удалять и искать по установленным не умеет, только искать, устанавливать, обновлять, смотреть информацию...

До yaourt или paktahn конечно далеко, но эта обертка к pacman и aur найдет своих пользователей (меня уже нашел). К packer, кстати, уже имеется GUI написанное с использование zenity (blinky) и zsh функции для автодополнения (zsh-packer).

PKGBUILD и исходники на github'е