BSD


Архивация динамического списка файлов, с отображением прогресса

Стояла задача - в страшно разветвленной помойке директорий и файлов выцепить все файлы определенных типов и затарить их в архив /tmp/archive.tar.gz. Дополнительно хотелось наблюдать за прогрессом с прогнозом времени выполнения. Было решено средствами find, pv, gawk (только gawk, с mawk не заработало) следующим образом:

find -type f -o -name \*.c -o -name \*.h -o -name \*.xsl -print0 |
    xargs -0 du -bs |
        awk '{s+=$1;sub(/^[0-9]*\t/,"");n=$0"\0"n;printf"scan files: %d\r",++i}END{ORS="";print n|"tar --null -cT-|pv -s "s"|gzip -9> /tmp/archive.tar.gz"}'
0
Ваша оценка: Ничего

ImageMagick, png и размер холста

При работе с изображениями в формате PNG не стоит забывать о «размере холста». В частности, утилиты из ImageMagick часто вычисляют смещение и размер, исходя именно из размера холста; чтобы этого избежать, используйте +repage.

0
Ваша оценка: Ничего

Удаление файлов по rsync

Команда

$ rsync -a /var/empty/ --delete --include 'файл' --exclude '*' каталог-приёмник

удаляет 'файл' из каталога приёмника.

0
Ваша оценка: Ничего

Подсветка man (и всего остального) в xterm-е

В XTerm-е есть возможность полужирный, подчёркнутый, мерцающий и инверсный режим вывода отображать цветом. Это позволяет «раскрашивать» не только man или less, а вообще всю стандартную выдачу.

3
Ваша оценка: Ничего Рейтинг: 3 (1 vote)

Утилита для urldecode/urlencode

Для преобразования URL из формата %-encoded (RFC 2396) можно использовать утилиту ascii2uni из пакета uni2ascii

5
Ваша оценка: Ничего Рейтинг: 5 (2 голоса)

Экспресс-отдача каталога по HTTP

Для того, чтобы отдать произвольный каталог по HTТP через произвольный порт в произвольной ОС, достаточно иметь установленный python.

5
Ваша оценка: Ничего Рейтинг: 5 (1 vote)

Добавляем на картинку watermark.

Иногда бывает надо сделать на фотографии или картинке, вкладываемой в инет, так называемый "водяной знак" - небольшую полупрозрачную подпись, например с вашим ником. :) Если это единичный случай, то тут конечно же поможет gimp или что-то похожее. А если вы собираетесь выложить альбом с отпуска, а в нем 200 фото? Тут конечно же на помощь придет старый добрый imagemagick. :)

4
Ваша оценка: Ничего Рейтинг: 4 (1 vote)
bliznezz аватар

выход из bash без сохранения истории

перевод типса из shell-fu.

самый простой вариант это SIGKILL своего шелла:

 kill -9 $$

вариант по-нежнее:

 unset SAVEFILE; unset HISTFILE;
0
Ваша оценка: Ничего
angel2s2 аватар

Настройка Fn-клавиш в Ubuntu на примере ASUS M50Vc

В этом посте хочу рассказать о том как настроить хоткеи типа Fn+F1 и т.д. на ноуте в ubuntu, но это так же справедливо для любого другого дистрибутива linux/bsd (уверен, хотя не проверял).

Читать дальше

0
Ваша оценка: Ничего

Persistent ZSH aliases (в bash тоже можно :)

Три уровня реальности.

Нулевой. В незапамятные времена я вынес определение aliases из .zshrc в другой файл, .zsh_aliases. Это разгрузило и без того тучный .zshrc, в котором остался только вызов

if [[ -f $ZDOTDIR/.zsh_aliases ]] { . $ZDOTDIR/.zsh_aliases; }

Первый. Теперь .zsh_aliases можно обрабатывать автоматически! Допустим, я по ходу работы придумал полезный alias. Но вот отвлекаться для редактирования .zsh_aliases не хочется. Что за беда? сделал alias с именем mkalias:

mkalias='alias | grep -v "='\''LC_ALL" | sed "s/^/alias /" > ~/.zsh_aliases'

Теперь зафиксировать сделанные в списке alias-ов изменения можно одной командой. И даже вставить её в .zlogout, чтобы управиться с задачей за 0 команд :).

Второй. А что это за "grep" такой лишний в mkalias? А это вот что. Есть несклько команд, которые я хочу запускать не в кодировке по умолчанию, а в другой. Например, man-ы хочу читать по-английски. Или GTK1-программы -- в кодировке всегда KOI8-R. Или, наоборот, stardict-gtk всегда в кодировке UTF-8. Помогает проставить LC_ALL: LC_ALL=соответств_кодировка команда, но лучше это превратить в alias. Вот у меня и заведены файлы .locale.кодировка, которые читаются из .zshrc так:

# alias some LC_ALL changes when running command
for N ($ZDOTDIR/.locale.*) {
  T="${N##*.locale.}"
  for F (`cat $N`) alias "$F"="LC_ALL=$T $F"
} || :

Так что строчки с '="LC_ALL' запоминать не надо, они генерируются. Отсюда и grep -v в mkalias. Более того, .zshrc и .zsh_aliases у меня на всех машинах одинаковые (и на Linux разных конфессий, и на FreeBSD разных версий). А вот .locale.* -- везде разный, т. к. на некоторых машинах по умолчанию стоит одна кодировка, на некоторых -- другая, там одни программы капризничают, тут другие.

Каким способом .zshrc и .zsh_aliases у меня на всех машинах получаются одинаковые? А это к alias-ам отношения не имеет.

5
Ваша оценка: Ничего Рейтинг: 5 (1 vote)
bliznezz аватар

unique - фильтрация дубликатов силами легендарного взломщика

искал способ убирать дубликаты строчек из файла.
привычный спобос

cat file_with_dupe | sort | uniq > distinct

не подходит, т.к. сбивает оригинальную сортировку.
помощь получил, с неожиданной стороны: легендарый взломщик паролей John The Ripper имеет в себе нужный мне функционал.
содержит утилитку unique, которая хоть и является симлинком на john, но вызывая её - получаю именно тот сортировщик:

cat file_with_dupe | ./unique distinct

к сожалению работает только в таком синтаксисе единственный параметр OUTPUT_FILE : принимает поток с stdin и отдает фильтрованный результат в файл OUTPUT_FILE

5
Ваша оценка: Ничего Рейтинг: 5 (1 vote)

Подсветка tail -f

При просмотре логов с помошью tail -f подсвечиваем нужные слова:

tail -f /var/log/messages | perl -pe 's/(aaa|bbb)/\e[0;36;10m$&\e[0m/g'

Разбор полётов:
(aaa|bbb) - подсветка строк aaa и bbb.
\b((aaa|bbb)\b - подсветка слов aaa и bbb.
.*\b((aaa|bbb)\b.* - подсветка строчки, в которой встречаются aaa и bbb.

P.S. украденно отсюда:
http://fixunix.com/unix/83044-tail-color.html

0
Ваша оценка: Ничего

mutt. Удаление дублирующихся писем.

По мотивам типсов:
1. вторично отправляем почту в procmail
2. Удаление писем в mutt по образцу

Воспользовавшись первым типсом перекинул все, что лежит в mbox через procmail, перефильтровав тем самым всю старую почту в соответствии с новыми правилами в .procmailrc. Процесс прошел успешно, не считая того, что каждое письмо в mbox продублировалось.

Итак, удаляем дубликаты:
1. Shift-d
2. Вводим pattern: ~=
3. Применяем: $

0
Ваша оценка: Ничего

Настройка функциональных клавиш в ZSH

Как единообразно задействовать функциональные клавиши в zsh на различных терминалах

5
Ваша оценка: Ничего Рейтинг: 5 (1 vote)

Как открывать ссылки из URxvt в браузере при помощи мыши?

Раньше я знал только один ответ - "выделить ссылку мышкой, открыть браузер, и вставить в адресную строку средней кнопкой". Но как всегда нашелся способ попроще ) Научить urxvt делать такие вещи так же, как и другие более "продвинутые" терминалы очень просто. Для этого нужно добавить в ~/.Xdefaults такие вот строки:

URxvt.perl-ext-common:  default,matcher
URxvt.urlLauncher:	firefox
URxvt.matcher.button:	1
URxvt.colorUL: 		#86a2be

Это сделает URL в терминале подчеркнутыми, выделенными голубым цветом, и левый клик на них будет открывать новые вкладки в firefox.

0
Ваша оценка: Ничего

Vim. Перевод из шестнадатиричной в десятичную систему счисления

:echo 0xff
255

That's all (-:

5
Ваша оценка: Ничего Рейтинг: 5 (1 vote)

Полезные советы по FreeBSD

Случайно нашел ленточку советов по FreeBSD на русском:
http://www.igosha.com/archives/category/freebsd

плюс в догонку мои URL's по FreeBSD:
http://delicious.com/pebu3op/FreeBSD

3
Ваша оценка: Ничего Рейтинг: 3 (2 голоса)

dzen + словарь

Иногда, читая man pages или какую-нибудь документацию в txt, html или в в .pdf наталкиваемся на иностранное слово отсутствующее в нашем словарном запасе.
Что делаем:

  1. Выделям незнакомое слово мышкой
  2. Открываем программу-словарик
  3. Делаем paste и получаем перевод

Слишком много телодвижений для столь простой задачки. Что можно придумать:

  1. Выделям незнакомое слово мышкой
  2. Нажимаем хоткей и на экране появляется окошко с переводом до следующего нажатия тогоже хоткея

Решение:

  1. Инсталируем dzen и словарики: sdcv или dict
  2. Пишем скрипт:
  3. #!/bin/sh
     
    PID=$(ps wwax |grep "dzen2.*$WHEREX.*$WHEREY.*$WIDTH.*$FG" |grep -v grep |awk '{print $1}')
     
    if [ ${#PID} -ne 0 ]
    then
    	kill -9 $PID
    else 
    	xsel -p | xargs sdcv -n | sed '/^$/d' | \
5
Ваша оценка: Ничего Рейтинг: 5 (1 vote)

читалка заголовков писем на googlemail

Читалка заголовков мэйлов с googlemail:

#!/bin/sh
 
URL='https://mail.google.com/mail/feed/atom'
 
curl --silent -u name@googlemail.com:passwd $URL | \
	grep -v Gmail | \
while read line
do 
	echo $line | grep "<title>" 1>/dev/null \
		&& TITLE=`echo $line | sed -e 's/<title>//' -e 's/<\/title>//'`;\
	echo $line | grep "<name>" 1>/dev/null	\
		&& NAME=`echo $line | sed -e 's/<name>//' -e 's/<\/name>//'`;\
	echo $line | grep "<email>"  1>/dev/null \
		&& EMAIL=`echo $line | sed -e 's/<email>//' -e 's/<\/email>//'` && \
	echo $(echo $NAME "<"$EMAIL">" $TITLE)
done



P.S. Лучшего применения чем прикрутить эту штуку на dzen не нашел :-)

5
Ваша оценка: Ничего Рейтинг: 5 (2 голоса)

xmonad + Dzen + Task List Menu

Простенькая переключалка между открытыми окнами в xmonad

  1. Сначала воспользуемся предыдущим советом, и сделаем поддержку wmctrl в xmonad
  2. Далее:
    (echo "Task List"; wmctrl -l)| \
    dzen2 -m -p -x $WHEREX  -w $WIDTH -fg $FG -bg $BG -l 15 -fn $FONT \
    -e 'button1=menuprint;button3=exit;entertitle=uncollapse;leaveslave=collapse' | \
    awk '{system("wmctrl -s " $2)}'

После выполнения вышеприведенной команды в dzen статус баре появляется "Task List".
Меню открывается при наведении мышкой на "Task List".
Правая кнопка мышки убирает меню со статусбара.

Переменные WHEREX, WIDTH, FG, BG, FONT инициализировать по личным предпочтениям.

В атачменте мой скрипт, который, подвешанный на хоткей, будет работать как включатель/выключатель Task List меню.

P.S.

5
Ваша оценка: Ничего Рейтинг: 5 (2 голоса)