Monday, November 27, 2006

 

mrxvt

Какая программа самая важная на *NIX десктопе? Правильно, терминалка!

Про нее и поговорим.

Исторически сложилось так, что моей первой любовью после освоения иксов стал Konsole. Динамически изменяемая кодировка, удобные настройки из меню - то, за что я продолжаю любить его и сейчас. Но у него есть и серьезный минус - скорость. На работе у меня довольно старый десктоп - P3-900, на нем переключение между 12-тью вкладками занимает какое-то время - немного, но все-таки слегка раздражает. Это было толчком к тому, чтобы отправиться на поиски альтернатив. Требования к ним такие: поддержка табов, несложное конфигурировние, очень желателен "broadcast" режим (когда все, что пишется на одну консоль дублируется на все остальные), скорость, желательно отсутсвие привязки к библиотекам вроде qt или gtk.

Когда я нашел mrxvt я был на седьмом небе от счастья. Однократного беглого прочтения мана был достаточно для того, чтобы написать сносный конфиг и начать наслаждаться жизнью. Проще показать скриншот (27Kb, 1600x1200):
Любимая цветовая схема, табы, между которыми программа переключается молниеносно, даже если она запущена удаленно. Это скриншот моего домашнего десктопа, на работе wm - enlightenment, там заголовок окна либо узкий и незаметный, либо вообще приложение работает в full-screen. Из того, что не получилось сделать "с разбега" - автоматическое переименование табов.

Но есть и минусы. Если использовать mrxvt совместно со screen, то они подвисают, оба, хотя последний все-таки поддается реанимации. Впрочем, так как я уже успел влюбиться в эту программу, буду пытаться заставить все это нормально работать - собирать из исходников свежую версию mrxvt, экспериментировать с screen..

Thursday, November 16, 2006

 

Hints [5..8]

[5]. Допустим, есть огромный (5Gb) файл, из которого нужно извлечь все строки, содержащие слово "error", а также посчитать md5 и количество строк. Можно сделать это в пять приемов и потратить полчаса, но есть способ проще и быстрее:

#cat big_file | tee >(md5) >(wc -l) | grep "error" > big_file_errors

Т.е. все нужные действия производятся за один цикл чтения!

Таким же образом можно скопировать файл с удаленного хоста и одновременно посчитать md5:

#ssh remote_host "cat /home/user/file" | tee >(md5) > file

(в linux вместо md5 нужно писать md5sum)

[6]. Если есть открытый ssh-сеанс на удаленной машине, можно поднять туннель, прямо в этом же сеансе. Комбинация клавиш "~C" позволяет отредактировать командную строку. Например, если написать "-D 1080", то будет поднят прокси на 1080-м порту.

[7]. При работе с лог-файлами в sh-скриптах может понадобиться преобразовать дату из human-readable формата в unixtime. Делается это так:

#date -j -f "%d/%m/%Y %H:%M:%S" "18/08/2006 16:43:02" "+%s"

Опция -j запрещает команде date делать попытки установить дату.
-f - формат даты в строке, которую следует разобрать
"+%s" - отобразить дату в формате unixtime. Если этот аргумент опустить, то дата будет выведена в стандартном UTC формате (пятница, 18 августа 2006 г. 16:43:02 (MSD))

[8]. Во FreeBSD есть утилита bdes, позволяющая (де)криптовать файлы из командной строки.

#cat file | bdes > file.cripted
Enter key:

Также есть утилита enigma, но криптостойкость ее алгоритмов очень низка.

Friday, November 03, 2006

 

Hints [1..4]

[1]. Если в баше запущена интерактивная команда (не демон), которая выполняется долго, можно узнать ее состояние, нажав Ctrl-T.
Например:
cat access_log | perl -pe 's/.*"(POST|GET.+?)"/$1/g;' > urls
[Ctrl-T]
load: 2.72 cmd: perl 9210 [running] 1.11u 2.44s 10% 3188k


[2]. Если написать
#mysql -u user -ppassword base
То выполнив ps axl можно увидеть пароль.
Если передавать его не через командную строку, а через переменную окружения MYSQL_PWD, то другим пользователям пароль виден не будет:
MYSQL_PWD=passsword mysql -u user base

Но от рута не спрячешься:
#ps axe

[3]. Во FreeBSD случайные пароли можно сгенерировать следующей командой:
#jot -r -c 8 a z | rs -g 0 8

[4]. Если наблюдать за файлом с помощью командый tail -f file, а файл периодически ротируется, то наблюдение остановится. Нужно использоватеь -F, чтобы tail отслеживал изменение дескриптора файла с заданным именем. BTW, в последних версиях FreeBSD команда tail позволяет указывать несколько файлов в аргументе -f.

This page is powered by Blogger. Isn't yours?