Архив рубрики «unix»

vim: внешние фильтры

29.04.2010

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

Выполнение внешней команды на диапазоне:

  1. :{диапазон} ! {команда}

При этом на STDIN команды подается содержимое диапазона, а затем диапазон заменяется выводом STDOUT команды.

Несколько примеров.

Форматирование всего исходного текста на perl с помощью perltidy:

  1. :% ! perltidy -es=4 -t -st

Отфильтровать с помощью команды grep все строки, содержащие символ "#" из строк 14-24:

  1. :14,24 ! grep -v "\#"

vim: сортировка

20.04.2010

Сортировать в vim очень просто:

  1. :{диапазон}sort

Диапазон подставится автоматически, если в визуальном режиме (V) выделить блок, а затем перейти в командный режим (:):

  1. :'<,'>

Или для сортировки всего файла:

  1. :%sort

Сортировка в обратном порядке:

  1. :%sort!

Сортировка в прямом порядке, удаляя все дубликаты:

  1. :%sort -u

Также для сортировки можно использовать внешние утилиты, например стандартный юниксовый sort:

  1. :%!sort --numeric-sort --reverse

Ну и как обычно, читаем маны:

  1. :help :sort

firefox: оптимизация внутренних баз данных sqlite

26.08.2009
  1. $ find .mozilla/firefox -type f -name "*.sqlite" -exec time sqlite3 \{\} "VACUUM" ";"

via

linux: как узнать (проверить) key fingerprint?

08.06.2009

Узнать fingerprint ключа можно при помощи команды ssh-keygen:

  1. # ssh-keygen -l -f /etc/ssh/ssh_host_rsa_key
  2. 2048 e2:02:50:2b:d8:1f:ce:d4:18:07:02:7b:22:90:44:25 /etc/ssh/ssh_host_rsa_key.pub (RSA)

По-умолчанию команда ищет публичный ключ и печатает для него fingerprint.

tar: Просмотр содержимого архива (tar.gz, tgz, tar.bzip2)

05.12.2008

Для вывода оглавления tar-архива используется команда -t:

  1. ~$ tar -tvf archive.tar
  2. -rw-rw-rw- 0 username groupname 45523421 Dec 5 16:17 file1.txt
  3. -rw-r--r-- 0 username groupname 13234112 Dec 5 16:17 file2.txt
  4. -rw-r--r-- 0 username groupname 75323624 Dec 5 16:17 file3.txt

Для tar.gz (tgz; tar+gzip):

  1. ~$ tar -ztvf archive.tar.gz
  2. ...

Для tar.bz2 (tar+bzip2):

  1. ~$ tar -jtvf archive.tar.bz2
  2. ...

Использованные команды:
-t – печать содержимого архива на stdout
-v - подробный вывод, аналог ключа -l утилиты ls. Без этой команды будет выведен краткий спискок файлов без размеров и прав.
-f имя_файла - использовать указанный файл в качестве архива, иначе читать с ленты
-zgzip-фильтр. В некоторых реализациях использовать необязательно.
-jbzip2-фильтр. В некоторых реализациях использовать необязательно.

Ubuntu: x-term в UTF-8, соединение с удаленным хостом в KOI8-R

27.11.2008

Дано: X-терминал в Ubuntu настроен на работу в локали ru_RU.UTF-8. Удаленный сервер может адекватно работать только с кодировкой ru_RU.KOI8-R. Что делать?

Решение: перекодировать на лету
Для этого удобно использовать утилиту luit, входящую в дистрибутив и устанавливаемую по умолчанию в составе пакета x11-utils.

  1. $ LANG=ru_RU.KOI8-R luit

Если случилось так, что у вас нет локали KOI8-R, то придется ее создать:

  1. $ sudo locale-gen ru_RU.KOI8-R

цветное приглашение bash prompt

15.10.2008

В unix-консоли, а в частности в приглашении bash можно использовать ANSI-последовательности для задания цветового вывода:

  1.  
  2. PS1='[\\e[01;32m]\\[email protected]\\h[\e[00m]:[\\e[01;34m]\\w[\\e[00m]$ '; export PS1

Цвет задается последовательностью вида \e[ATTR;FG;BGm, где ATTR - необязательный аттрибут, FG - цвет переднего плана, BG - цвет фона.

Сброс цвета к значению по умолчанию - \e[0m

Краткую таблицу соответствия кодов конкретным цветам опубликовал в статье "Prompt Magic" Дэниел Роббинс:

colortable.gif

С помощью ATTR можно делать текст полужирным, подчеркнутым, мигающим, и т.п.:

0 по-умолчанию
1 жирный
22 не жирный
4 подчеркнутый
24 не подчеркнутый
5 мигающий
25 не мигающий
7 инвертированный
27 не инвертированный

В качестве примера полезно посмотреть небольшой скрипт, выводящий на консоль таблицу возможных цветовых комбинаций:

  1. #!/bin/sh
  2. ############################################################
  3. # Nico Golde <nico(at)ngolde.de> Homepage: http://www.ngolde.de
  4. # Last change: Mon Feb 16 16:24:41 CET 2004
  5. ############################################################
  6.  
  7. for attr in 0 1 4 5 7 ; do
  8. echo "----------------------------------------------------------------"
  9. printf "ESC[%s;Foreground;Background - \\n" $attr
  10. for fore in 30 31 32 33 34 35 36 37; do
  11. for back in 40 41 42 43 44 45 46 47; do
  12. printf '\\033[%s;%s;%sm %02s;%02s ' $attr $fore $back $fore $back
  13. done
  14. printf '\\n'
  15. done
  16. printf '\\033[0m'
  17. done
  18.  

Ссылки по теме:

Макросы RCS

13.10.2008

Ниже приведен список макросов RCS, которые можно использовать внутри любых текстовых файлов. При checkout'е макрос будет развернут в значение.

Макросы RCS (RCS Keywords)

© http://babbage.cs.qc.edu/courses/cs701/Handouts/rcs_keywords.html

© Перевод Алексей Шатловский, 2008, http://shatlovsky.ru/blog/2008/10/13/makrosy-rcs/

$Author$
Имя учетной записи юзера, который внес зарегистрировал (check-in) последнию ревизию

$Date$
Дата и время (UTC) последнего check-in.

$Header$
Стандартный заголовок, содержащий полное имя RCS-файла, номер ревизии, дату (UTC), автора, состояние и имя учетной записи юзера, заблокировавшего ревизию (если заблокировано).

$Id$
То же, что и $Header$, но имя файла без полного пути.

$Locker$
Имя учетной записи юзера, заблокировавшего ревизию (пусто, если не заблокировано).

$Log$
Лог-сообщение, введенное во время checkin, предваренное заголовком, содержащим имя RCS-файла, номер ревизии, автора и дату. Существующие логи замещаются. Вместо этого, новые логи вставляются после $Log:...$. Это полезно для сохранения полной истории изменений исходного файла.

$RCSfile$
Имя RCS-файла без пути.

$Revision$
Номер ревизии.

$Source$
Имя и полный путь к RCS-файлу.

$State$
Состояние, назначенное ревизии опцией -s команд rcs(1) или ci(1).

vim: old-skool h0tkeyz

23.09.2008
  1.  
  2. " F2 = Save file
  3. map <silent> <f2> :write<cr>
  4. imap <silent> <f2> <esc>:write<cr>
  5.  
  6. " F10 = Exit without save
  7. map <silent> <f10> :quit<cr>
  8. imap <silent> <f10> <esc>:q<cr>
  9.  

Инструкция по установке Ruby + Gems + Rails на Ubuntu

19.09.2008

Ставим Ruby через менеджер пакетов apt-get:

  1. ~$ sudo apt-get install ruby rdoc irb libyaml-ruby libzlib-ruby ri libopenssl-ruby ruby1.8-dev build-essential

Пакеты rdoc и irb не входят в зависимости, хотя и необходимы для Gem и Rails.

Ставим RubyGems из исходников. Это позволит в дальнейшем RubyGems спокойно само-обновляться:

  1. ~$ wget "http://rubyforge.org/frs/download.php/38646/rubygems-x.x.x.tgz"
  2. ~$ tar -xvzf rubygems-x.x.x.tgz
  3. ~$ rm rubygems-x.x.x.tgz
  4. ~$ cd rubygems-x.x.x
  5. ~$ sudo ruby setup.rb
  6. ~$ cd ..
  7. ~$ rm -r rubygems-x.x.x

(НЕЛЬЗЯ запускать установку снаружи, типа use sudo ruby rubygemsx.x.x/setup.rb)

Теперь можно обновить RubyGems

  1. ~$ sudo gem update --system

Если эта команда не сработала, то, возможно, нужно создать симлинк /usr/bin/gem1.8 -> /usr/bin/gem

  1. ~$ sudo ln -s /usr/bin/gem1.8 /usr/bin/gem

Ставим Rails и mongrel через RubyGems:

  1. ~$ sudo gem install rails mongrel

Добавляем /var/lib/gems/1.8/bin/ в пути, и все готово!

  1. ~$ PATH=${PATH}:/var/lib/gems/1.8/bin/
  2. ~$ export PATH

[источник]

Харитон Мизгирь пишет: NB! если при установке какого-нибудь gem'а выдается ошибка
"no such file to load — mkmf"
это значит, что не установлен ruby1.8-dev, libsqlite3-dev
или еще какой-нибудь *-dev

  1. ~$ sudo apt-get install ruby1.8-dev libsqlite3-dev

и т.д.