$ find .mozilla/firefox -type f -name "*.sqlite" -exec time sqlite3 \{\} "VACUUM" ";"
Архив рубрики «shell»
firefox: оптимизация внутренних баз данных sqlite
26.08.2009freebsd+screen+mc: read (subshell_pty…): Unknown error: 0 (0)
07.07.2009Столкнулся с проблемой. Во FreeBSD под screen после отстрела mc новые экземпляры mc отказываются запускаться, выводя загадочное сообщение об ошибке:
read (subshell_pty...): Unknown error: 0 (0)
Похоже, проблема в том, что после отстрела mc остались процессы в состоянии STOP.
Воспроизвести глюк не удалось, поэтому привожу решение, которое помогло мне:
$ killall -CONT bash2
(посылаем CONT своему шеллу)
Ссылки по теме:
bash: горячие клавиши
17.06.2009Полный мануал как обычно:
man bash
, ключевые слова в квадратных скобках:
Перемещение:
слово-назад – Alt-B [backward-word (M-b)]
слово-вперед - Alt-W [forward-word (M-f)]
начало-строки - Ctrl-A [beginning-of-line (C-a)]
конец-строки - Ctrl-E [end-of-line (C-e)]
Удаление:
удалить-строку-вперед - Ctrl-K [kill-line (C-k)] - от курсора до конца строки
удалить-строку-назад - Ctrl-U [unix-line-discard (C-u)] - от курсора до начала строки
удалить-слово-вперед - Alt-D [kill-word (M-d)] - от курсора до конца слова
удалить-слово-назад - Alt-Backspace [backward-kill-word (M-Rubout)] - от курсора до начала слова
(Обновляется. Последнее изменение: 17 июня 2009 г.)
цветное приглашение bash prompt
15.10.2008В unix-консоли, а в частности в приглашении bash можно использовать ANSI-последовательности для задания цветового вывода:
PS1='[\\e[01;32m]\\u@\\h[\e[00m]:[\\e[01;34m]\\w[\\e[00m]$ '; export PS1
Цвет задается последовательностью вида \e[ATTR;FG;BGm, где ATTR - необязательный аттрибут, FG - цвет переднего плана, BG - цвет фона.
Сброс цвета к значению по умолчанию - \e[0m
Краткую таблицу соответствия кодов конкретным цветам опубликовал в статье "Prompt Magic" Дэниел Роббинс:

С помощью ATTR можно делать текст полужирным, подчеркнутым, мигающим, и т.п.:
| 0 | по-умолчанию |
| 1 | жирный |
| 22 | не жирный |
| 4 | подчеркнутый |
| 24 | не подчеркнутый |
| 5 | мигающий |
| 25 | не мигающий |
| 7 | инвертированный |
| 27 | не инвертированный |
В качестве примера полезно посмотреть небольшой скрипт, выводящий на консоль таблицу возможных цветовых комбинаций:
#!/bin/sh ############################################################ # Nico Golde <nico(at)ngolde.de> Homepage: http://www.ngolde.de # Last change: Mon Feb 16 16:24:41 CET 2004 ############################################################ for attr in 0 1 4 5 7 ; do echo "----------------------------------------------------------------" printf "ESC[%s;Foreground;Background - \\n" $attr for fore in 30 31 32 33 34 35 36 37; do for back in 40 41 42 43 44 45 46 47; do printf '\\033[%s;%s;%sm %02s;%02s ' $attr $fore $back $fore $back done printf '\\n' done printf '\\033[0m' done
Ссылки по теме:
- Linux Tips: Prompt Magic, by Daniel Robbins
- Colorful Shells -- Using ANSI Color Codes, by Nico Golde
vim tabs
01.10.2008Открыть сразу несколько файлов в tab'ах в vim можно так:
~$ vim -p `find -type f -name '*.rb' -print0 | xargs -0 file -i | grep -v 'utf-8' | awk '{print $1}' | sed 's/://'`
(пример от Харитона, открываем в vim все ruby-файлы в кодировке, отличной от utf-8)
Здесь важен ключ -p: открыть файлы в табах.
Vim откроет столько буферов, сколько нашлось файлов, но не более tabpagemax, по умолчанию 10. Изменить количество табов можно в ~/.vimrc так:
set tabpagemax=15
При превышении tabpagemax новые табы не создаются, но навигировать по файлам все равно можно командами :next и :last.
Переключаться между табами можно командами: :tabnext, :tabprevious, :tablast, :tabfirst. Можно замапить из на горячие клавиши. Можно пользоваться горячими клавишами <C-PgUp> and <C-PgDown>.
Ещё полезное:
:tabn[ew] - открыть новый таб
:tabe[dit] [++opt] [+cmd] {file} - открыть файл в новом табе (типа :edit)
:tabf[ind] [++opt] [+cmd] {file} - найти файл в path и открыть в новом табе (типа :find)
CTRL-W gf - редактировать файл с именем, находящимся под курсором, в новом табе
CTRL-W gF - редактировать файл с именем, находящимся под курсором, в новом табе. Отмотать на строку которая указана после имени файла
:tabc[lose][!] - закрыть таб
:tabo[nly][!] - закрыть все табы кроме активного
:tabn[ext] (gt, <C-PageDown>) - переключиться на следующий таб
:tabp[revious] (:tabN[ext], gT) - на предыдущий таб
:tabr[ewind] (:tabfir[st]) - на первый таб
:tabl[ast] - на последний
:tabs - список табов
:tabm[ove] [N] - переместить текущий таб на место сразу за N-ым
:tabd[o] {cmd} - выполнить команду на каждом из табов (:tabdo %s/foo/bar/g)
Подробнее здесь - :help tabpage
Еще интересная фишка. Если переместить курсор на имя файла и нажать gf (go-to-file), то откроется альтернативный буфер с содержимым указанного файла. Старый файл как-бы пропадет из поля зрения. Однако на него можно быстро переключиться командой C-^, так же и обратно. Так удобно редактировать 2 файла одновременно.
По поводу полезных маппингов:
http://www.bygonesky.com/Programming/Settings/Vim/carlos.vim.html, смотреть начиная со 125-й строки.
grep+awk: запросто вынимаем значение параметра из конфига
18.09.2008Задача: передать в sh-скрипт значение параметра PidFile из конфига apache.
Решение:
CONF="/usr/local/apache/conf/httpd.conf" PIDFILE=`grep -i ^[[:space:]]*pidfile $CONF | tail -n 1 | awk '{ print $2 }'`
Где:
grep -i ^[[:space:]]*pidfile $CONF
- выбираем из конфига все строки, начинающиеся сPidFile
tail -n 1
- берем последнюю из них
awk '{ print $2 }'
- выбираем из нее второе поле (значение)