<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>The Apple Geek &#187; shell</title>
	<atom:link href="http://theapplegeek.ru/archives/tag/shell/feed" rel="self" type="application/rss+xml" />
	<link>http://theapplegeek.ru</link>
	<description>Чему ты научился сегодня?</description>
	<lastBuildDate>Fri, 30 Jul 2010 13:48:39 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
<atom:link rel="hub" href="http://pubsubhubbub.appspot.com"/><atom:link rel="hub" href="http://superfeedr.com/hubbub"/>		<item>
		<title>GUI для MacPorts (Porticus)</title>
		<link>http://theapplegeek.ru/archives/2862</link>
		<comments>http://theapplegeek.ru/archives/2862#comments</comments>
		<pubDate>Thu, 14 Jan 2010 14:21:58 +0000</pubDate>
		<dc:creator>ctrld</dc:creator>
				<category><![CDATA[Обзоры программ]]></category>
		<category><![CDATA[shell]]></category>

		<guid isPermaLink="false">http://theapplegeek.ru/?p=2862</guid>
		<description><![CDATA[Как вы видите из моих статей, я активно использую менеджер пакетов MacPorts. Я привык с ним работать через консоль, но существует и графический интерфейс &#8211; я обнаружил его, читая статью об MacPorts на Apple ADC. Это бесплатная программа Porticus: Полезная функция &#8211; поиск (port search): Основная функциональность видна из меню: Настройки просты: Не скажу, что [...]]]></description>
			<content:encoded><![CDATA[<p>Как вы видите из моих статей, я активно использую менеджер пакетов <a href="http://theapplegeek.ru/archives/1011" >MacPorts</a>. Я привык с ним работать через консоль, но существует и графический интерфейс &#8211; я обнаружил его, читая статью об MacPorts <noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://developer.apple.com/mac/articles/opensource/workingwithmacports.html" >на Apple ADC</a></noindex>. Это бесплатная программа <noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://www.apple.com/downloads/macosx/development_tools/porticus.html" >Porticus</a></noindex>:</p>
<p style="clear: both"><a href="http://theapplegeek.ru/wp-content/uploads/2010/01/01_porticus-full.png"  class="image-link" rel="lightbox[2862]"><img class="linked-to-original" src="http://theapplegeek.ru/wp-content/uploads/2010/01/01_porticus-thumb.png" height="410" width="500" style=" text-align: center; display: block; margin: 0 auto 10px;" /></a></p>
<p><span id="more-2862"></span></p>
<p>Полезная функция &#8211; поиск (port search):</p>
<p style="clear: both"><a href="http://theapplegeek.ru/wp-content/uploads/2010/01/02_porticus-full.png"  class="image-link" rel="lightbox[2862]"><img class="linked-to-original" src="http://theapplegeek.ru/wp-content/uploads/2010/01/02_porticus-thumb.png" height="410" width="500" style=" text-align: center; display: block; margin: 0 auto 10px;" /></a></p>
<p>Основная функциональность видна из меню:</p>
<p style="clear: both"><a href="http://theapplegeek.ru/wp-content/uploads/2010/01/03_porticus-full.png"  class="image-link" rel="lightbox[2862]"><img class="linked-to-original" src="http://theapplegeek.ru/wp-content/uploads/2010/01/03_porticus-thumb.png" height="264" width="211" style=" text-align: center; display: block; margin: 0 auto 10px;" /></a></p>
<p>Настройки просты:</p>
<p style="clear: both"><a href="http://theapplegeek.ru/wp-content/uploads/2010/01/04_porticus-full.png"  class="image-link" rel="lightbox[2862]"><img class="linked-to-original" src="http://theapplegeek.ru/wp-content/uploads/2010/01/04_porticus-thumb.png" height="382" width="392" style=" text-align: center; display: block; margin: 0 auto 10px;" /></a></p>
<p style="clear: both"><a href="http://theapplegeek.ru/wp-content/uploads/2010/01/05_porticus-full.png"  class="image-link" rel="lightbox[2862]"><img class="linked-to-original" src="http://theapplegeek.ru/wp-content/uploads/2010/01/05_porticus-thumb.png" height="393" width="352" style=" text-align: center; display: block; margin: 0 auto 10px;" /></a></p>
<p>Не скажу, что программа чрезвычайно полезна, но по крайней мере результаты поиска удобно смотреть в табличном виде. Хоть в консоли можно всегда применить grep.</p>
]]></content:encoded>
			<wfw:commentRss>http://theapplegeek.ru/archives/2862/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Создание локальной копии сайта (wget)</title>
		<link>http://theapplegeek.ru/archives/1417</link>
		<comments>http://theapplegeek.ru/archives/1417#comments</comments>
		<pubDate>Wed, 28 Oct 2009 13:46:55 +0000</pubDate>
		<dc:creator>ctrld</dc:creator>
				<category><![CDATA[Quick Tips]]></category>
		<category><![CDATA[shell]]></category>

		<guid isPermaLink="false">http://theapplegeek.ru/archives/1417</guid>
		<description><![CDATA[Если по каким-то причинам нужно сделать локальную копию сайта (например, если нужно работать над материалами, но доступ в Интернет не предвидится), то обычно нет смысла искать дополнительный софт, тем более платный. Есть консольная программа wget (The non-interactive network downloader), которую можно поставить через MacPorts (sudo port install wget). Синтаксис: wget -v -m -k -K -E [...]]]></description>
			<content:encoded><![CDATA[<p style="clear: both"><img src="http://theapplegeek.ru/wp-content/uploads/2009/10/01_wget-thumb3.png" height="148" align="right" width="150" style=" display: inline; float: right; margin: 0 0 10px 10px;" />Если по каким-то причинам нужно сделать локальную копию сайта (например, если нужно работать над материалами, но доступ в Интернет не предвидится), то обычно нет смысла искать дополнительный софт, тем более платный. Есть консольная программа <noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://www.gnu.org/software/wget/manual/wget.html" >wget</a></noindex> (The non-interactive network downloader), которую можно поставить <a href="http://theapplegeek.ru/archives/1011" >через MacPorts</a> (sudo port install wget).</p>
<p style="clear: both">Синтаксис:</p>
<pre>
wget -v -m -k -K -E -w 1 --output-file=wget.log http://www.notsecretsite.com/
</pre>
<p><span id="more-1417"></span></p>
<ul>
<li>-v &#8211; показывать процесс списывания;
<li>-m &#8211; сделать копию сайта (если говорить на нормальном русском языке, то мирроринг). Заменяет набор ключей &#8220;-r -N -l inf &#8211;no-remove-listing&#8221;.</li>
<li>-k &#8211; преобразовать ссылки, адаптируя их для локального просмотра. Например, если списывается /foo/doc.html со ссылкой на /bar/img.gif, то в локальной копии будет записано ../bar/img.gif.</li>
<li>-K &#8211; опция осталась для меня загадкой, вроде бы она должна использоваться совместно с &#8216;-k&#8217; для определения, изменился ли файл на сервере.</li>
<li>-E &#8211; если тип списанного контента был &#8216;application/xhtml+xml&#8217; или &#8216;text/html&#8217;, и его расширение не .html (грубо говоря, а реально не удовлетворяет шаблону &#8216;\.[Hh][Tt][Mm][Ll]?&#8217;), то добавить .html к имени.</li>
<li>-w 1 &#8211; ждать 1 секунду перед следующим запросом на списывание файла. Можно поставить больше. Полезно, если сервер блокирует за частое списывание.</li>
<li>&#8211;output-file=wget.log &#8211; писать процесс работы в лог-файл.</li>
</li>
<p>Если же доступ к сайту даётся только после аутентификации по HTTP, то формат команды такой (добавляются &#8211;user и &#8211;password): </p>
<pre>
wget -v -m -k -K -E -w 1 --user=user --password=secret --output-file=wget.log http://www.secretsite.com/
</pre>
<p>Если же используется аутентификация через форму в html, да ещё с использованием сессионных coockies, то в принципе побороть это можно, но требует ухищрения. Опишу это отдельно, сейчас у меня нет под рукой такого сайта.</p>
<p><br class="final-break" style="clear: both" /></p>
]]></content:encoded>
			<wfw:commentRss>http://theapplegeek.ru/archives/1417/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Загрузка и выгрузка системных сервисов (MacPorts)</title>
		<link>http://theapplegeek.ru/archives/1324</link>
		<comments>http://theapplegeek.ru/archives/1324#comments</comments>
		<pubDate>Thu, 22 Oct 2009 13:26:38 +0000</pubDate>
		<dc:creator>ctrld</dc:creator>
				<category><![CDATA[Quick Tips]]></category>
		<category><![CDATA[shell]]></category>

		<guid isPermaLink="false">http://theapplegeek.ru/archives/1324</guid>
		<description><![CDATA[Я начал писать заметку о launchctl, но понял, что сегодня её не закончу. Поэтому кратко расскажу о том, как загружать или выгружать сервисы, установленные через MacPorts. Стартовые скрипты MacPorts размещает в файлах /Library/LaunchDaemons/org.macports.${port}.plist. Загрузить сервисы можно либо привычно через launchctl $ sudo launchctl load -w /Library/LaunchDaemons/org.macports.${port}.plist либо через MacPorts: $ sudo port load port Останов [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://theapplegeek.ru/wp-content/uploads/2009/10/01_macports-thumb1-full.png"  class="image-link" rel="lightbox"><img class="linked-to-original" src="http://theapplegeek.ru/wp-content/uploads/2009/10/01_macports-thumb2.png" height="51" align="right" width="179" style=" display: inline; float: right; margin: 0 0 10px 10px;" /></a></p>
<p>Я начал писать заметку о launchctl, но понял, что сегодня её не закончу. Поэтому кратко расскажу о том, как загружать или выгружать сервисы, установленные через <a href="http://theapplegeek.ru/archives/1011" >MacPorts</a>.</p>
<p>Стартовые скрипты MacPorts размещает в файлах /Library/LaunchDaemons/org.macports.${port}.plist.</p>
<p>Загрузить сервисы можно либо привычно через launchctl</p>
<pre>
$ sudo launchctl load -w /Library/LaunchDaemons/org.macports.${port}.plist
</pre>
<p>либо через MacPorts:</p>
<pre>
$ sudo port load <i>port</i>
</pre>
<p>Останов сервиса:</p>
<pre>
$ sudo launchctl unload -w /Library/LaunchDaemons/org.macports.${port}.plist
</pre>
<p>или</p>
<pre>
$ sudo port unload <i>port</i>
</pre>
<p><span id="more-1324"></span></p>
<p>Например, установим apache2 (он толком в Mac OS X не нужен, так как при включении &#8220;Web sharing&#8221; загружается Apache/2.2.11):</p>
<pre>
$ sudo port install apache2
</pre>
<p>Ставится конфигурационный файл launchctl <i>/Library/LaunchDaemons/org.macports.apache2.plist</i>:</p>
<pre>
<small>
&lt;?xml version='1.0' encoding='UTF-8'?&gt;
&lt;!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN"
"http://www.apple.com/DTDs/PropertyList-1.0.dtd" &gt;
&lt;plist version='1.0'&gt;
&lt;dict&gt;
&lt;key&gt;Label&lt;/key&gt;&lt;string&gt;org.macports.apache2&lt;/string&gt;
&lt;key&gt;ProgramArguments&lt;/key&gt;
&lt;array&gt;
	&lt;string&gt;/opt/local/bin/daemondo&lt;/string&gt;
	&lt;string&gt;--label=apache2&lt;/string&gt;
	&lt;string&gt;--start-cmd&lt;/string&gt;
	&lt;string&gt;/opt/local/etc/LaunchDaemons/org.macports.apache2/apache2.wrapper&lt;/string&gt;
	&lt;string&gt;start&lt;/string&gt;
	&lt;string&gt;;&lt;/string&gt;
	&lt;string&gt;--stop-cmd&lt;/string&gt;
	&lt;string&gt;/opt/local/etc/LaunchDaemons/org.macports.apache2/apache2.wrapper&lt;/string&gt;
	&lt;string&gt;stop&lt;/string&gt;
	&lt;string&gt;;&lt;/string&gt;
	&lt;string&gt;--restart-cmd&lt;/string&gt;
	&lt;string&gt;/opt/local/etc/LaunchDaemons/org.macports.apache2/apache2.wrapper&lt;/string&gt;
	&lt;string&gt;restart&lt;/string&gt;
	&lt;string&gt;;&lt;/string&gt;
	&lt;string&gt;--pid=none&lt;/string&gt;
&lt;/array&gt;
&lt;key&gt;Debug&lt;/key&gt;&lt;false/&gt;
&lt;key&gt;Disabled&lt;/key&gt;&lt;true/&gt;
&lt;key&gt;OnDemand&lt;/key&gt;&lt;false/&gt;
&lt;key&gt;RunAtLoad&lt;/key&gt;&lt;false/&gt;
&lt;/dict&gt;
&lt;/plist&gt;</small>
</pre>
<p>Загрузка:</p>
<pre>
$ sudo port load apache2
</pre>
<p>Выгрузка:</p>
<pre>
$ sudo port unload apache2
</pre>
<p>В следующей статье я детально расскажу о launchctl.</p>
]]></content:encoded>
			<wfw:commentRss>http://theapplegeek.ru/archives/1324/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Исправление некорректного отображения русских букв в Midnight Commander под Mac OS X</title>
		<link>http://theapplegeek.ru/archives/1180</link>
		<comments>http://theapplegeek.ru/archives/1180#comments</comments>
		<pubDate>Mon, 19 Oct 2009 10:08:24 +0000</pubDate>
		<dc:creator>ctrld</dc:creator>
				<category><![CDATA[Статьи]]></category>
		<category><![CDATA[shell]]></category>

		<guid isPermaLink="false">http://theapplegeek.ru/?p=1180</guid>
		<description><![CDATA[Обновление от 04.01.2010. Версия 4.7.0 из портов уже нормально поддерживает UTF-8, поэтому рекомендую ставить её, причём русские буквы отображаются даже при компиляции с ncurses, что даёт возможность отображать интерфейс &#8220;нормально&#8221;, а не ASCII-символами: $ sudo port selfupdate $ port variants mc mc has the variants: ncurses: use ncurses screen library * conflicts with slang2 [+]slang2: [...]]]></description>
			<content:encoded><![CDATA[<p><b>Обновление от 04.01.2010.</b> Версия 4.7.0 из портов уже нормально поддерживает UTF-8, поэтому рекомендую ставить её, причём русские буквы отображаются даже при компиляции с ncurses, что даёт возможность отображать интерфейс &#8220;нормально&#8221;, а не ASCII-символами:</p>
<pre>
$ <b>sudo port selfupdate</b>
$ <b>port variants mc</b>
mc has the variants:
   ncurses: use ncurses screen library
     * conflicts with slang2
[+]slang2: use slang2 screen library
     * conflicts with ncurses
   universal: Build for multiple architectures
$ <b>sudo port  install mc +ncurses</b>
$ <b>/opt/local/bin/mc -V</b>
GNU Midnight Commander 4.7.0
Using the ncurses library
With internationalization support
With multiple codepages support
</pre>
<p><b>А для интереса можно почитать, как исправлялись русские буквы до 4.7.0.</b></p>
<p>Я уже давно заметил, что консольный файловый менеджер <noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://en.wikipedia.org/wiki/Midnight_Commander" >Midnight Commander</a></noindex> неправильно работает с русскими буквами под Mac OS X. Но меня это особо не беспокоило, так как мне он нужен редко и с этой проблемой я могу спокойно смириться. Но сегодня <noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://twitter.com/ex3m_su" >@ex3m_su</a></noindex> (очень рекомендую посмотреть <noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://ex3m.su/" >социальную сеть ex3m для экстремальных людей</a></noindex>, которую он создал &#8211; я там бываю регулярно) задал мне вопрос:</p>
<blockquote>
<p>Подскажи, как наложить патч для MC из портов, он не воспринимает utf в интерфейсе {&#8230;}</p>
</blockquote>
<p>MC из портов, плохо работает с русскими буквами, и я решил найти решение такому поведению:</p>
<p style="clear: both"><a href="http://theapplegeek.ru/wp-content/uploads/2009/10/01_mc.png"  class="image-link" rel="lightbox[1180]"><img class="linked-to-original" src="http://theapplegeek.ru/wp-content/uploads/2009/10/01_mc-thumb.png" height="337" width="500" style=" text-align: center; display: block; margin: 0 auto 10px;" /></a></p>
<p><span id="more-1180"></span></p>
<p>Я начал с инструкции, подсказанной мне <noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://twitter.com/ex3m_su" >@ex3m</a></noindex> (он проблему решил по ней) &#8220;<noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://sudouser.com/sborka-midnight-commander-463-na-mac-os-leopard.html/trackback" >Сборка Midnight Commander 4.6.3 на Mac OS Leopard</a></noindex>&#8220;, но при использовании рекомендованного &#8220;Screen library&#8221; mcslang по-прежнему были проблемы с кодировкой, и не отображались символы, формирующие интерфейс программы:</p>
<p style="clear: both"><a href="http://theapplegeek.ru/wp-content/uploads/2009/10/02_mc.png"  class="image-link" rel="lightbox[1180]"><img class="linked-to-original" src="http://theapplegeek.ru/wp-content/uploads/2009/10/02_mc-thumb.png" height="281" width="500" style=" text-align: center; display: block; margin: 0 auto 10px;" /></a></p>
<p>Поэтому я использовал slang. Учитывая то, что используемая сборка оказалась доступной только со <noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://sudouser.com/sborka-midnight-commander-463-na-mac-os-leopard.html" >страницы автора статьи</a></noindex>, но не автора модификации, то для полноты картины я решил попробовать и официальную пререлизную сборку. Детали &#8211; ниже.</p>
<h2>Подготовка</h2>
<p>Ставим и удаляем mc через MacPorts для разрешения зависимостей.</p>
<pre>
$ port installed | grep mc
  mc @4.6.1_0 (active)
$ sudo port uninstall mc
</pre>
<p>Все действия будем производить в каталоге ~/tmp</p>
<pre>
mkdir ~/tmp
cd ~/tmp
</pre>
<p>Находим последние <noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://www.sfr-fresh.com/unix/misc/" >slang</a></noindex>, <noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://ftp.gnu.org/pub/gnu/gettext/" >gettext</a></noindex> и <noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://ftp.gnu.org/pub/gnu/libiconv/" >libiconv</a></noindex>:</p>
<pre>
wget http://www.sfr-fresh.com/unix/misc/slang-2.2.1.tar.gz
wget http://ftp.gnu.org/pub/gnu/gettext/gettext-0.17.tar.gz
wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.13.1.tar.gz
</pre>
<p>Раскручиваем архивы</p>
<pre>
tar xfz gettext-0.17.tar.gz
tar xfz libiconv-1.13.1.tar.gz
tar xfz slang-2.2.1.tar.gz
</pre>
<p>Компилируем и устанавливаем пакеты (они поставятся не в /opt/local, а в /usr/local, поэтому нужно будет проверить $PATH, чтобы /usr/local/bin стоял перед /opt/local/bin):</p>
<pre>
cd ~/tmp
cd gettext-0.17
./configure &#038;&#038; make -j 4 &#038;&#038; sudo make install
cd ..
cd libiconv-1.13.1
./configure &#038;&#038; make -j 4 &#038;&#038; sudo make install
cd ..
cd slang-2.2.1
./configure &#038;&#038; make -j 4 &#038;&#038; sudo make install
cd ..
</pre>
<h2>Использование модифицированной сборки Midnight Commander 4.6.3</h2>
<p>По оригинальному адресу модифицированного MC нет, берём с сайта <noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://sudouser.com/sborka-midnight-commander-463-na-mac-os-leopard.html" >автора статьи</a></noindex> sudouser:</p>
<pre>
cd ~/tmp
wget http://sudouser.com/mc-4.6.3-r504.tar.bz2
tar xfp mc-4.6.3-r504.tar.bz2
</pre>
<p>Особенность (!) &#8211; в качестве &#8220;Screen library&#8221; используем не mcslang, а slang</p>
<pre>
cd ~/tmp
cd mc-4.6.3-r504
./configure --with-screen=slang --with-libiconv-prefix=/usr/local

<small>Configuration:
  Screen library:             <b>S-Lang library (installed on the system)</b>
  Enable support for utf-8:   yes
  Enable support for charset: yes</small>

make -j 4 &#038;&#038; sudo make install
</pre>
<p>Информация по сборке:</p>
<pre>
ole-mac:mc-4.6.3-r504 ctrld$ /usr/local/bin/mc -V
<small>GNU Midnight Commander 4.6.3
Virtual File System: tarfs, extfs, cpiofs, ftpfs, fish, smbfs
With builtin Editor
Using system-installed S-Lang library with terminfo database
With subshell support as default
With support for background operations
With mouse support on xterm
With internationalization support
With multiple codepages support
Data types: char 8 int 32 long 64 void * 64 off_t 64 ecs_char 8</small>
</pre>
<p>Наслаждаемся нормальным отображением русских букв:</p>
<p style="clear: both"><a href="http://theapplegeek.ru/wp-content/uploads/2009/10/03_mc.png"  class="image-link" rel="lightbox[1180]"><img class="linked-to-original" src="http://theapplegeek.ru/wp-content/uploads/2009/10/03_mc-thumb.png" height="266" width="500" style=" text-align: center; display: block; margin: 0 auto 10px;" /></a></p>
<h2>Midnight Commander 4.7.0 Pre 3</h2>
<p>На сайте <noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://www.midnight-commander.org/downloads" >www.midnight-commander.org</a></noindex> находим и списываем последнюю сборку mc 4.7.0-pre3</p>
<pre>
cd ~/tmp
wget http://www.midnight-commander.org/downloads/14
mv 14 mc-4.7.0-pre3.tar.bz2
tar xfp mc-4.7.0-pre3.tar.bz2

cd mc-4.7.0-pre3
./configure --with-screen=slang --with-libiconv-prefix=/usr/local --with-slang-includes=/usr/local --with-slang-libs=/usr/local

<small>Configuration:
  Screen library:             S-Lang library (installed on the system)
  Support for charset:        yes</small>

make -j 4 &#038;&#038; sudo make install
</pre>
<p>Информация по сборке:</p>
<pre>
ole-mac:mc-4.7.0-pre3 ctrld$ /usr/local/bin/mc -V
<small>GNU Midnight Commander 4.7.0-pre3
Virtual File System: tarfs, extfs, cpiofs, ftpfs, fish
With builtin Editor
Using system-installed S-Lang library with terminfo database
With subshell support as default
With support for background operations
With mouse support on xterm
With internationalization support
With multiple codepages support
Data types: char 8 int 32 long 64 void * 64 off_t 64 ecs_char 8</small>
</pre>
<p>И эта версия нормально отображает русский текст:</p>
<p style="clear: both"><a href="http://theapplegeek.ru/wp-content/uploads/2009/10/04_mc.png"  class="image-link" rel="lightbox[1180]"><img class="linked-to-original" src="http://theapplegeek.ru/wp-content/uploads/2009/10/04_mc-thumb.png" height="268" width="500" style=" text-align: center; display: block; margin: 0 auto 10px;" /></a></p>
<h2>Порты</h2>
<p>Можно поменять &#8220;Screen library&#8221; в порту mc с ncurses на slang, однако это не работает. Приведу описание процесса просто для сведения.</p>
<pre>
$ cd /opt/local/var/macports/sources/rsync.macports.org/release/ports/sysutils/mc
$ sudo cp Portfile Portfile.dist
$ sudo chown ctrld Portfile
$ cat Portfile.dist | sed 's/--with-screen=ncurses/--with-screen=slang/' > Portfile
</pre>
<p>Ставим slang, gettext и libiconv</p>
<pre>
$ sudo port install slang2
$ sudo port install gettext
$ sudo port install libiconv

$ sudo port -dv install mc
</pre>
<p>Информация по сборке</p>
<pre>
bash-3.2$ /opt/local/bin/mc -V
<small>GNU Midnight Commander 4.6.1
Using system-installed S-Lang library with terminfo database
With internationalization support
...</small>
</pre>
<h2>Выводы</h2>
<p>Штатная версия Midnight Commander из MacPorts некорректно отображает русские буквы в именах файлов. Решение я продемонстрировал &#8211; можно использовать либо отдельную сборку MC 4.6.3, либо версию 4.7.0pre3, они обе работают нормально. Я остановился на последней.</p>
<p><br class='final-break' style='clear: both' /></p>
]]></content:encoded>
			<wfw:commentRss>http://theapplegeek.ru/archives/1180/feed</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
		<item>
		<title>Отключение буферизации в shell</title>
		<link>http://theapplegeek.ru/archives/1067</link>
		<comments>http://theapplegeek.ru/archives/1067#comments</comments>
		<pubDate>Fri, 16 Oct 2009 14:49:45 +0000</pubDate>
		<dc:creator>ctrld</dc:creator>
				<category><![CDATA[Quick Tips]]></category>
		<category><![CDATA[shell]]></category>

		<guid isPermaLink="false">http://ctrld.me/archives/1067</guid>
		<description><![CDATA[При выводе через pipe (&#8220;&#124;&#8221;) в Unix обычно буферизируются стандартный поток вывода stdout. Представим ситуацию &#8211; мы следим за выводом tshark на экран, но при этом хотим параллельно записывать его в файл (забудем на мгновение о команде script): $ sudo tshark -i en1 &#124; tee out.txt Мы видим, что строки на экране появляются не сразу, [...]]]></description>
			<content:encoded><![CDATA[<p>При выводе через pipe (&#8220;|&#8221;) в Unix обычно буферизируются стандартный поток вывода stdout. Представим ситуацию &#8211; мы следим за выводом tshark на экран, но при этом хотим параллельно записывать его в файл (забудем на мгновение о команде <noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://developer.apple.com/mac/library/documentation/Darwin/Reference/ManPages/man1/script.1.html" >script</a></noindex>):</p>
<pre>
$ sudo tshark -i en1 | tee out.txt
</pre>
<p>Мы видим, что строки на экране появляются не сразу, а достаточно большими порциями. Причина &#8211; в буферизации вывода командой tshark. А наблюдать-то за трафиком хочется в реальном времени &#8211; авось появится что-то интересное.</p>
<p>Для решения нужно воспользоваться программой <noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://manpages.ubuntu.com/manpages/karmic/man1/expect_unbuffer.1.html" >unbuffer</a></noindex> из пакета <noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://manpages.ubuntu.com/manpages/karmic/en/man1/expect.1.html" >expect</a></noindex>. Вспоминаем <a href="http://theapplegeek.ru/archives/1011" >установку портов</a>:</p>
<pre>
$ sudo port install expect
</pre>
<p>А затем</p>
<pre>
$ unbuffer sudo tshark -i en1 | tee out.txt
</pre>
<p>Теперь вывод происходит в реальном времени. Детали &#8211; в <noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://manpages.ubuntu.com/manpages/karmic/man1/expect_unbuffer.1.html" >man unbuffer</a></noindex>. Я нашёл unbuffer достаточно давно где-то на &#8220;<noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://stackoverflow.com/" >Stack Overflow</a></noindex>&#8220;.</p>
<div></div>
]]></content:encoded>
			<wfw:commentRss>http://theapplegeek.ru/archives/1067/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Работа с пользовательскими настройками из консоли (defaults)</title>
		<link>http://theapplegeek.ru/archives/1026</link>
		<comments>http://theapplegeek.ru/archives/1026#comments</comments>
		<pubDate>Thu, 15 Oct 2009 11:51:45 +0000</pubDate>
		<dc:creator>ctrld</dc:creator>
				<category><![CDATA[Статьи]]></category>
		<category><![CDATA[shell]]></category>

		<guid isPermaLink="false">http://ctrld.me/?p=1026</guid>
		<description><![CDATA[Практически всё, что необходимо для работы, можно настроить через стандартные настройки в GUI. Однако иногда возникает необходимость добраться до скрытых настроек, тогда на помощь приходит утилита defaults. Она позволяет читать, записывать и удалять пользовательские установки из командной строки. Приложения Mac OS X и прикладные программы обычно хранят настройки, используя механизм defaults. Давайте попробуем поработать с [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://theapplegeek.ru/wp-content/uploads/2009/10/01_defaults.png"  class="image-link" rel="lightbox[1026]"><img class="linked-to-original" src="http://theapplegeek.ru/wp-content/uploads/2009/10/01_defaults-thumb.png" height="103" align="right" width="150" style=" display: inline; float: right; margin: 0 0 10px 10px;" /></a></p>
<p>Практически всё, что необходимо для работы, можно настроить через стандартные настройки в GUI. Однако иногда возникает необходимость добраться до скрытых настроек, тогда на помощь приходит утилита <noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://developer.apple.com/mac/library/documentation/Darwin/Reference/ManPages/man1/defaults.1.html" >defaults</a></noindex>. Она позволяет читать, записывать и удалять пользовательские установки из командной строки. Приложения Mac OS X и прикладные программы обычно хранят настройки, используя механизм defaults. Давайте попробуем поработать с этими настройками.</p>
<p><span id="more-1026"></span></p>
<p>В терминах defaults настройки приложения храняться в своих доменах. Получить перечень доменов можно командой:</p>
<pre>
ole-mac:~ ctrld$ <b>defaults domains</b>
<small>.com.settings.local, AddressBookMe, AppFreshDaemon, Net Monitor,
SnippetDB, at.EternalStorms.flickery, at.obdev.LittleSnitchConfiguration,
at.obdev.LittleSnitchNetworkMonitor, au.id.tyson.AutoRate,
ca.indev.MAOSparkleHelper, ca.indev.MailActOn, ca.indev.MailTags,
ca.primatelabs.Geekbench2, ca.primatelabs.Geekbench2.LSSharedFileList,
com.Growl.GrowlHelperApp, com.acqualia.Picturesque2, com.adiumX.adiumX,
com.adobe.Reader, com.adobe.Reader_x86_9.0, com.adobe.acrobat.90.sh,
...</small></pre>
<p>Как вы видите, идентифицировать конкретную программу достаточно просто. MailActOn &#8211; ca.indev.MailActOn, Adium &#8211; com.adiumX.adiumX, и т.д.</p>
<p>Просмотр содержимого домена:</p>
<pre>
ole-mac:~ ctrld$ <b>defaults read de.metaquark.appfresh</b>
<small>{
    IUAppFreshUpdatesMaturity = 1;
    IUCategoriesVersion = 7;
    IULastDaemonRun = "2009-10-14 17:31:37 +0300";
    IUScheduleInterval = 0;
    IUSelectedTableViewFilter = "x-coredata://EBA970E8-B0D6-4058-A9B5-9B334546D149/IUCategory/p8";
    IUSetupWizardRun = 1;
    "IUSplitView Layout MainSplitView" =     {
        Left = 201;
        Right = 220;
    };
...</small></pre>
<p>Также можно просмотреть содержимое по имени программы:</p>
<pre>
<b>defaults read -app AppFresh</b>
</pre>
<p>Получить значение ключа:</p>
<pre>
ole-mac:~ ctrld$ <b>defaults read de.metaquark.appfresh IUAppFreshUpdatesMaturity</b>
1
</pre>
<p>Установить новое значение (не выполняйте эту команду, я не знаю, что обозначает &#8220;2&#8243; в AppFresh, это демонстрация принципа):</p>
<pre>
ole-mac:~ ctrld$ <b>defaults write de.metaquark.appfresh IUAppFreshUpdatesMaturity 2</b>
</pre>
<p>Перед тем, как что-то менять, лучше запомнить, что было раньше. Если уж что-то пошло совсе не так, то можно удалить настройки, и при запуске программы создадутся новые (эта операция совсем уж на крайний случай):</p>
<pre>
ole-mac:~ ctrld$ <b>defaults delete de.metaquark.appfresh</b>
</pre>
<p>Можно найти слово или фразу. Например, я хочу узнать, в каких доменах записано моё имя, например, чтобы выяснить, какие программы я купил (учтите, что в разных программах может быть разный формат имени &#8211; или &#8220;Имя Фамилия&#8221;, или &#8220;Фамилия Имя&#8221;):</p>
<pre>
ole-mac:~ ctrld$ <b>defaults find "Oleg Serdyukov"</b>
<small>Found 1 keys in domain 'com.appzapper.appzapper': {
    "Registration Name" = "Oleg Serdyukov";
}
Found 1 keys in domain 'com.blacey.SuperDuper!': {
    SDuserLicenseName = "Oleg Serdyukov";
}</small></pre>
<p>Я описал основные возможности defaults, за детальным описанием обращайтесь к &#8220;<noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://developer.apple.com/mac/library/documentation/Darwin/Reference/ManPages/man1/defaults.1.html" >man defaults</a></noindex>&#8220;.</p>
<p>Посмотреть, как использовать defaults для изменения различных настроек, можно, например, на &#8220;<noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://www.macosxhints.com/search.php?query=defaults+write&#038;keyType=phrase&#038;datestart=&#038;dateend=&#038;topic=0&#038;type=stories&#038;results=50&#038;mode=search" >Mac OS X Hints</a></noindex>&#8220;.</p>
]]></content:encoded>
			<wfw:commentRss>http://theapplegeek.ru/archives/1026/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Установка пакетов (MacPorts)</title>
		<link>http://theapplegeek.ru/archives/1011</link>
		<comments>http://theapplegeek.ru/archives/1011#comments</comments>
		<pubDate>Wed, 14 Oct 2009 14:10:46 +0000</pubDate>
		<dc:creator>ctrld</dc:creator>
				<category><![CDATA[Обзоры программ]]></category>
		<category><![CDATA[shell]]></category>

		<guid isPermaLink="false">http://ctrld.me/?p=1011</guid>
		<description><![CDATA[Вчера я слегка рассказал об установке XCode, сегодня же &#8220;вернёмся к корням&#8221; &#8211; займёмся установкой программ Open Source. Вместе с XCode поставляются все средства разработки, поэтому мы можем теперь скомпилировать любой пакет (configure, make, make install). Но простая компиляция имеет огромный недостаток &#8211; поддерживать программы в актуальном состоянии можно исключительно вручную, нужно регулярно отслеживать выход [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://theapplegeek.ru/wp-content/uploads/2009/10/01_macports-thumb.png" height="51" align="right" width="179" style=" display: inline; float: right; margin: 0 0 10px 10px;" /></p>
<p>Вчера я слегка рассказал <a href="http://theapplegeek.ru/archives/992" >об установке XCode</a>, сегодня же &#8220;вернёмся к корням&#8221; &#8211; займёмся установкой программ Open Source. Вместе с XCode поставляются все средства разработки, поэтому мы можем теперь скомпилировать любой пакет (configure, make, make install). Но простая компиляция имеет огромный недостаток &#8211; поддерживать программы в актуальном состоянии можно исключительно вручную, нужно регулярно отслеживать выход новых версий десятка используемых пакетов, списывать их, и по-новому компилировать. Решить эту проблему призваны менеджеры пакетов (для Linux это yum, apt, для FreeBSD &#8211; система портов).</p>
<p>Под Mac OS X самыми распространёнными являются <noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://guide.macports.org/" >MacPorts</a></noindex> и <noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://www.finkproject.org/" >Fink</a></noindex>. MacPorts использует идеологию BSD, Fink &#8211; Debian Linux. Мне больше нравится BSD, поэтому я использую первый менеджер. Его и рассмотрим сейчас.</p>
<p><span id="more-1011"></span></p>
<h2>Установка MacPorts</h2>
<p>Для начала необходимо <noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://guide.macports.org/#installing.x11" >установить X11</a></noindex> с установочного диска Mac OS X и <noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://developer.apple.com/technology/xcode.html" >XCode</a></noindex>.</p>
<p>Затем &#8211; списать <noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://distfiles.macports.org/MacPorts/" >установочный пакет</a></noindex> под свою версию Mac OS X (для меня это MacPorts-1.8.0-10.6-SnowLeopard.dmg) и установить его.</p>
<p>MacPorts использует иерархию /opt/local/ как для себя, так и для установки программ. Инсталлятор в том числе прописывает этот путь в переменные окружения:</p>
<pre>
export PATH=/opt/local/bin:/opt/local/sbin:$PATH
</pre>
<h2>Использование MacPorts</h2>
<p>Запускаем Terminal.app. Нужно убедиться, что каталоги /opt прописаны в путях:</p>
<pre>
ole-mac:~ ctrld$ echo $PATH
<small><b>/opt/local/bin:/opt/local/sbin</b>:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin</small>
</pre>
<p>Обновляем порты:</p>
<pre>
<b>sudo port selfupdate</b>
</pre>
<p>Ищем нужный порт (здесь sudo необязательно):</p>
<pre>
ole-mac:~ ctrld$ <b>port search mtr</b>
mtr @0.75 (net)
    'traceroute' and 'ping' in a single tool

rmtrash @0.3.3 (sysutils)
    move the file to OS X's Trash

Found 2 ports.
</pre>
<p>Можно посмотреть описание порта:</p>
<pre>
ole-mac:~ ctrld$ <b>port info mtr</b>
<small>mtr @0.75 (net)
Variants:             darwin_10, universal

Description:          As mtr starts, it investigates the network connection between the host mtr runs on and HOSTNAME. by sending packets with purposly low TTLs. It continues to send pack- ets with low TTL, noting the response time of
                      the inter- vening routers. This allows mtr to print the response percentage and response times of the internet route to HOSTNAME. A sudden increase in packetloss or response time is often an indication of a bad (or
                      simply over- loaded) link.
Homepage:             http://www.bitwizard.nl/mtr/

Platforms:            darwin
License:              unknown
Maintainers:          mr_bond@macports.org</small>
</pre>
<p>Установка порта:</p>
<pre>
<b>sudo port install mtr</b>
</pre>
<p>При установке остаются исходные тексты, скомпилированные файлы и прочее. Их можно удалить (вместо mtr, конечно же, подставив нужный порт):</p>
<pre>
<b>sudo port clean --all mtr</b>
</pre>
<p>Посмотреть, какие именно файлы устанавливаются с портом:</p>
<pre>
ole-mac:~ ctrld$ <b>port contents  mtr</b>
Port mtr contains:
  /opt/local/sbin/mtr
  /opt/local/share/man/man8/mtr.8.gz
</pre>
<p>Деинсталляция порта:</p>
<pre>
<b>sudo port uninstall mtr</b>
</pre>
<p>Перечень установленных пакетов:</p>
<pre>
<b>port installed</b>
</pre>
<p>Посмотреть, для каких пакетов есть обновления (предварительно нужно сделать selfupdate)</p>
<pre>
ole-mac:~ ctrld$ <b>sudo port selfupdate</b>
ole-mac:~ ctrld$ <b>sudo port outdated</b>
The following installed ports are outdated:
wget                           1.11.4_3 < 1.12_0
</pre>
<p>Обновление конкретного порта</p>
<pre>
<b>sudo port upgrade wget</b>
</pre>
<p>Эта команда не удаляет старый порт из списка, в итоге получается такое:</p>
<pre>
ole-mac:~ ctrld$ <b>port installed | grep wget</b>
wget @1.11.4_3
wget @1.12_0 (active)
</pre>
<p>Для удаления старой версии нужно использовать ключ "-u" (спасибо за подсказку <noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://twitter.com/akaDimiG" >@akaDimiG</a></noindex>):</p>
<pre>
<b>sudo port -u upgrade wget</b>
</pre>
<p>Обновление всех портов</p>
<pre>
<b>sudo port upgrade outdated</b>
</pre>
<h2>Моё окружение</h2>
<p>Я периодически использую скомпилированные программы, но сейчас но ноутбуке стоят только самые необходимые порты. К ним относятся:</p>
<ul>
<li><b><noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://www.agroman.net/corkscrew/" >corkscrew</a></noindex></b>. SSH-прокси. Полезная вещь для выхода по ssh через https-proxy (спасибо за подсказку <noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://twitter.com/andy_shev" >@andy_shev</a></noindex>). Я отдельно расскажу об этой системе.</li>
<li><b><noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://en.wikipedia.org/wiki/Expect" >expect</a></noindex></b>. Язык для диалога с интерактивными сервисами, например можно в скрипте ответить на запросы входа по telnet.</li>
<li><b>mc</b>. <noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://en.wikipedia.org/wiki/Midnight_Commander" >Midnight Commander</a></noindex>. Кто ещё помнит "Norton Commander" или "Volkov Commander" поймут. Это файловая оболочка под консоль.</li>
<li><b>mtr</b>. <noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://en.wikipedia.org/wiki/MTR_(Software)" >Matt's traceroute</a></noindex> - незаменимая утилита для поиска сетевых проблем.</li>
<li><b><noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://en.wikipedia.org/wiki/Subversion_(software)" >subversion</a></noindex></b>. Система контроля версий SVN.</li>
<li><b><noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://en.wikipedia.org/wiki/Wget" >wget</a></noindex></b>. Программа для списывания контента с web/ftp-серверов.</li>
</ul>
<ul>Эти программы поставились вместе с <noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://git-scm.com/" >git-core</a></noindex> (системой контроля версий), хоть есть и штатные утилиты:</p>
<li><b><noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://curl.haxx.se/" >curl</a></noindex></b>. Программа для списывания файлов по сети, поддерживается много протоколов.</li>
<li><b><noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://en.wikipedia.org/wiki/Rsync" >rsync</a></noindex></b>. Система для синхронизации файлов и каталогов.</li>
</ul>
<p><br class='final-break' style='clear: both' /></p>
]]></content:encoded>
			<wfw:commentRss>http://theapplegeek.ru/archives/1011/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Запись iso-образов из Terminal.app</title>
		<link>http://theapplegeek.ru/archives/753</link>
		<comments>http://theapplegeek.ru/archives/753#comments</comments>
		<pubDate>Fri, 02 Oct 2009 11:16:59 +0000</pubDate>
		<dc:creator>ctrld</dc:creator>
				<category><![CDATA[Quick Tips]]></category>
		<category><![CDATA[shell]]></category>

		<guid isPermaLink="false">http://ctrld.me/archives/753</guid>
		<description><![CDATA[Рассмотрим запись iso в shell на примере дистрибутива Debian. Списываем iso, лучше с torrent. Проверяем контрольную сумму (хотя бы md5): $ curl http://cdimage.debian.org/debian-cd/5.0.3/i386/iso-dvd/MD5SUMS &#124; \ grep debian-503-i386-DVD-1.iso 7ea66fee666fa444f0256ab3c1ec6ba4 debian-503-i386-DVD-1.iso $ md5 debian-503-i386-DVD-1.iso MD5 (debian-503-i386-DVD-1.iso) = 7ea66fee666fa444f0256ab3c1ec6ba4 Контрольные суммы совпадают, образ нормальный, можем его записывать стандартной утилитой hdiutil: $ hdiutil burn debian-503-i386-DVD-1.iso]]></description>
			<content:encoded><![CDATA[<p>Рассмотрим запись iso в shell на примере дистрибутива Debian. Списываем iso, лучше <noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://www.debian.org/CD/torrent-cd/" >с torrent</a></noindex>.</p>
<p>Проверяем контрольную сумму (хотя бы md5):</p>
<pre>
$ curl http://cdimage.debian.org/debian-cd/5.0.3/i386/iso-dvd/MD5SUMS | \
    grep debian-503-i386-DVD-1.iso
7ea66fee666fa444f0256ab3c1ec6ba4  debian-503-i386-DVD-1.iso
$ md5 debian-503-i386-DVD-1.iso
MD5 (debian-503-i386-DVD-1.iso) = 7ea66fee666fa444f0256ab3c1ec6ba4
</pre>
<p>Контрольные суммы совпадают, образ нормальный, можем его записывать стандартной утилитой hdiutil:</p>
<pre>
$ hdiutil burn debian-503-i386-DVD-1.iso
</pre>
]]></content:encoded>
			<wfw:commentRss>http://theapplegeek.ru/archives/753/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Скрытие каталогов</title>
		<link>http://theapplegeek.ru/archives/635</link>
		<comments>http://theapplegeek.ru/archives/635#comments</comments>
		<pubDate>Sun, 27 Sep 2009 10:58:04 +0000</pubDate>
		<dc:creator>ctrld</dc:creator>
				<category><![CDATA[Quick Tips]]></category>
		<category><![CDATA[shell]]></category>

		<guid isPermaLink="false">http://ctrld.me/?p=635</guid>
		<description><![CDATA[Некоторые программы создают свои каталоги в ~/Documents, и лично мне они не нужны, и в Finder я не хочу их видеть. К таким каталогам относятся, например, &#8220;Virtual Machines&#8221; (VmWare), &#8220;SMS Chat Logs&#8221; (BluePhoneElite 2), &#8220;iChats&#8221;. Раньше была возможность скрытия каталогов в &#8220;Get Info&#8221; Finder&#8217;а (то ли в 10.4, то ли в ранних версиях 10.5.x), но [...]]]></description>
			<content:encoded><![CDATA[<p>Некоторые программы создают свои каталоги в ~/Documents, и лично мне они не нужны, и в Finder я не хочу их видеть. К таким каталогам относятся, например, &#8220;Virtual Machines&#8221; (VmWare), &#8220;SMS Chat Logs&#8221; (<noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://mirasoftware.com/" >BluePhoneElite 2</a></noindex>), &#8220;iChats&#8221;.</p>
<p style="clear: both"><a href="http://theapplegeek.ru/wp-content/uploads/2009/09/01_hide.png"  class="image-link" rel="lightbox[635]"><img class="linked-to-original" src="http://theapplegeek.ru/wp-content/uploads/2009/09/01_hide-thumb.png" height="322" width="380" style=" text-align: center; display: block; margin: 0 auto 10px;" /></a></p>
<p>Раньше была возможность скрытия каталогов в &#8220;Get Info&#8221; Finder&#8217;а (то ли в 10.4, то ли в ранних версиях 10.5.x), но потом она исчезла. Однако это можно сделать в Terminal.app.</p>
<p>Есть два варианта &#8211; можно использовать либо команду <noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://developer.apple.com/mac/library/DOCUMENTATION/Darwin/Reference/ManPages/man1/SetFile.1.html" >SetFile</a></noindex> (она поставляется вместе с Mac OS X Developer Tools, т.е. нужно установить <noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://developer.apple.com/technology/Xcode.html" >XCode</a></noindex>), либо штатную команду <noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://developer.apple.com/mac/library/documentation/Darwin/Reference/ManPages/man1/chflags.1.html" >chflags</a></noindex>.</p>
<p>Скрыть каталог: &#8220;SetFile -a V dir&#8221; или же &#8220;chflags hidden dir&#8221;.</p>
<p>Отображать каталог: &#8220;SetFile -a v dir&#8221; или &#8220;chflags nohidden dir&#8221;.</p>
<p><span id="more-635"></span></p>
<pre>
$ cd ~/Documents
$ ls -al
drwx------+ 15 ctrld  staff    510 Sep 21 00:33 .
drwxr-xr-x+ 30 ctrld  staff   1020 Sep 25 15:15 ..
-rw-------@  1 ctrld  staff  15364 Sep 27 13:05 .DS_Store
-rw-r--r--   1 ctrld  staff      0 Aug 28 08:38 .localized
drwxr-xr-x  10 ctrld  staff    340 Sep 25 16:48 Backups
drwxr-xr-x  19 ctrld  staff    646 Sep 25 16:49 Books
drwxr-xr-x  16 ctrld  staff    544 Aug 20 11:03 Development
drwxr-xr-x  65 ctrld  staff   2210 Sep 10 16:31 Notes
drwxr-xr-x  13 ctrld  staff    442 Sep 21 00:33 Personal
drwxr-xr-x   4 ctrld  staff    136 Sep  2 17:18 SMS Chat Logs.localized
drwxr-xr-x  13 ctrld  staff    442 Sep 21 14:44 Travels
drwxr-xr-x   4 ctrld  staff    136 Aug 29 19:33 Virtual Machines.localized
drwxr-xr-x  11 ctrld  staff    374 Apr 14 15:47 Work
drwx------  21 ctrld  staff    714 Sep 25 10:52 iChats
drwxr-xr-x  19 ctrld  staff    646 Sep 25 12:52 Статьи

$ <b>SetFile -a V Virtual\ Machines.localized/</b>
<i>или</i>
$ <b>chflags hidden Virtual\ Machines.localized/</b>

$ <b>SetFile -a V SMS\ Chat\ Logs.localized/</b>
<i>или</i>
$ <b>chflags hidden SMS\ Chat\ Logs.localized/</b>

$ <b>SetFile -a V iChats/</b>
<i>или</i>
$ <b>chflags hidden iChats/</b>

$ ls -al
drwx------+ 15 ctrld  staff    510 Sep 21 00:33 .
drwxr-xr-x+ 30 ctrld  staff   1020 Sep 25 15:15 ..
-rw-------@  1 ctrld  staff  15364 Sep 27 13:05 .DS_Store
-rw-r--r--   1 ctrld  staff      0 Aug 28 08:38 .localized
drwxr-xr-x  10 ctrld  staff    340 Sep 25 16:48 Backups
drwxr-xr-x  19 ctrld  staff    646 Sep 25 16:49 Books
drwxr-xr-x  16 ctrld  staff    544 Aug 20 11:03 Development
drwxr-xr-x  65 ctrld  staff   2210 Sep 10 16:31 Notes
drwxr-xr-x  13 ctrld  staff    442 Sep 21 00:33 Personal
drwxr-xr-x@  4 ctrld  staff    136 Sep  2 17:18 SMS Chat Logs.localized
drwxr-xr-x  13 ctrld  staff    442 Sep 21 14:44 Travels
drwxr-xr-x@  4 ctrld  staff    136 Aug 29 19:33 Virtual Machines.localized
drwxr-xr-x  11 ctrld  staff    374 Apr 14 15:47 Work
drwx------@ 21 ctrld  staff    714 Sep 25 10:52 iChats
drwxr-xr-x  20 ctrld  staff    680 Sep 27 13:31 Статьи
</pre>
<p>Обратите внимание, что для скрытых файлов в поле аттрибутов появляется знак &#8220;@&#8221;: &#8220;drwxr-xr-x<b>@</b>&#8220;. Теперь ненужные мне каталоги в Finder не видны:</p>
<p style="clear: both"><a href="http://theapplegeek.ru/wp-content/uploads/2009/09/02_hide.png"  class="image-link" rel="lightbox[635]"><img class="linked-to-original" src="http://theapplegeek.ru/wp-content/uploads/2009/09/02_hide-thumb.png" height="252" width="380" style=" text-align: center; display: block; margin: 0 auto 10px;" /></a></p>
<p>Спасибо <noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://twitter.com/Snupt" >@Snupt</a></noindex> и <noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://twitter.com/tsybulin" >@tsybulin</a></noindex> за найденную неточность (SetFile идёт в комплекте с Mac OS X Developer Tools) и за подсказку штатной команды chflags, выполняющей то же действие.</p>
<p><br class="final-break" style="clear: both" /></p>
]]></content:encoded>
			<wfw:commentRss>http://theapplegeek.ru/archives/635/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Как заставить работать симлинки в Dropbox</title>
		<link>http://theapplegeek.ru/archives/548</link>
		<comments>http://theapplegeek.ru/archives/548#comments</comments>
		<pubDate>Thu, 24 Sep 2009 07:45:10 +0000</pubDate>
		<dc:creator>ctrld</dc:creator>
				<category><![CDATA[Статьи]]></category>
		<category><![CDATA[dropbox]]></category>
		<category><![CDATA[shell]]></category>

		<guid isPermaLink="false">http://ctrld.me/?p=548</guid>
		<description><![CDATA[До обновления до Snow Leopard я активно использовал символические ссылки (симлинки или же symlinks) для того, чтобы синхронизировать файлы и каталоги, находящиеся вне иерархии Dropbox, например каталог проектов или базу данных паролей 1Password. Когда перешёл на Snow Leopard, то почему-то симлинки у меня перестали работать. Также эту проблему озвучил @umputun в первом подкасте после выхода [...]]]></description>
			<content:encoded><![CDATA[<p style="clear: both"><img src="http://theapplegeek.ru/wp-content/uploads/2009/09/logo1-thumb.png" height="60" align="right" width="230" style=" display: inline; float: right; margin: 0 0 10px 10px;" />До обновления до Snow Leopard я активно использовал символические ссылки (симлинки или же symlinks) для того, чтобы синхронизировать файлы и каталоги, находящиеся вне иерархии Dropbox, например каталог проектов или <a href="http://theapplegeek.ru/archives/490" >базу данных паролей 1Password</a>. Когда перешёл на Snow Leopard, то почему-то симлинки у меня перестали работать.</p>
<p style="clear: both">Также эту проблему озвучил <noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://twitter.com/umputun" >@umputun</a></noindex> в первом подкасте после выхода Snow Leopard, так что я был не одинок.</p>
<p><span id="more-548"></span></p>
<p style="clear: both">Поясню &#8211; я обычно делал относительные симлинки:</p>
<pre style="clear: both">
ole-mac:~ ctrld$ cd ~
ole-mac:~ ctrld$ date > test1.txt
ole-mac:~ ctrld$ ls -al test1.txt
-rw-r--r-- 1 ctrld staff 30 Sep 23 23:31 test1.txt
ole-mac:~ ctrld$ ln -s test1.txt Dropbox/Public/
ole-mac:~ ctrld$ ls -al Dropbox/Public/test1.txt
lrwxr-xr-x 1 ctrld staff 9 Sep 23 23:31 Dropbox/Public/test1.txt -> test1.txt
</pre>
<p style="clear: both">Dropbox 0.6.559 вообще не реагировал на создание симлинка (не было активности на значке в menubar) и ничего не синхронизировал, в версии 0.7.24 активность появлялась, но никогда не заканчивалась (отображался статус &#8220;Indexing 1 file&#8230;&#8221;).</p>
<p style="clear: both">В Интернет я рапортов о проблеме с симлинками не нашёл, и <noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://forums.getdropbox.com/topic.php?id=12702&#038;replies=3" >решил написать разработчикам</a></noindex>. Rian H. среагировал почти мгновенно &#8211; я написал ночью, и утром уже был ответ:</p>
<blockquote><p>hi oleg i believe you are using the &#8220;ln&#8221; command incorrectly. the command you want to execute is:</p>
<pre style="clear: both">
$ ln -s $PWD/test1.txt Dropbox/Public/
</pre>
<p style="clear: both">the reason is that symlink sources are used verbatim by the kernel. meaning if you try to access test1.txt in your Dropbox/Public folder, it&#8217;s looking for test1.txt in the same folder (a recursive symlink). You need to either a full path or a relative path from Dropbox/Public</p>
</blockquote>
<p style="clear: both">Моя ошибка была &#8220;от ума&#8221; &#8211; я привык создавать относительные симлинки, а нужно было создавать абсолютные:</p>
<p style="clear: both">Вместо</p>
<pre style="clear: both">
$ ln -s test1.txt Dropbox/Public/
</pre>
<p style="clear: both">Нужно делать так:</p>
<pre style="clear: both">
$ ln -s <b>$PWD/</b>test1.txt Dropbox/Public/
</pre>
<p style="clear: both">Как только я так сделал, симлинки стали синхронизироваться.</p>
<p style="clear: both">Примечание 1. Я использую <noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://forums.getdropbox.com/" >Experimental Build</a></noindex>, но должно работать и на стабильном.</p>
<p style="clear: both"> Примечание 2. После такого простого решения я задумался о том, что возможно под 10.5 я создавал абсолютные симлинки, а на 10.6 стал создавать относительные. Но по крайней мере теперь ясно, как делать правильно.</p>
<p><br class="final-break" style="clear: both" /></p>
]]></content:encoded>
			<wfw:commentRss>http://theapplegeek.ru/archives/548/feed</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using memcached (user agent is rejected)
Page Caching using memcached (user agent is rejected)
Database Caching 16/52 queries in 0.037 seconds using memcached
Object Caching 757/801 objects using memcached

Served from: theapplegeek.ru @ 2010-07-31 03:10:08 -->