<?xml version='1.0' encoding='UTF-8'?><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/" xmlns:blogger="http://schemas.google.com/blogger/2008" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" version="2.0"><channel><atom:id>tag:blogger.com,1999:blog-1682109473821884523</atom:id><lastBuildDate>Mon, 09 Sep 2024 08:42:40 +0000</lastBuildDate><category>утилиты</category><category>i18n</category><category>мелочи</category><category>gnome</category><category>администрирование</category><category>решения</category><category>аудио</category><category>текст</category><category>железо</category><category>интерфейс</category><category>сеть</category><category>система</category><category>файлы</category><category>ядро</category><category>bash</category><category>видео</category><category>управление пакетами</category><category>sed</category><category>графика</category><category>консоль</category><category>офис</category><category>терминал</category><category>установка</category><title>ubuntu/linux: советы и решения</title><description>Решения тех проблем, с которым мне приходилось сталкиваться.</description><link>http://ubuntuzer.blogspot.com/</link><managingEditor>noreply@blogger.com (morridzh)</managingEditor><generator>Blogger</generator><openSearch:totalResults>78</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1682109473821884523.post-8214082144437076740</guid><pubDate>Mon, 13 Jul 2015 08:58:00 +0000</pubDate><atom:updated>2015-07-13T11:59:41.799+03:00</atom:updated><title>Хранилище паролей</title><description>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Очень элегантное хранилище паролей на основе GPG.&lt;br /&gt;
Вот ссылка:&amp;nbsp;&lt;a href=&quot;http://www.passwordstore.org/&quot;&gt;the standard unix password manager&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Так что для начала нужно иметь GPG ID. Сгенериться, если в-кратце, так:&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;code&gt;
gpg --gen-key
&lt;/code&gt;
&lt;/blockquote&gt;
Допустим наш ID теперь foobar@foobar.com. Инициализируем хранилище:&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;code&gt;pass init &quot;foobar@foobar.com&quot;&lt;/code&gt;&lt;/blockquote&gt;
Пользоваться так. Добавление:&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;font-family: monospace;&quot;&gt;pass insert Business/root-password&lt;/span&gt;&lt;/blockquote&gt;
Здесь Business/root-password запись root-password в подкаталоге Business.&lt;br /&gt;
Посмотреть пароль:&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&amp;nbsp;&lt;span style=&quot;font-family: monospace;&quot;&gt;pass Business/root-password&lt;/span&gt;&lt;/blockquote&gt;
&lt;/div&gt;
</description><link>http://ubuntuzer.blogspot.com/2015/07/blog-post.html</link><author>noreply@blogger.com (morridzh)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1682109473821884523.post-8283591888444175383</guid><pubDate>Wed, 28 Dec 2011 19:40:00 +0000</pubDate><atom:updated>2011-12-28T23:51:09.441+04:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">sed</category><category domain="http://www.blogger.com/atom/ns#">утилиты</category><title>удаление лишних пробелов в конце строки</title><description>Задача из области написания кода. Часто случается так, что в конце строки образуются лишние пробелы. Как их быстрее всего увидеть и удалить? Приходит на помощь sed.&lt;br /&gt;&lt;br /&gt;На первый взгляд, задача тривиальна:&lt;br /&gt;&lt;pre&gt;sed -ri &#39;s/\s+$//g&#39; foobar&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Но есть в ней одна засада. Если исходный файл foobar имеет переводы строк системы DOS/Windows (т.е. два символа CR-LF), то символ \r в unix системах будет трактован тоже как пробел и соответственно удален. В итоге вместе с пробелами поменяются и переводы строк. Что может быть нежалательно.&lt;br /&gt;&lt;br /&gt;Правильнее будет сделать так:&lt;br /&gt;&lt;pre&gt;sed -ri &#39;s/ +(\r)?$/\1/g&#39; foobar&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;В данном случае мы запоминаем, был ли в конце строки символ \r и заменяем последовательность пробелов (именно пробелов, а не вообще пробельных символов) на этот символ (или его отсутствие, если исходный файл с переводами *nix).&lt;br /&gt;&lt;br /&gt;Ну и еще пара моментов. Флаг &lt;code&gt;-r&lt;/code&gt;, расширенные регулярные выражения, просто чтобы не писать лишние бэкслеши. Флаг &lt;code&gt;-i&lt;/code&gt; замена файла in-place, т.е. и поток будет прочитан из файла и записан в него же.&lt;br /&gt;&lt;br /&gt;Ну и наконец команда, чтобы выполнить данную операцию для всех файлов директории.&lt;br /&gt;&lt;pre&gt;find . -name &#39;*.java&#39; -exec sed -ri &#39;s/ +(\r)?$/\1/g&#39; \{\} \;&lt;/pre&gt;</description><link>http://ubuntuzer.blogspot.com/2011/12/blog-post.html</link><author>noreply@blogger.com (morridzh)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1682109473821884523.post-6627119989286740650</guid><pubDate>Mon, 28 Nov 2011 07:08:00 +0000</pubDate><atom:updated>2011-11-28T11:14:16.314+04:00</atom:updated><title>смена пароля postgres</title><description>Если забыт пароль рутового пользователя postgres.&lt;br /&gt;&lt;br /&gt;1. Редактируется конфиг postgres для входа без пароля. &lt;br /&gt;&lt;pre&gt;vim /etc/postgresql/&lt;strong&gt;version&lt;/strong&gt;/main/pg_hba.conf&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Должна быть строчка:&lt;br /&gt;&lt;pre&gt;local all postgres ident sameuser&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;2. Перезапускаем сервис:&lt;br /&gt;&lt;pre&gt;service postgresql-&lt;strong&gt;version&lt;/strong&gt; restart&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;3. Логинемся в postgres:&lt;br /&gt;&lt;pre&gt;sudo su postgres -c psql template&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;4. Меняем пароль:&lt;br /&gt;&lt;pre&gt;ALTER USER postgres with PASSWORD &#39;password&#39;;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;5. Меняем строчку в pg_hba.conf обратно. Например:&lt;br /&gt;&lt;pre&gt;local all postgres md5 sameuser&lt;/pre&gt;</description><link>http://ubuntuzer.blogspot.com/2011/11/postgres.html</link><author>noreply@blogger.com (morridzh)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1682109473821884523.post-5845824545720204038</guid><pubDate>Fri, 18 Nov 2011 18:33:00 +0000</pubDate><atom:updated>2011-11-18T22:33:59.829+04:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">система</category><title>Тестирование скорости записи</title><description>Случайно наткнулся, отличная заметка как узнать скорость записи на диск в linux.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://romanrm.ru/en/dd-benchmark&quot;&gt;http://romanrm.ru/en/dd-benchmark&lt;/a&gt;</description><link>http://ubuntuzer.blogspot.com/2011/11/blog-post.html</link><author>noreply@blogger.com (morridzh)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1682109473821884523.post-8610442165461071767</guid><pubDate>Thu, 14 Jul 2011 08:05:00 +0000</pubDate><atom:updated>2011-07-14T12:09:14.479+04:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">решения</category><category domain="http://www.blogger.com/atom/ns#">утилиты</category><title>&quot;Пул&quot; процессов в bash</title><description>Интересный способ имитации пула процессов найден с помощью команды xargs.&lt;br /&gt;&lt;br /&gt;Известно, что эта команда может выполнить некую процедуру для каждого элемента из входного списка (stdin). Оказывается, она способна выполнять процедуру не последовательно для каждого элемента, а поддерживать выполнение заданного количество копий. Т.е. если на входе у нас 1 2 3 4 5 6 7 8 9 10 и мы хотим одновременное выполнение 4 процессов, то xargs сразу же запустит 4 процесса для 1 2 3 4 и как только кто-то из них завершит выполнение запустит новый уже с аргументом 5 и так далее.&lt;br /&gt;&lt;br /&gt;Очень удобно, на самом деле, в некоторых случая. В общем, все просто - опция --max-procs.</description><link>http://ubuntuzer.blogspot.com/2011/07/bash.html</link><author>noreply@blogger.com (morridzh)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1682109473821884523.post-7509889495518451246</guid><pubDate>Thu, 05 May 2011 18:49:00 +0000</pubDate><atom:updated>2011-05-05T22:54:39.607+04:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">решения</category><title>Создание &quot;разреженного&quot; (sparse) файла</title><description>Для виртуальной машины требуется создать образ диска в файле. Чтобы это быстрее сделать (если образ большой), и файл занимал меньше места на диске, можно создать &quot;разреженный&quot; файл. Делается так:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;dd if=/dev/zero of=myimage.img bs=1 count=0 seek=16G&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;В данном случае размер образа 16G, но пока он не будет использован, на диске места он не займет.</description><link>http://ubuntuzer.blogspot.com/2011/05/spare.html</link><author>noreply@blogger.com (morridzh)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1682109473821884523.post-3107204886295263051</guid><pubDate>Thu, 05 May 2011 18:45:00 +0000</pubDate><atom:updated>2011-05-05T22:49:39.908+04:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">решения</category><title>Подсветка типов файлов в mc</title><description>В относительно свежих версия ubuntu, например, в стабильной 10.04 у &lt;code&gt;mc&lt;/code&gt; поломана функция раскраски файлов разных типов. Починяется так:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;apt-get source mc&lt;br /&gt;sudo cp mc-4.7.0/misc/filehighlight.ini /usr/share/mc&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Если не работает &lt;code&gt;apt-get source&lt;/code&gt; нужно поставить пакет &lt;code&gt;dpkg-dev&lt;/code&gt;</description><link>http://ubuntuzer.blogspot.com/2011/05/mc.html</link><author>noreply@blogger.com (morridzh)</author><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1682109473821884523.post-1617767214739392414</guid><pubDate>Mon, 21 Feb 2011 08:57:00 +0000</pubDate><atom:updated>2011-02-21T11:58:00.445+03:00</atom:updated><title>midnight commander и двойной путь</title><description>Midnight Commander дважды выводит путь своей командной строке (та что снизу). Если путь получается длинный -  то он начинает занимать всю ширину экрана, а на собственно команду не остается места. Сей глюк проявляется только в терминальный программах (в консоли все отлично).&lt;br /&gt;Решение найдено &lt;a href=&quot;http://ubuntuforums.org/showthread.php?t=1007175&quot;&gt;на убунтовском форуме&lt;/a&gt;.</description><link>http://ubuntuzer.blogspot.com/2011/02/midnight-commander.html</link><author>noreply@blogger.com (morridzh)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1682109473821884523.post-4298008419919559726</guid><pubDate>Fri, 29 Oct 2010 08:29:00 +0000</pubDate><atom:updated>2010-10-29T15:48:43.419+04:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">терминал</category><category domain="http://www.blogger.com/atom/ns#">утилиты</category><title>Звук по завершении долгой консольной команды</title><description>Допустим, нужно выполнить в терминале команду, которая выполняется достаточно долго, чтобы ее дожидаться ничем больше не занимаясь. В тоже время, бывает такая потребность, что как только команда выполнится нужно сделать какое-то следующее действие. Ну и вообще, просто чтобы не забыть, что она вообще там выполняется.&lt;br /&gt;Придумано такое решение. Можно в командной строке указать, что после требуемой команды выполнить еще одну, которая ... подаст звуковой сигнал!&lt;br /&gt;В простейшем случае воспроизвести звук из терминала можно командой beep. Чтобы не спутать звук, с обычным сигналом bell из терминала, в параметрах beep можно указать длительность и частоту звука. Звук будет воспроизведен через встроенный динамик (pc speaker).&lt;br /&gt;Пример:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;do_time_consuming_task; beep -f 1000 -l 500 -r 3&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;upd&lt;/b&gt; В xterm обнаружилась интересная функция. Называется PopupOnBell, в простейшем случае активируется при запуске с ключом -pob. В таком режиме, если на терминал выводится символ ASCII BELL (код 0x07 или 8-ричный 007), то окно терминала уведомляет менеджер о наличии активности (точно не знаю как назвать), после чего Desktop Manager, например, Gnome отображает кнопку такого окна на панели задач мигающей (примерно так, как если свернутый Instant Messanger получает новое сообщение).&lt;br /&gt;Соответственно, можно, например, чтобы каждый раз, как shell в терминале получает управление (выводит приглашение) терминал сообщал о активности.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;PS1=&quot;\\007$PS1&quot;&lt;br /&gt;sleep 5&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Если выполнить эти команды, а потом свернуть окно xterm, то через 5 секунд оно замигает в панели задач.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;upd #2&lt;/b&gt; &lt;a href=&quot;http://mikelward.com/software/gnome/flashing-terminal&quot;&gt;Аналогичное решение для gnome-terminal.&lt;/a&gt;</description><link>http://ubuntuzer.blogspot.com/2010/10/blog-post_29.html</link><author>noreply@blogger.com (morridzh)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1682109473821884523.post-5134153746588934668</guid><pubDate>Wed, 20 Oct 2010 12:46:00 +0000</pubDate><atom:updated>2010-10-20T16:57:43.311+04:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">утилиты</category><title>Длинная командная строка через xargs</title><description>Иногда приходится выполнить команду с таким количеством аргументов, что &#39;*&#39; (звездочка) уже не работает - shell пытается создать слишком длинную командную строку. Выход - разбить список на несколько более мелких и выполнить команду для каждого из них. В том числе и для этого создана команда &lt;code&gt;&lt;strong&gt;xargs&lt;/strong&gt;&lt;/code&gt;.&lt;br /&gt;Она получает список из stdin и выполняет переданную ей команду подставляя список в качестве ее аргументов. Для разбития списка на куски есть разные опции (-n или -s).&lt;br /&gt;Но до сего момента я не подозревал, что список аргументов может быть не в самом конце нужной команды, но и в любом месте.&lt;br /&gt;Для примера. Если нужно скопировать кучу файлов и &lt;code&gt;cp * &amp;lt;dest&amp;gt;&lt;/code&gt; не работает. Пробуем писать:&lt;br /&gt;&lt;pre&gt;ls * | xargs -n 1000 cp /dest&lt;/pre&gt;&lt;br /&gt;И оно тоже не будет работать, потому как список аргументов от xargs будет подставлен в конец команды cp и в итоге будет выглядеть примерно как:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;cp /dest arg1 arg2 ... argn&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Как поместить список аргументов в нужное место? А вот это в man&#39;е не совсем очевидно при первом прочтении. А в итоге нужно делать так:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;ls * | xargs -n 1000 -I FILES cp FILES dest&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Что тут происходит? Опция -I сообщает xargs, что если подстрока &#39;FILES&#39; встретится где-либо в части исполняемой команды (initial arguments), то именно в это место и нужно раскрыть список аргументов из stdin.</description><link>http://ubuntuzer.blogspot.com/2010/10/xargs.html</link><author>noreply@blogger.com (morridzh)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1682109473821884523.post-8142530454356144450</guid><pubDate>Mon, 18 Oct 2010 07:39:00 +0000</pubDate><atom:updated>2010-10-18T11:42:22.684+04:00</atom:updated><title>Консольная мышь</title><description>Заимев в пользование IP-KVM, осознал потребность в консольной мыше. Для этой цели в ubuntu наличествует пакет gpm.&lt;br /&gt;&lt;pre&gt;apt-get install gpm&lt;/pre&gt;</description><link>http://ubuntuzer.blogspot.com/2010/10/blog-post.html</link><author>noreply@blogger.com (morridzh)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1682109473821884523.post-9045962015425950244</guid><pubDate>Fri, 02 Apr 2010 12:34:00 +0000</pubDate><atom:updated>2010-04-02T16:37:18.368+04:00</atom:updated><title>Удалить старые файлы и папки в корзину</title><description>Надоело чистить папку downloads руками? Можно добавить в crontab такую строчку:&lt;br /&gt;&lt;pre&gt;/usr/bin/find /home/user/downloads/ -maxdepth 1 -ctime +30 -exec trash {} ;&lt;/pre&gt;&lt;br /&gt;Действует она просто - удаляет в коризну все файлы старше 30 дней из подкаталога downloads домашнего каталога. У меня настроен ее запуск при перезагрузке.</description><link>http://ubuntuzer.blogspot.com/2010/04/blog-post.html</link><author>noreply@blogger.com (morridzh)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1682109473821884523.post-8280717935849607483</guid><pubDate>Wed, 10 Feb 2010 11:23:00 +0000</pubDate><atom:updated>2010-02-10T14:29:19.047+03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">bash</category><title>Считать пароль с клавиатуры</title><description>Как считать некий текст с клавиатуры, без его отображения на терминале? Для этого у внутренней bash&#39;евской команды read есть специальный ключ -s (silent). Если в качестве последнего аргумента не указано имя переменной, куда нужно поместить результат, то результат помещается в переменную REPLY.&lt;br /&gt;А нужно это было примерно для такого:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;read -s &amp;&amp; adduser2custombase.pl newuser $REPLY&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;После выполнения в терминале этой строчки приглашался пользователь, который задавал свой пароль.</description><link>http://ubuntuzer.blogspot.com/2010/02/blog-post.html</link><author>noreply@blogger.com (morridzh)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1682109473821884523.post-165035364819328846</guid><pubDate>Thu, 10 Dec 2009 12:59:00 +0000</pubDate><atom:updated>2009-12-10T16:08:26.853+03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">текст</category><title>посчитать кол-во некоторого символа в файле</title><description>Допустим, ищем количество запятых (,) в файле. Нашел в интернете несколько решений:&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;&lt;pre&gt;awk &#39;{c+=gsub(s,s)}END{print c}&#39; s=&#39;,&#39; input.txt&lt;/pre&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;pre&gt;grep -o \, input.txt | wc -l&lt;/pre&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;pre&gt;tr -dc \, &lt; input.txt | wc -c&lt;/pre&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;</description><link>http://ubuntuzer.blogspot.com/2009/12/blog-post.html</link><author>noreply@blogger.com (morridzh)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1682109473821884523.post-6473513786011847403</guid><pubDate>Thu, 12 Nov 2009 05:59:00 +0000</pubDate><atom:updated>2009-11-12T09:05:44.608+03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">железо</category><category domain="http://www.blogger.com/atom/ns#">мелочи</category><title>Обновить список UUID дисков</title><description>Если создать новый раздел на диске, то список UUID известных ядру не обновляется. Т.е. несмотря на то, что UUID уже есть (&lt;a href=&quot;/2008/10/uuid.html&quot;&gt;как посмотреть&lt;/a&gt;), раздел не монтируется по идентификатору. Чтобы список UUID обновить нужно выполнить команду:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;udevtrigger&lt;br /&gt;&lt;/pre&gt;</description><link>http://ubuntuzer.blogspot.com/2009/11/uuid.html</link><author>noreply@blogger.com (morridzh)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1682109473821884523.post-7175208064720313557</guid><pubDate>Mon, 26 Oct 2009 12:51:00 +0000</pubDate><atom:updated>2009-10-26T15:53:22.154+03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">мелочи</category><title>Посчитать количество повторяющихся строк</title><description>Например, есть файл с таким содержимым:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;A&lt;br /&gt;B&lt;br /&gt;A&lt;br /&gt;C&lt;br /&gt;B&lt;br /&gt;A&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Нужно получить такое:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;A - 3&lt;br /&gt;B - 2&lt;br /&gt;C - 1&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Можно это сделать с помощью awk, но еще проще сделать с помощью утилиты uniq с ключом -c.</description><link>http://ubuntuzer.blogspot.com/2009/10/blog-post_26.html</link><author>noreply@blogger.com (morridzh)</author><thr:total>2</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1682109473821884523.post-4805473405523939924</guid><pubDate>Wed, 21 Oct 2009 09:49:00 +0000</pubDate><atom:updated>2009-10-21T13:56:57.375+04:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">мелочи</category><title>сконвертить секунды unix в человеческий формат</title><description>Как, например, преобразовать число 1256118655, являющееся количеством &lt;a href=&quot;http://en.wikipedia.org/wiki/Unix_time&quot;&gt;секунд с начала Эпохи&lt;/a&gt; в нормальное представление?&lt;br /&gt;Вот такой командой:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;date -d @1256118655&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Т.е. - отобразить (-d) дату, заданную строкой @1256118655. Здесь именно &#39;@&#39; указывает, что исходное число - unix time. А в man date об этом не сказано. Но зато сказано в info date. В этом отличие команды GNU date от аналогичной в BSD. Там формат исходой даты можно задавать явно, а в линукс команда в большинстве случае догадывается и парсит его сама, за исключением вот таких особых случаев, когда ей нужно явно на это намекнуть.</description><link>http://ubuntuzer.blogspot.com/2009/10/unix.html</link><author>noreply@blogger.com (morridzh)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1682109473821884523.post-5678764565745982512</guid><pubDate>Tue, 06 Oct 2009 06:14:00 +0000</pubDate><atom:updated>2009-10-06T10:17:32.111+04:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">мелочи</category><title>Рекурсивное назначение прав для директорий</title><description>Если нужно раздать права для всего дерева, но чтобы атрибут &quot;x&quot; прописался только для директорий можно использовать такую команду:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;chmod -R +rwX somepath/&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Раньше я пользовался для этих целей чуть более сложной конструкцией&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;find somepath/ -type f -exec chmod +rw \{\} \;&lt;br /&gt;find somepath/ -type d -exec chmod +rwx \{\} \;&lt;br /&gt;&lt;/pre&gt;</description><link>http://ubuntuzer.blogspot.com/2009/10/blog-post.html</link><author>noreply@blogger.com (morridzh)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1682109473821884523.post-2802357903859211122</guid><pubDate>Thu, 16 Jul 2009 06:19:00 +0000</pubDate><atom:updated>2009-07-16T10:19:56.671+04:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">мелочи</category><title>32-bit приложения на x64 ubuntu</title><description>Чтобы был возможен запуск старых бинарных 32-битных приложений под 64-битной убунтой нужно доустановить мета-пакет ia32-libs.</description><link>http://ubuntuzer.blogspot.com/2009/07/32-bit-x64-ubuntu.html</link><author>noreply@blogger.com (morridzh)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1682109473821884523.post-8148668861365278810</guid><pubDate>Wed, 15 Jul 2009 12:45:00 +0000</pubDate><atom:updated>2009-07-15T17:16:45.960+04:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">ядро</category><title>самосборные модули ядра</title><description>Пытался поставить ubuntu на сервер с Intel&#39;овской платой (S5500BC), но оказалось, что имеющийся на плате soft-raid не поддерживается даже самой свежей версией ubuntu (не говоря уж о 8.04 LTS, которая не увидела даже DVD-дисковод).&lt;br /&gt;На сайте Intel драйвера только для RedHat/SuSE. Однако, оказалось, что драйвер можно пересобрать и для другого конкретного ядра. Итак, вот такие шаги:&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;Скачал и распаковал драйвер&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Прочитал &lt;a href=&quot;http://tldp.org/LDP/lkmpg/2.6/html/&quot;&gt;The Linux Kernel Module Programming Guide&lt;/a&gt; откуда понял, что в прилагающемся Makefile не хватает собственно двух строк:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;all:&lt;br /&gt;       make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules&lt;br /&gt;&lt;br /&gt;clean:&lt;br /&gt;       make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;li&gt;С первой попытки компиляция не удалась. Смысл я до конца не понял, но двух словах - версии ядра в убунту в пределах релиза не увеличиваются, хотя фичи в них встраивают новые, от свежих ядер. Нашел в исходниках директивы условной компиляции, где проверялась версия ядра, исправил циферки, чтобы &quot;как бы старое&quot; ядро распознавалось как &quot;как бы новое&quot;. После этого все собралось.&lt;br /&gt;&lt;li&gt;&lt;br /&gt;&lt;li&gt;Копируем файл в модули (в моем случае /lib/modules/&amp;lt;kversion&amp;gt;/kernel/drivers/scsi/)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Выполняем depmod -a&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;В-принципе, все. Если бы это был модуль не-дискового устройства. Для дисковых устройств нужно поместить модуль в initramfs. Для этого в /etc/initramfs-tools/initramfs.conf меняем MODULES=most, на MODULES=list, а в файл /etc/initramfs-tools/modules помещаем список все нужных модулей (можно посмотреть на работающей системе через lsmod).&lt;br /&gt;Потом нужно пересобрать initramfs образ командой update-initramfs -u.&lt;br /&gt;&lt;br /&gt;Комментарии:&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;Собирать драйвер можно на уже работющей системе с таким же ядром (к счастью у меня такая машина была)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Понятно, что если корневая система на изначально доступном блочном устройстве, то помещать модуль в initramfs не обязательно, можно просто прописать его загрузку в /etc/modules)&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;</description><link>http://ubuntuzer.blogspot.com/2009/07/blog-post_15.html</link><author>noreply@blogger.com (morridzh)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1682109473821884523.post-357706005493022038</guid><pubDate>Tue, 07 Jul 2009 07:54:00 +0000</pubDate><atom:updated>2009-07-07T11:56:04.805+04:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">утилиты</category><title>Программное перемещение в корзину</title><description>Нашел такой пакет - trash. Позволяет управлять корзиной из скриптов. Таким образом настроил автоматическое удаление старых файлов из downloads в корзину.</description><link>http://ubuntuzer.blogspot.com/2009/07/blog-post.html</link><author>noreply@blogger.com (morridzh)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1682109473821884523.post-293681324817253227</guid><pubDate>Tue, 05 May 2009 11:27:00 +0000</pubDate><atom:updated>2009-05-05T15:33:04.476+04:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">администрирование</category><category domain="http://www.blogger.com/atom/ns#">система</category><title>Мониторинг системы 2</title><description>Утилита sar, о которой &lt;a href=&quot;http://ubuntuzer.blogspot.com/2008/05/blog-post.html&quot;&gt;я уже упоминал&lt;/a&gt; собирает довольно большой набор статистики, но результаты доступны для просмотра только в текстовом виде. Удобнее, по крайней мере часть этих данных, отображать в графической форме. Нашел скрипт &lt;a href=&quot;http://www.trickytools.com/php/sar2rrd.php&quot;&gt;sar2rrd&lt;/a&gt;.&lt;br /&gt;Позволяет создавать на основе текстового вывода команды sar три набора файлов - rrd, xml и png. В png содержаться уже готовые графики. В качестве аргументов указывается диапазон времени, за который будет построен график, интервал агрегации данных ну и собственно по каким подсистемам (процессор, память, сеть) строить графики и какие параметры из доступных с помощью sar на них отображать.</description><link>http://ubuntuzer.blogspot.com/2009/05/2.html</link><author>noreply@blogger.com (morridzh)</author><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1682109473821884523.post-6964850636452407253</guid><pubDate>Tue, 21 Apr 2009 13:17:00 +0000</pubDate><atom:updated>2009-04-21T22:36:19.623+04:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">bash</category><category domain="http://www.blogger.com/atom/ns#">файлы</category><title>имя файла, путь, расширение</title><description>Полезно при написании скриптов на bash, которые конвертят и/или переносят файлы.&lt;br /&gt;Имеется полное имя файла. Как извлечь разные его компоненты (отдельно путь, имя с раширением, имя без расширения, отдельно расширение)&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;foo=/tmp/my.dir/filename.tar.gz&lt;br /&gt;&lt;br /&gt;path = ${foo%/*}&lt;br /&gt;file = ${foo##*/}&lt;br /&gt;base = ${file%%.*}&lt;br /&gt;ext = ${file#*.}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;При этом получается следующее:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;path=/tmp/my.dir&lt;br /&gt;file=filename.tar.gz&lt;br /&gt;base=filename&lt;br /&gt;ext=tar.gz&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Первые два выражения аналогичны командам dirname и basename соответственно.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://linuxgazette.net/issue18/bash.html&quot;&gt;источник&lt;/a&gt;</description><link>http://ubuntuzer.blogspot.com/2009/04/blog-post.html</link><author>noreply@blogger.com (morridzh)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1682109473821884523.post-7091468947364100963</guid><pubDate>Thu, 19 Mar 2009 06:43:00 +0000</pubDate><atom:updated>2009-03-19T09:51:52.074+03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">i18n</category><title>кодировки в gedit</title><description>Как упростить работу в gedit с файлами в разных кодировках?&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;С помощью gconf-editor расширить список кодировок в ветке /apps/gedit-2/preferences/encodings/auto_detected&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Установить специальный &lt;a href=&quot;http://bugzilla.gnome.org/attachment.cgi?id=108326&quot;&gt;плагин&lt;/a&gt;, позволяющий менять кодировки на лету. Плагин нужно распаковать в ~/.gnome/gedit/plugins и активировать в gedit (Edit --&gt; Preferences --&gt; Plugins --&gt; Encoding)&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;Подсмотрено здесь:&lt;br /&gt;&lt;a href=&quot;http://ubuntuguide.org/wiki/Ubuntu_Hardy_ru#.D0.BA.D0.BE.D0.B4.D0.B8.D1.80.D0.BE.D0.B2.D0.BA.D0.B0_.D0.B2_.D1.82.D0.B5.D0.BA.D1.81.D1.82.D0.BE.D0.B2.D0.BE.D0.BC_.D1.80.D0.B5.D0.B4.D0.B0.D0.BA.D1.82.D0.BE.D1.80.D0.B5_Gedit&quot;&gt;кодировка в текстовом редакторе Gedit&lt;/a&gt;</description><link>http://ubuntuzer.blogspot.com/2009/03/gedit.html</link><author>noreply@blogger.com (morridzh)</author><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1682109473821884523.post-3236933238130839341</guid><pubDate>Fri, 13 Mar 2009 11:42:00 +0000</pubDate><atom:updated>2009-04-21T22:35:54.271+04:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">i18n</category><category domain="http://www.blogger.com/atom/ns#">офис</category><category domain="http://www.blogger.com/atom/ns#">решения</category><title>Документы Excel, OpenOffice и кодировка</title><description>В некоторых кривых Excel&#39;евских документах русские символы при открытии их в OpenOffice Calc отображаются кракозябрами. Решение найдено такое:&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;Скачивается &lt;a href=&quot;http://oodevel.org.ru/cyrtools1.3.uno.zip&quot;&gt;дополнение CyrTools&lt;/a&gt; к OpenOffice&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Устанавливается (Сервис-&gt;Управление расширениями-&gt;Добавить...). Дополнение проявляет себя как новый пункт главного меню (Кириллический документ)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;После открытия &quot;кривого&quot; документа в меню выбираем &quot;Кириллический документ-&gt;Перекодировка документа-&gt;Латиница-1 в кириллицу&quot;&lt;br /&gt;&lt;/ol&gt;</description><link>http://ubuntuzer.blogspot.com/2009/03/excel-openoffice.html</link><author>noreply@blogger.com (morridzh)</author><thr:total>1</thr:total></item></channel></rss>