Другие Системы
Монтирование JFFS2
Понадобилось мне примонтировать jffs2, кому интересно это была область конфигурации от одного из девайсов. Просто маунтиться он отказался, пришлось делать через mtdblock:
# подгружаем модуль modprobe mtdblock # копируем из файла в блок dd if=jffs2.img of=/dev/mtdblock0 # монтируем директорию mount -t jffs2 /dev/mtdblock0 /mnt/
наслаждаемся тем что внутри =) Точнее правим то что нужно и запаковываем обратно.
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-ам отношения не имеет.
unique - фильтрация дубликатов силами легендарного взломщика
искал способ убирать дубликаты строчек из файла.
привычный спобос
cat file_with_dupe | sort | uniq > distinct
не подходит, т.к. сбивает оригинальную сортировку.
помощь получил, с неожиданной стороны: легендарый взломщик паролей John The Ripper имеет в себе нужный мне функционал.
содержит утилитку unique, которая хоть и является симлинком на john, но вызывая её - получаю именно тот сортировщик:
cat file_with_dupe | ./unique distinct
к сожалению работает только в таком синтаксисе единственный параметр OUTPUT_FILE : принимает поток с stdin и отдает фильтрованный результат в файл OUTPUT_FILE
.vimrc в подкаталогах
Иногда случается полезным устанавливать некоторые настройки vim специфично для отдельных каталогов/подкаталогов.
Вот небольшой скриптец, который подгружает .vimrc из каталога, в котором открывается или создаётся файл.
function! Load_local_rc(dir)
if a:dir == expand("~")
return
endif
let rcfile = a:dir."/".".vimrc"
if ! filereadable(rcfile)
return
endif
execute "source ".rcfile
endfunction
autocmd BufReadPre * call Load_local_rc(expand("<afile>:p:h"))
autocmd BufNewFile * call Load_local_rc(expand("<afile>:p:h"))Дружелюбная конфигурация vim с нуля
Устанавливая vim в разных системах можно заметить, что чаще всего он ведет себя "совместимо" с vi. Это проявляется в первую очередь в реакции на нажатия курсорных клавиш в режиме вставки (портит текст =)). Отвечает за такое поведение опция "set nocompatible", но есть еще более простой способ получить дружественный конфигурационный файл vim по-умолчанию:
$ locate vimrcОтыскать среди вариантов vimrc_example и...
$ cp /путь/к/примеру/vimrc ~/.vimrcvim + gpg = удобное и безопасное хранилище приватной информации
пакет GnuPG позволяет легко и просто кодировать и декодировать файлы. вот например очень простой пример http://linsovet.com/gpg-file-crypt-decrypt
конечно можно указать множество опций для того что бы сделать хранения ваших данных еще более безопасным. но кодировать/декодировать каждый раз когда нужно добавить строчку в нужный файл мягко скажем.. напрягает Ж:-)
в этом случае вам поможет плагин к vim http://www.vim.org/scripts/script.php?script_id=661
достаточно бросить его в ~/.vim/plugin и открыть в vim зашифрованный файл с расширением .gpg.
кодирование/декодирование будет проходить на лету, поддерживается автоматическое распознавание множество опций декодировая.
счастливые обладатели Debian могут поставить пакет vim-scripts и скопировать или сделать линку в ~/.vim/plugin из /usr/share/vim-scripts/plugin/gnupg.vim
Обзор ncurses, библиотеки для консольного ввода-вывода.
В документе описаны такие жизненно необходимые функции библиотеки консольного ввода/вывода ncurses как очистка экрана, перемещение курсора, изменение цветов фона и символов, отключение вывода символов при вводе и многое другое. Большая часть была взята из официальной документации остальная часть из личного опыта использования. Надеюсь многим начинающим программистам под Linux и не только будет полезна.
Добавить из скрипта сообщение в системный лог
logger - команда bash для добавления сообщений в системный лог.
$ logger -t TEST more of a test here
Вот что появится в /var/log/syslog:
Oct 28 07:15:50 squeezel TEST: more of a test here
тэги, указываемые по -t можно посмотреть в /etc/syslog.conf. Они используются syslog для сортировки сообщений по различным файлам логов, если это настроено ("mail", "daemons", etc).
logger обязателен к применению в скриптах-демонах, или просто в скриптах, которые выполняются в бэкграунде.
По материалам http://souptonuts.sourceforge.net/how_to_linux_and_open_source.htm
Автокоррекция ошибок в названиях директорий
Чтобы включить:
$ shopt -s cdspell
Теперь сделаем опечатку в команде cd:
$ cd /usk/local
но мы все равно попадем в
/usr/local
Какие другие опции можно использовать? Получить все опции можно с помощью:
$ shopt -p
(Перевод TIP45 с http://souptonuts.sourceforge.net/how_to_linux_and_open_source.htm)
Как правильно задавать вопросы?
Если вы хотите получить ответ на интересующий вас вопрос, советую сначало почитать это.
Так же полезно почитать тем кто советы дает. И помним что эффективней всего учится помогая другим Ж:-)
Перевод "Как правильно задавать вопросы" by Eric Steven Raymond v.3.1
http://ln.com.ua/~openxs/articles/smart-questions-ru.html
Оригинал How To Ask Questions The Smart Way by Eric Steven Raymond v.3.2
http://catb.org/~esr/faqs/smart-questions.html


