<?xml version="1.0" encoding="iso-8859-1"?>
<?xml-stylesheet type="text/xsl" href="/static/rss.xsl"?>
<!-- name="generator" content="blosxom/2.1.2+dev" -->
<rss version="2.0"
     xmlns:dc="http://purl.org/dc/elements/1.1/"
     xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
     xmlns:cc="http://web.resource.org/cc/"
     xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
     xmlns:admin="http://webns.net/mvcb/"
     xmlns:wfw="http://wellformedweb.org/CommentAPI/" >
  <channel>
    <!-- RSS required -->
    <title>Blogging is futile   </title>
    <!-- <link>http://noone.org/blog</link> -->
    <description>Yet another Blosxom weblog from someone who promised himself to never start blogging - since blogging is futile.</description>

    <!-- RSS optional -->
    <pubDate>Fri, 24 May 2013 21:37:26 +0200</pubDate>
    <lastBuildDate>Fri, 24 May 2013 21:37:26 +0200</lastBuildDate>
    <copyright>&amp;copy; 2005-2008 by Axel Beckert. Content licensed under the Creative Commons NC SA 2.0 DE License. Some rights reserved.</copyright>
    <language>en</language>
    <managingEditor>abe+blog@deuxchevaux.org (Axel Beckert)</managingEditor>
    <webMaster>abe+blog@deuxchevaux.org (Axel Beckert)</webMaster>
    <generator>blosxom/2.1.2+dev</generator>
    <docs>http://blogs.law.harvard.edu/tech/rss</docs>
    <ttl>42</ttl>
    <image>
        <url>http://noone.org/static/XTaran1.3t.png</url>
        <title>Hackergotchi: Axel "XTaran" Beckert</title>
        <link>http://noone.org/blog</link>
        <width>102</width>
        <height>104</height>
    </image>

    <!-- Dublin Core -->
<!--
    <dc:publisher>Axel Beckert (abe+blog@deuxchevaux.org)</dc:publisher>
    <dc:rights>&copy; 2005-2008 by Axel Beckert. Content licensed under the Creative Commons NC SA 2.0 DE License. Some rights reserved.</dc:rights>
    <dc:language>de</dc:language>
    <dc:language>en</dc:language>
    <dc:title>Blogging is futile   </dc:title>
    <dc:subject>Rants and brain dumps about Debian, the Web, old Hardware, old Citroëns and the daily life of an ETHZ system administrator</dc:subject>
    <dc:description>Yet another Blosxom weblog from someone who promised himself to never start blogging - since blogging is futile.</dc:description>
-->

    <!-- Others -->
    <admin:generatorAgent rdf:resource="http://blosxom.sourceforge.net/" />
    <admin:errorReportsTo rdf:resource="mailto:abe+blog@deuxchevaux.org" />
    <cc:license rdf:resource="http://creativecommons.org/licenses/by-nc-sa/2.0/de/">http://creativecommons.org/licenses/by-nc-sa/2.0/de/</cc:license>

  <item>
    <title>New web browsers in Wheezy</title>
    <slash:department></slash:department>
    <slash:section>English &amp;raquo; Computer &amp;raquo; Debian</slash:section>
    <link>http://noone.org/blog/English/Computer/Debian/New%2520web%2520browsers%2520in%2520Wheezy.html</link>
    <guid isPermaLink="true">http://noone.org/blog/English/Computer/Debian/New%2520web%2520browsers%2520in%2520Wheezy.html</guid>
    <pubDate>Thu, 02 May 2013 16:14:21 +0200</pubDate>
    <author>abe+blog@deuxchevaux.org (Axel Beckert)</author>
    <description>
Since there is so much nice new stuff in &lt;a href=&quot;http://www.debian.org/News/weekly/2010/11/#6&quot; class=&quot;ext&quot;&gt;Debian Wheezy&lt;/a&gt;, I have to
split up my contributions to Mika&amp;#8217;s &lt;a class=&quot;ext&quot;
href=&quot;http://lists.debian.org/debian-devel/2013/04/msg00870.html&quot;
&gt;#newinwheezy game&lt;/a&gt; on &lt;a href=&quot;http://planet.debian.org/&quot; class=&quot;uni&quot;&gt;Planet Debian&lt;/a&gt;.

&lt;/p&gt;&lt;p&gt;

Here&amp;#8217;s the next bunch, this time web browsers:

&lt;/p&gt;&lt;dl compact=&quot;compact&quot;&gt;

&lt;a href=&quot;http://screenshots.debian.net/package/dillo&quot;&gt;&lt;img
src=&quot;http://screenshots.debian.net/thumbnail-with-version/dillo/3.0.2-2&quot;
align=&quot;right&quot; alt=&quot;Dillo Screenshot&quot; border=&quot;0&quot;/&gt;&lt;/a&gt;

&lt;dt&gt;&lt;a class=&quot;ext&quot; href=&quot;http://packages.debian.org/dillo&quot;&gt;dillo&lt;/a&gt;&lt;/dt&gt;

&lt;dd&gt;The FLTK-based lightweight &lt;acronym title=&quot;Graphical User Interface&quot;&gt;GUI&lt;/acronym&gt; web browser &lt;a class=&quot;ext&quot;
href=&quot;http://www.dillo.org/&quot; &gt;Dillo&lt;/a&gt; comes with its own rendering
engine (no JavaScript, incomplete &lt;acronym title=&quot;Cascading Stylesheets&quot;&gt;CSS&lt;/acronym&gt; support) was already in &lt;a href=&quot;http://www.debian.org/&quot; class=&quot;ext&quot;&gt;Debian&lt;/a&gt;
before, but was removed before the release of &lt;a href=&quot;http://www.debian.org/releases/squeeze/&quot; class=&quot;ext&quot;&gt;Debian Squeeze&lt;/a&gt;, because
&lt;a href=&quot;http://www.dillo.org/&quot; class=&quot;ext&quot;&gt;Dillo&lt;/a&gt; 2 relied on FLTK 2.x which had an unclear license
situation back then and never made it into Debian. In the meanwhile
Dillo 3 relies on FLTK 1.3 as FLTK upstream abandoned the 2.0 branch and
continued development on the 1.3 branch. So I brought Dillo back into Debian
with its 3.0.x release.&lt;/dd&gt;

&lt;br clear=&quot;right&quot; /&gt;&lt;a
href=&quot;http://screenshots.debian.net/package/netsurf&quot;&gt;&lt;img
src=&quot;http://screenshots.debian.net/thumbnail-with-version/netsurf/2.9-2&quot;
align=&quot;right&quot; alt=&quot;Netsurf Screenshot&quot; border=&quot;0&quot;/&gt;&lt;/a&gt;

&lt;dt&gt;&lt;a class=&quot;ext&quot; href=&quot;http://packages.debian.org/netsurf&quot;&gt;netsurf&lt;/a&gt;&lt;/dt&gt;

&lt;dd&gt;The RiscOS-originating lightweight &lt;acronym title=&quot;Graphical User Interface&quot;&gt;GUI&lt;/acronym&gt; web browser &lt;a
href=&quot;http://www.netsurf-browser.org/&quot; class=&quot;ext&quot; &gt;Netsurf&lt;/a&gt; was
already in Debian, too, but didn&amp;#8217;t make it into Debian Squeeze as it
needed the Lemon parser generator (part of the SQLite source) to build
back then and a change in Lemon caused &lt;a href=&quot;http://www.netsurf-browser.org/&quot; class=&quot;ext&quot;&gt;Netsurf&lt;/a&gt; to no more build
properly in the wrong moment. Netsurf supports &lt;acronym title=&quot;Cascading Stylesheets&quot;&gt;CSS&lt;/acronym&gt; 2.1, but has no
JavaScript support either. I&amp;#8217;d consider its rendering engine more
complete than Dillo&amp;#8217;s.&lt;/dd&gt;

&lt;br clear=&quot;right&quot; /&gt;&lt;a
href=&quot;http://screenshots.debian.net/package/xxxterm&quot;&gt;&lt;img
src=&quot;http://screenshots.debian.net/thumbnail-with-version/xxxterm/1:1.11.3-1&quot;
align=&quot;right&quot; alt=&quot;XXXTerm Screenshot&quot; border=&quot;0&quot;/&gt;&lt;/a&gt;

&lt;dt&gt;&lt;a class=&quot;ext&quot; href=&quot;http://packages.debian.org/surf&quot;&gt;surf&lt;/a&gt; and &lt;a class=&quot;ext&quot; href=&quot;http://packages.debian.org/xxxterm&quot;&gt;xxxterm&lt;/a&gt;&lt;/dt&gt;

&lt;dd&gt;&lt;a href=&quot;http://surf.suckless.org/&quot; class=&quot;ext&quot; &gt;Surf&lt;/a&gt; and &lt;a
href=&quot;https://opensource.conformal.com/wiki/XXXTerm&quot; class=&quot;ext&quot;
&gt;XXXTerm&lt;/a&gt; are both simple and minimalistic &lt;a href=&quot;http://www.webkit.org/&quot; class=&quot;ext&quot;&gt;webkit&lt;/a&gt;-based browsers.
Surf is easy to embed in other applications and XXXTerm features
vi-like keybindings for heavy keyboard users.&lt;/dd&gt;

&lt;/dl&gt;&lt;p&gt;

To be continued&amp;#8230; ;-)</description>
    <comments>http://noone.org/blog/English/Computer/Debian/New%2520web%2520browsers%2520in%2520Wheezy.futile#comments</comments>
    <slash:comments>0</slash:comments>
    <dc:language>en</dc:language>
    <category domain="http://noone.org/blog/tags/Debian">Debian</category>
<category domain="http://noone.org/blog/tags/dillo">dillo</category>
<category domain="http://noone.org/blog/tags/netsurf">netsurf</category>
<category domain="http://noone.org/blog/tags/newinwheezy">newinwheezy</category>
<category domain="http://noone.org/blog/tags/surf">surf</category>
<category domain="http://noone.org/blog/tags/webbrowser">webbrowser</category>
<category domain="http://noone.org/blog/tags/Wheezy">Wheezy</category>
<category domain="http://noone.org/blog/tags/xxxterm">xxxterm</category>

  </item>
  <item>
    <title>New SSH-related stuff in Wheezy</title>
    <slash:department></slash:department>
    <slash:section>English &amp;raquo; Computer &amp;raquo; Debian</slash:section>
    <link>http://noone.org/blog/English/Computer/Debian/New%2520SSH%2520stuff%2520in%2520Wheezy.html</link>
    <guid isPermaLink="true">http://noone.org/blog/English/Computer/Debian/New%2520SSH%2520stuff%2520in%2520Wheezy.html</guid>
    <pubDate>Thu, 02 May 2013 15:28:22 +0200</pubDate>
    <author>abe+blog@deuxchevaux.org (Axel Beckert)</author>
    <description>
Mika had the nice idea of doing a &lt;a class=&quot;ext&quot;
href=&quot;http://lists.debian.org/debian-devel/2013/04/msg00870.html&quot;
&gt;#newinwheezy game&lt;/a&gt; on &lt;a href=&quot;http://planet.debian.org/&quot; class=&quot;uni&quot;&gt;Planet Debian&lt;/a&gt;, so let&amp;#8217;s join:

&lt;/p&gt;&lt;p&gt;

There are (at least) two new &lt;acronym title=&quot;Secure Shell&quot;&gt;SSH&lt;/acronym&gt; related tools new in &lt;a href=&quot;http://www.debian.org/News/weekly/2010/11/#6&quot; class=&quot;ext&quot;&gt;Debian Wheezy&lt;/a&gt;:

&lt;/p&gt;&lt;dl compact=&quot;compact&quot;&gt;

&lt;dt&gt;&lt;a class=&quot;ext&quot; href=&quot;http://packages.debian.org/mosh&quot;&gt;mosh&lt;/a&gt;&lt;/dt&gt;

&lt;dd&gt;is the &amp;#8220;mobile shell&amp;#8221;, an UDP based remote shell terminal which
works better than &lt;acronym title=&quot;Secure Shell&quot;&gt;SSH&lt;/acronym&gt; in case of lag, packet loss or other forms of
bad connection. &lt;a
href=&quot;http://noone.org/blog/English/Computer/Mobile/Remote%20Shells.futile&quot;
&gt;I wrote about mosh in more detail about a year ago&lt;/a&gt;. mosh is also
available for &lt;a href=&quot;http://www.debian.org/releases/squeeze/&quot; class=&quot;ext&quot;&gt;Debian Squeeze&lt;/a&gt; via squeeze-&lt;a href=&quot;http://www.backports.org/&quot; class=&quot;ext&quot;&gt;backports&lt;/a&gt;.&lt;/dd&gt;

&lt;dt&gt;&lt;a class=&quot;ext&quot; href=&quot;http://packages.debian.org/sshuttle&quot;&gt;sshuttle&lt;/a&gt;&lt;/dt&gt;

&lt;dd&gt;is somewhere between port-forwarding and VPN. It allows forward
arbitrary TCP connections over an &lt;acronym title=&quot;Secure Shell&quot;&gt;SSH&lt;/acronym&gt; connection without the need to
configure individual port forwardings. It does not need root access on
the server-side either. &lt;a
href=&quot;http://noone.org/blog/English/Computer/Mobile/Tunneling.futile&quot;
&gt;I wrote about sshuttle in more detail about a year ago.&lt;/a&gt;&lt;/dd&gt;

&lt;/dl&gt;&lt;p&gt;

To be continued&amp;#8230; ;-)</description>
    <comments>http://noone.org/blog/English/Computer/Debian/New%2520SSH%2520stuff%2520in%2520Wheezy.futile#comments</comments>
    <slash:comments>0</slash:comments>
    <dc:language>en</dc:language>
    <category domain="http://noone.org/blog/tags/Debian">Debian</category>
<category domain="http://noone.org/blog/tags/mika">mika</category>
<category domain="http://noone.org/blog/tags/mosh">mosh</category>
<category domain="http://noone.org/blog/tags/newinwheezy">newinwheezy</category>
<category domain="http://noone.org/blog/tags/Planet%20Debian">Planet Debian</category>
<category domain="http://noone.org/blog/tags/SSH">SSH</category>
<category domain="http://noone.org/blog/tags/sshuttle">sshuttle</category>
<category domain="http://noone.org/blog/tags/Wheezy">Wheezy</category>

  </item>
  <item>
    <title>Up to date Aptitude Documentation Online</title>
    <slash:department>Preliminiary-Edition</slash:department>
    <slash:section>English &amp;raquo; Computer &amp;raquo; Debian</slash:section>
    <link>http://noone.org/blog/English/Computer/Debian/Aptitude%2520Documentation%2520Online.html</link>
    <guid isPermaLink="true">http://noone.org/blog/English/Computer/Debian/Aptitude%2520Documentation%2520Online.html</guid>
    <pubDate>Sun, 10 Mar 2013 12:51:26 +0100</pubDate>
    <author>abe+blog@deuxchevaux.org (Axel Beckert)</author>
    <description>
&lt;a href=&quot;http://aptitude.alioth.debian.org/&quot; class=&quot;ext&quot;&gt;Aptitude&lt;/a&gt; ships &lt;a class=&quot;ext&quot;
href=&quot;http://packages.debian.org/search?keywords=aptitude-doc&quot;
&gt;documentation in 7 languages as &lt;acronym title=&quot;Hypertext Markup Language&quot;&gt;HTML&lt;/acronym&gt; files&lt;/a&gt;. However the latest
version available online was &lt;a class=&quot;ext&quot;
href=&quot;http://www.algebraicthunk.net/~dburrows/projects/aptitude/doc/en/&quot;
&gt;0.4.11.2 from 2008&lt;/a&gt; and hosted on the server by the previous, now
unfortunately inactive Aptitude maintainer, and only &lt;a class=&quot;ext&quot;
href=&quot;http://www.algebraicthunk.net/~dburrows/projects/aptitude/doc/&quot;
&gt;covered 5 languages&lt;/a&gt;.

&lt;/p&gt;&lt;p&gt;

This lack of up to date online documentation even caused &lt;a
class=&quot;ext&quot; href=&quot;http://media.fossclub.de/aptitude/html/en/&quot;
&gt;others&lt;/a&gt; to put more up to date versions online. Nevertheless they
age, too, and the one I&amp;#8217;m aware is not up to date for &lt;a href=&quot;http://www.debian.org/News/weekly/2010/11/#6&quot; class=&quot;ext&quot;&gt;Wheezy&lt;/a&gt;.

&lt;/p&gt;&lt;p&gt;

So the idea was born to keep an up to date version online on &lt;a
href=&quot;http://aptitude.alioth.debian.org/&quot; class=&quot;ext&quot; &gt;Aptitude&amp;#8217;s
Alioth webspace&lt;/a&gt; (which currently redirects to a subdirectory of
the previous maintainer&amp;#8217;s personal website). But unfortunately &lt;a
class=&quot;ext&quot;
href=&quot;https://alioth.debian.org/tracker/index.php?func=detail&amp;amp;aid=314032&amp;amp;group_id=1&amp;amp;atid=200001&quot;
&gt;we, the current Aptitude Team, are still lacking administrative
rights on Aptitude&amp;#8217;s Alioth project&lt;/a&gt;, which would be necessary to
assign new team members who could work on that.

&lt;/p&gt;&lt;p&gt;

As an intermediate step, there&amp;#8217;s now a (currently ;-) up to date &lt;a class=&quot;uni&quot;
href=&quot;http://people.debian.org/~abe/aptitude/&quot; &gt;Aptitude User&amp;#8217;s
Manual&lt;/a&gt; online in &lt;a href=&quot;http://people.debian.org/~abe/aptitude/&quot;
class=&quot;uni&quot; &gt;all 7 languages&lt;/a&gt; at

&lt;/p&gt;&lt;p align=&quot;center&quot;&gt;&lt;big&gt;

&lt;a href=&quot;http://people.debian.org/~abe/aptitude/&quot; class=&quot;uni&quot;
&gt;http://people.debian.org/~abe/aptitude/&lt;/a&gt;

&lt;/big&gt;&lt;/p&gt;&lt;p&gt;

and English at

&lt;/p&gt;&lt;p align=&quot;center&quot;&gt;&lt;big&gt;

&lt;a href=&quot;http://people.debian.org/~abe/aptitude/en/&quot; class=&quot;uni&quot;
&gt;http://people.debian.org/~abe/aptitude/en/&lt;/a&gt;

&lt;/big&gt;&lt;/p&gt;&lt;p&gt;

As this location could also suffer from the same &lt;acronym title=&quot;Missing in Action&quot;&gt;MIA&lt;/acronym&gt; issues as any
other &amp;#8220;personal&amp;#8221; copy, the plan is to move this to somewhere under &lt;a
href=&quot;http://aptitude.alioth.debian.org/&quot; class=&quot;ext&quot;
&gt;http://aptitude.alioth.debian.org/&lt;/a&gt; as soon as we have full access
to &lt;a href=&quot;http://alioth.debian.org/projects/aptitude/&quot; class=&quot;ext&quot;
&gt;Aptitude&amp;#8217;s Alioth project&lt;/a&gt;.

&lt;/p&gt;&lt;p&gt;

Our plans for then are:

&lt;/p&gt;&lt;ul&gt;

&lt;li&gt;Redirects from &lt;a href=&quot;http://people.debian.org/~abe/aptitude/&quot;
class=&quot;uni&quot; &gt;http://people.debian.org/~abe/aptitude/&lt;/a&gt; to e.g. &lt;a
href=&quot;http://aptitude.alioth.debian.org/&quot; class=&quot;ext&quot;
&gt;http://aptitude.alioth.debian.org/&lt;/a&gt;doc/, so that all your links to
or bookmarks of &lt;a href=&quot;http://people.debian.org/~abe/aptitude/&quot;
class=&quot;uni&quot; &gt;http://people.debian.org/~abe/aptitude/&lt;/a&gt; are still
valid. (This unfortunately won&amp;#8217;t work for jump marks to specific
sections, just per file, i.e. chapter.)&lt;/li&gt;

&lt;li&gt;Set up a cron-job, which keeps the documentation in sync with the
version of Aptitude in Unstable (and maybe also with Aptitude in
Stable).&lt;/li&gt;

&lt;/ul&gt;&lt;p&gt;

P.S.: Anyone interested in doing a German translation of the Aptitude
User&amp;#8217;s Manual? &lt;a class=&quot;ext&quot;
href=&quot;http://anonscm.debian.org/gitweb/?p=aptitude/aptitude.git;a=tree;f=doc/en;hb=HEAD&quot;
&gt;Sources&lt;/a&gt; are in DocBook, i.e. &lt;acronym title=&quot;Extensible Markup Language&quot;&gt;XML&lt;/acronym&gt;, and available via &lt;a href=&quot;http://git-scm.com/&quot; class=&quot;ext&quot;&gt;Git&lt;/a&gt;.</description>
    <comments>http://noone.org/blog/English/Computer/Debian/Aptitude%2520Documentation%2520Online.futile#comments</comments>
    <slash:comments>2</slash:comments>
    <dc:language>en</dc:language>
    <category domain="http://noone.org/blog/tags/Alioth">Alioth</category>
<category domain="http://noone.org/blog/tags/aptitude">aptitude</category>
<category domain="http://noone.org/blog/tags/Debian">Debian</category>
<category domain="http://noone.org/blog/tags/documentation">documentation</category>
<category domain="http://noone.org/blog/tags/link">link</category>
<category domain="http://noone.org/blog/tags/online">online</category>

  </item>
  <item>
    <title>zutils: zcat and friends on Steroids</title>
    <slash:department>DWIM-again</slash:department>
    <slash:section>English &amp;raquo; Computer &amp;raquo; Debian &amp;raquo; CoolTools</slash:section>
    <link>http://noone.org/blog/English/Computer/Debian/CoolTools/zutils.html</link>
    <guid isPermaLink="true">http://noone.org/blog/English/Computer/Debian/CoolTools/zutils.html</guid>
    <pubDate>Wed, 21 Nov 2012 01:18:11 +0100</pubDate>
    <author>abe+blog@deuxchevaux.org (Axel Beckert)</author>
    <description>
I recently wrote about &lt;a
href=&quot;http://noone.org/blog/English/Computer/Debian/CoolTools/atool-unp-dtrx.futile&quot;
&gt;tools to handle archives conveniently&lt;/a&gt;. If you just have to handle
compressed text files, there are some widely known shortcut commands
to mimic common commands on files compressed with a specific
compression format.

&lt;/p&gt;&lt;div align=&quot;center&quot;&gt;&lt;table border=&quot;1&quot; cellpadding=&quot;3&quot; cellspacing=0&quot;&gt;

&lt;tr&gt;&lt;th&gt;&amp;nbsp;&lt;/th&gt; &lt;th&gt;gzip&lt;/th&gt;   &lt;th&gt;bzip2&lt;/th&gt;   &lt;th&gt;lzma&lt;/th&gt;    &lt;th&gt;xz&lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;cat&lt;/th&gt;    &lt;td&gt;zcat&lt;/td&gt;   &lt;td&gt;bzcat&lt;/td&gt;   &lt;td&gt;lzcat&lt;/td&gt;   &lt;td&gt;xzcat&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;cmp&lt;/th&gt;    &lt;td&gt;zcmp&lt;/td&gt;   &lt;td&gt;bzcmp&lt;/td&gt;   &lt;td&gt;lzcmp&lt;/td&gt;   &lt;td&gt;xzcmp&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;diff&lt;/th&gt;   &lt;td&gt;zdiff&lt;/td&gt;  &lt;td&gt;bzdiff&lt;/td&gt;  &lt;td&gt;lzdiff&lt;/td&gt;  &lt;td&gt;xzdiff&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;grep&lt;/th&gt;   &lt;td&gt;zgrep&lt;/td&gt;  &lt;td&gt;bzgrep&lt;/td&gt;  &lt;td&gt;lzgrep&lt;/td&gt;  &lt;td&gt;xzgrep&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;egrep&lt;/th&gt;  &lt;td&gt;zegrep&lt;/td&gt; &lt;td&gt;bzegrep&lt;/td&gt; &lt;td&gt;lzegrep&lt;/td&gt; &lt;td&gt;xzegrep&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;fgrep&lt;/th&gt;  &lt;td&gt;zfgrep&lt;/td&gt; &lt;td&gt;bzfgrep&lt;/td&gt; &lt;td&gt;lzfgrep&lt;/td&gt; &lt;td&gt;xzfgrep&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;more&lt;/th&gt;   &lt;td&gt;zmore&lt;/td&gt;  &lt;td&gt;bzmore&lt;/td&gt;  &lt;td&gt;lzmore&lt;/td&gt;  &lt;td&gt;xzmore&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;less&lt;/th&gt;   &lt;td&gt;zless&lt;/td&gt;  &lt;td&gt;bzless&lt;/td&gt;  &lt;td&gt;lzless&lt;/td&gt;  &lt;td&gt;xzless&lt;/td&gt;&lt;/tr&gt;

&lt;/table&gt;&lt;/div&gt;&lt;p&gt;&lt;small&gt;

In &lt;a href=&quot;http://www.debian.org/&quot; class=&quot;ext&quot;&gt;Debian&lt;/a&gt; and derivatives, those tools are part of the according
package for that compression utility, i.e. the &lt;code&gt;zcat&lt;/code&gt;
command is part of the &lt;a class=&quot;ext&quot; href=&quot;http://packages.debian.org/gzip&quot;&gt;gzip&lt;/a&gt; package and the
&lt;code&gt;xzfgrep&lt;/code&gt; command is part of the &lt;a class=&quot;ext&quot; href=&quot;http://packages.debian.org/xz-utils&quot;&gt;xz-utils&lt;/a&gt; package.

&lt;/small&gt;&lt;/p&gt;&lt;p&gt;

But despite this matrix is quite easy to remember, the situation has a
few drawbacks:

&lt;/p&gt;&lt;ul&gt;

&lt;li&gt;Those tools can only handle the format they&amp;#8217;re written for (which
&lt;abbr title=&quot;by the way&quot;&gt;btw&lt;/abbr&gt;. means that all xz-tools can also handle
&lt;code&gt;lzma&lt;/code&gt;-compressed files as &lt;code&gt;lzma&lt;/code&gt; is
&lt;code&gt;xz&lt;/code&gt;&amp;#8217;s predecessor)&lt;/li&gt;

&lt;li&gt;&lt;code&gt;zcat&lt;/code&gt; and the other cat variants can&amp;#8217;t even recognize
non-compressed files and throw an error instead of just showing their
contents.&lt;/li&gt;

&lt;li&gt;I always tend to think that &lt;code&gt;lzcat&lt;/code&gt; and friends are for
&lt;code&gt;lzip&lt;/code&gt;-based compression as &lt;code&gt;xzcat&lt;/code&gt; can handle
&lt;code&gt;lzma&lt;/code&gt;-compressed files anyway.&lt;/li&gt;

&lt;/ul&gt;&lt;p&gt;

This is where the &lt;a href=&quot;http://www.nongnu.org/zutils/zutils.html&quot;
class=&quot;ext&quot; &gt;zutils&lt;/a&gt; project comes in: zutils provides the
functionality of most of these utilities, too, but with one big
difference: You don&amp;#8217;t have to remember, think about or type which
compression method has been used for your data, just use
&lt;code&gt;zcat&lt;/code&gt;, &lt;code&gt;zcmp&lt;/code&gt;, &lt;code&gt;zdiff&lt;/code&gt;,
&lt;code&gt;zgrep&lt;/code&gt;, &lt;code&gt;zegrep&lt;/code&gt;, or &lt;code&gt;zfgrep&lt;/code&gt; and it
works &amp;mdash; independently of what compression method has been used
&amp;mdash; if any &amp;mdash; or if there are different compression types
mixed in the parameters to the same command:

&lt;/p&gt;&lt;pre&gt;
$ zfgrep foobar bla.txt fnord.gz hurz.xz quux.lz bar.lzma
&lt;/pre&gt;&lt;p&gt;

Especially if you use &lt;a class=&quot;ext&quot; href=&quot;http://packages.debian.org/logrotate&quot;&gt;logrotate&lt;/a&gt; and let
&lt;code&gt;logrotate&lt;/code&gt; compress old logs, it&amp;#8217;s very comfortable that
one command suffices to concatenate all the available logfiles,
including the current uncompressed one:

&lt;/p&gt;&lt;pre&gt;
$ zcat /var/log/syslog* | &amp;hellip;
&lt;/pre&gt;&lt;p&gt;

Additionally, zutils&amp;#8217; versions of these tools also support
&lt;code&gt;lzip&lt;/code&gt;-compressed files.

&lt;/p&gt;&lt;p&gt;

The &lt;a class=&quot;ext&quot; href=&quot;http://packages.debian.org/zutils&quot;&gt;zutils&lt;/a&gt; package is available in Debian starting with
&lt;a href=&quot;http://www.debian.org/News/weekly/2010/11/#6&quot; class=&quot;ext&quot;&gt;Wheezy&lt;/a&gt; and in &lt;a href=&quot;http://www.ubuntu.com/&quot; class=&quot;ext&quot;&gt;Ubuntu&lt;/a&gt; since Oneiric. When being installed, it replaces
the original &lt;code&gt;z*&lt;/code&gt; utilities from the &lt;a class=&quot;ext&quot; href=&quot;http://packages.debian.org/gzip&quot;&gt;gzip&lt;/a&gt; package
by &lt;a class=&quot;ext&quot;
href=&quot;http://www.debian.org/doc/debian-policy/ap-pkg-diversions.html&quot;
&gt;diverting&lt;/a&gt; them away.

&lt;p&gt;

The only drawback so far is that there &lt;em&gt;neither&lt;/em&gt; a
&lt;code&gt;zless&lt;/code&gt; &lt;em&gt;nor&lt;/em&gt; a &lt;code&gt;zmore&lt;/code&gt; utility from the
zutils project, so &lt;code&gt;zless bla.txt fnord.gz hurz.xz quux.lz
bar.lzma&lt;/code&gt; will &lt;em&gt;not&lt;/em&gt; work as expected even after
installing &lt;a class=&quot;ext&quot; href=&quot;http://packages.debian.org/zutils&quot;&gt;zutils&lt;/a&gt; as it is still the one from the &lt;a class=&quot;ext&quot; href=&quot;http://packages.debian.org/gzip&quot;&gt;gzip&lt;/a&gt; package and hence it will show you just the first two files in
plain text, but &lt;em&gt;not&lt;/em&gt; the remaining ones.</description>
    <comments>http://noone.org/blog/English/Computer/Debian/CoolTools/zutils.futile#comments</comments>
    <slash:comments>2</slash:comments>
    <dc:language>en</dc:language>
    <category domain="http://noone.org/blog/tags/bzip2">bzip2</category>
<category domain="http://noone.org/blog/tags/Debian">Debian</category>
<category domain="http://noone.org/blog/tags/DWIM">DWIM</category>
<category domain="http://noone.org/blog/tags/gzip">gzip</category>
<category domain="http://noone.org/blog/tags/logrotate">logrotate</category>
<category domain="http://noone.org/blog/tags/lzip">lzip</category>
<category domain="http://noone.org/blog/tags/lzma">lzma</category>
<category domain="http://noone.org/blog/tags/UUUT">UUUT</category>
<category domain="http://noone.org/blog/tags/xz">xz</category>
<category domain="http://noone.org/blog/tags/zcat">zcat</category>
<category domain="http://noone.org/blog/tags/zcmp">zcmp</category>
<category domain="http://noone.org/blog/tags/zdiff">zdiff</category>
<category domain="http://noone.org/blog/tags/zgrep">zgrep</category>
<category domain="http://noone.org/blog/tags/ztest">ztest</category>
<category domain="http://noone.org/blog/tags/zutils">zutils</category>

  </item>
  <item>
    <title>deepgrep: grep nested archives with one command</title>
    <slash:department>grep-revisited</slash:department>
    <slash:section>English &amp;raquo; Computer &amp;raquo; Debian &amp;raquo; CoolTools</slash:section>
    <link>http://noone.org/blog/English/Computer/Debian/CoolTools/deepgrep.html</link>
    <guid isPermaLink="true">http://noone.org/blog/English/Computer/Debian/CoolTools/deepgrep.html</guid>
    <pubDate>Sat, 17 Nov 2012 02:00:12 +0100</pubDate>
    <author>abe+blog@deuxchevaux.org (Axel Beckert)</author>
    <description>
Several months ago, I wrote about &lt;a
href=&quot;http://noone.org/blog/English/Computer/Shell/grep%20everything.html&quot;
&gt;grep everything&lt;/a&gt; and listed grep-like tools which can grep through
compressed files or specific data formats. The &lt;a href=&quot;http://en.wikipedia.org/wiki/Weblog&quot; class=&quot;wiki&quot; title=&quot;What is a blog/weblog?&quot;&gt;blog&lt;/a&gt; posting sparked
several magazine articles and talks by &lt;a href=&quot;http://www.efho.de/&quot;
class=&quot;ext&quot; &gt;Frank Hofmann&lt;/a&gt; and me.

&lt;/p&gt;&lt;p&gt;

Frank recently noticed that we though missed one more or less mighty
tool so far. We missed it, because it&amp;#8217;s mostly unknown, undocumented
and hidden behind a package name which doesn&amp;#8217;t suggest a real
recursive &amp;#8220;grep everything&amp;#8221;:

&lt;/p&gt;&lt;h4&gt;deepgrep&lt;/h4&gt;&lt;p&gt;

&lt;code&gt;deepgrep&lt;/code&gt; is part of the &lt;a href=&quot;http://www.debian.org/&quot; class=&quot;ext&quot;&gt;Debian&lt;/a&gt; package &lt;a class=&quot;ext&quot; href=&quot;http://packages.debian.org/strigi-utils&quot;&gt;strigi-utils&lt;/a&gt;, a package which contains utilities related to the
&lt;a href=&quot;http://www.kde.org/&quot; class=&quot;ext&quot;&gt;&lt;acronym title=&quot;K(lickibunti ;-) Desktop Environment; Kolorful Diskfilling Environment (Ulrich Schwarz)&quot;&gt;KDE&lt;/acronym&gt;&lt;/a&gt; desktop search &lt;a href=&quot;http://strigi.sf.net/&quot; class=&quot;ext&quot;
&gt;Strigi&lt;/a&gt;.

&lt;/p&gt;&lt;p&gt;

&lt;code&gt;deepgrep&lt;/code&gt; especially eases the searching through tar
balls, even nested ones, but can also search through zip files and
&lt;a href=&quot;http://www.openoffice.org/&quot; class=&quot;ext&quot;&gt;OpenOffice.org&lt;/a&gt;/&lt;a href=&quot;http://www.libreoffice.org/&quot; class=&quot;ext&quot;&gt;LibreOffice&lt;/a&gt; documents (which are actually zip files).

&lt;/p&gt;&lt;p&gt;

&lt;code&gt;deepgrep&lt;/code&gt; seems to support at least the following archive
and compression formats:

&lt;/p&gt;&lt;ul&gt;

	&lt;li&gt;tar&lt;/li&gt;
	&lt;li&gt;ar, and hence deb&lt;/li&gt;
	&lt;li&gt;rpm (but not cpio)&lt;/li&gt;
	&lt;li&gt;gzip/gz&lt;/li&gt;
	&lt;li&gt;bzip2/bz2&lt;/li&gt;
	&lt;li&gt;zip, and hence jar/war and OpenOffice.org/LibreOffice
	documents&lt;/li&gt;
	&lt;li&gt;MIME messages (i.e. files attached to e-mails)

&lt;/ul&gt;&lt;p&gt;

A search in an archive which is deeply nested looks like this:

&lt;/p&gt;&lt;pre&gt;
$ deepgrep bar foo.ar
foo.ar/foo.tar/foo.tar.gz/foo.zip/foo.tar.bz2/foo.txt.gz/foo.txt:foobar
foo.ar/foo.tar/foo.tar.gz/foo.zip/foo.tar.bz2/foo.txt.gz/foo.txt:bar
&lt;/pre&gt;&lt;p&gt;

&lt;code&gt;deepgrep&lt;/code&gt; though neither seems to support any LZMA based
compression (lzma, xz, lzip, 7z), nor does it support lzop, rzip,
compress (.Z suffix), cab, cpio, xar, or rar.

&lt;/p&gt;&lt;p&gt;

Further current drawbacks of &lt;code&gt;deepgrep&lt;/code&gt;:

&lt;/p&gt;&lt;ul&gt;

	&lt;li&gt;Nearly no commandline options, especially none of the
	common grep options&lt;/li&gt;
	&lt;li&gt;No man-page or other documentation&lt;/li&gt;
	&lt;li&gt;Exit code not related to search results, you have to check
	the output to see if something has been found&lt;/li&gt;

&lt;/ul&gt;

&lt;h4&gt;deepfind&lt;/h4&gt;

&lt;p&gt;

If you just need the file names of the files in nested archives, the
package also contains the tool &lt;code&gt;deepfind&lt;/code&gt; which does
nothing else than to list all files and directories in a given set of
archives or directories:

&lt;/p&gt;&lt;pre&gt;
$ deepfind foo.ar
foo.ar
foo.ar/foo.tar
foo.ar/foo.tar/foo.tar.gz
foo.ar/foo.tar/foo.tar.gz/foo.zip
foo.ar/foo.tar/foo.tar.gz/foo.zip/foo.tar.bz2
foo.ar/foo.tar/foo.tar.gz/foo.zip/foo.tar.bz2/foo.txt.gz
foo.ar/foo.tar/foo.tar.gz/foo.zip/foo.tar.bz2/foo.txt.gz/foo.txt
&lt;/pre&gt;&lt;p&gt;

As with &lt;code&gt;deepgrep&lt;/code&gt;, &lt;code&gt;deepfind&lt;/code&gt; does not
implement any common options of it&amp;#8217;s normal sister tool
&lt;code&gt;find&lt;/code&gt;.

&lt;/p&gt;&lt;p&gt;&lt;small&gt;

[The following part has been added on 17-Nov-2012]

&lt;/small&gt;&lt;p&gt;

As with deepgrep, it also doesn&amp;#8217;t seem to support any of the more
modern or more exotic compression formats, i.e. it fails on modern
debian binary packages which use xz compression on the data part:

&lt;/p&gt;&lt;pre&gt;
deepfind xulrunner-18.0_18.0\~a2+20121109042012-1_amd64.deb
xulrunner-18.0_18.0~a2+20121109042012-1_amd64.deb
xulrunner-18.0_18.0~a2+20121109042012-1_amd64.deb/debian-binary
xulrunner-18.0_18.0~a2+20121109042012-1_amd64.deb/control.tar.gz
xulrunner-18.0_18.0~a2+20121109042012-1_amd64.deb/control.tar.gz/triggers
xulrunner-18.0_18.0~a2+20121109042012-1_amd64.deb/control.tar.gz/preinst
xulrunner-18.0_18.0~a2+20121109042012-1_amd64.deb/control.tar.gz/md5sums
xulrunner-18.0_18.0~a2+20121109042012-1_amd64.deb/control.tar.gz/postinst
xulrunner-18.0_18.0~a2+20121109042012-1_amd64.deb/control.tar.gz/control
xulrunner-18.0_18.0~a2+20121109042012-1_amd64.deb/data.tar.xz
&lt;/pre&gt;&lt;p&gt;&lt;small&gt;

[End of part added at 17-Nov-2012]

&lt;/small&gt;&lt;/p&gt;&lt;h4&gt;Dependencies&lt;/h4&gt;&lt;p&gt;

The package &lt;a class=&quot;ext&quot; href=&quot;http://packages.debian.org/strigi-utils&quot;&gt;strigi-utils&lt;/a&gt; doesn&amp;#8217;t pull in the complete Strigi
framework (i.e. no daemon), just a few libraries (libstreams,
libstreamanalyzer, and libclucene). On &lt;a href=&quot;http://www.debian.org/News/weekly/2010/11/#6&quot; class=&quot;ext&quot;&gt;Wheezy&lt;/a&gt; it also pulls in some
audio/video decoding libraries which may make some server
administrators less happy.

&lt;/p&gt;&lt;h4&gt;Conclusion&lt;/h4&gt;&lt;p&gt;

Both tools are quite limited to some basic use cases, but can be worth
a fortune if you have to work with nested archives. Nevertheless the claim in the
Debian package description of &lt;a class=&quot;ext&quot; href=&quot;http://packages.debian.org/strigi-utils&quot;&gt;strigi-utils&lt;/a&gt; that they&amp;#8217;re
&amp;#8220;enhanced&amp;#8221; versions of their well known counterparts is &lt;acronym title=&quot;in my humble opinion&quot;&gt;IMHO&lt;/acronym&gt;
disproportionate.

&lt;/p&gt;&lt;p&gt;

Most of the missing features and documentation can be explained by the
primary purpose of these tools: Being backend for desktop searches. I
guess, there wasn&amp;#8217;t much need for proper commandline usage yet. Until
now. ;-)

&lt;/p&gt;&lt;h4&gt;42.zip&lt;/h4&gt;&lt;p&gt;

And yes, I was curious enough to let &lt;code&gt;deepfind&lt;/code&gt; have a look
at &lt;a href=&quot;http://www.securityfocus.com/bid/3027/exploit/&quot;
class=&quot;ext&quot; &gt;42.zip&lt;/a&gt; (the one from SecurityFocus, unzip seems not
able to unpack 42.zip from &lt;a href=&quot;http://www.unforgettable.dk/&quot;
class=&quot;ext&quot; &gt;unforgettable.dk&lt;/a&gt; due a missing version compatibility)
and since it just traverses the archive sequentially, it has no
problem with that, needing just about 5 &lt;acronym title=&quot;Megabyte&quot;&gt;MB&lt;/acronym&gt; of &lt;acronym title=&quot;Random Access Memory&quot;&gt;RAM&lt;/acronym&gt; and a lot of time:

&lt;/p&gt;&lt;pre&gt;
[&amp;hellip;]
42.zip/lib f.zip/book f.zip/chapter f.zip/doc f.zip/page e.zip
42.zip/lib f.zip/book f.zip/chapter f.zip/doc f.zip/page e.zip/0.dll
42.zip/lib f.zip/book f.zip/chapter f.zip/doc f.zip/page f.zip
42.zip/lib f.zip/book f.zip/chapter f.zip/doc f.zip/page f.zip/0.dll
deepfind 42.zip  11644.12s user 303.89s system 97% cpu 3:24:02.46 total
&lt;/pre&gt;&lt;p&gt;

I though won&amp;#8217;t try &lt;code&gt;deepgrep&lt;/code&gt; on 42.zip. ;-)</description>
    <comments>http://noone.org/blog/English/Computer/Debian/CoolTools/deepgrep.futile#comments</comments>
    <slash:comments>0</slash:comments>
    <dc:language>en</dc:language>
    <category domain="http://noone.org/blog/tags/42.zip">42.zip</category>
<category domain="http://noone.org/blog/tags/ar">ar</category>
<category domain="http://noone.org/blog/tags/bzip2">bzip2</category>
<category domain="http://noone.org/blog/tags/CLI">CLI</category>
<category domain="http://noone.org/blog/tags/CLucene">CLucene</category>
<category domain="http://noone.org/blog/tags/deb">deb</category>
<category domain="http://noone.org/blog/tags/deepfind">deepfind</category>
<category domain="http://noone.org/blog/tags/deepgrep">deepgrep</category>
<category domain="http://noone.org/blog/tags/efho">efho</category>
<category domain="http://noone.org/blog/tags/find">find</category>
<category domain="http://noone.org/blog/tags/grep">grep</category>
<category domain="http://noone.org/blog/tags/gzip">gzip</category>
<category domain="http://noone.org/blog/tags/jar">jar</category>
<category domain="http://noone.org/blog/tags/KDE">KDE</category>
<category domain="http://noone.org/blog/tags/LibreOffice">LibreOffice</category>
<category domain="http://noone.org/blog/tags/Lucene">Lucene</category>
<category domain="http://noone.org/blog/tags/odt">odt</category>
<category domain="http://noone.org/blog/tags/OpenOffice.org">OpenOffice.org</category>
<category domain="http://noone.org/blog/tags/Rant">Rant</category>
<category domain="http://noone.org/blog/tags/rpm">rpm</category>
<category domain="http://noone.org/blog/tags/strigi">strigi</category>
<category domain="http://noone.org/blog/tags/tar">tar</category>
<category domain="http://noone.org/blog/tags/UUUT">UUUT</category>
<category domain="http://noone.org/blog/tags/war">war</category>
<category domain="http://noone.org/blog/tags/zip">zip</category>

  </item>
  <item>
    <title>Useful but Unknown Unix Tools: dwdiff better than wdiff + colordiff</title>
    <slash:department>colordiff-revisited</slash:department>
    <slash:section>English &amp;raquo; Computer &amp;raquo; Debian &amp;raquo; CoolTools</slash:section>
    <link>http://noone.org/blog/English/Computer/Debian/CoolTools/dwdiff.html</link>
    <guid isPermaLink="true">http://noone.org/blog/English/Computer/Debian/CoolTools/dwdiff.html</guid>
    <pubDate>Fri, 16 Nov 2012 01:18:59 +0100</pubDate>
    <author>abe+blog@deuxchevaux.org (Axel Beckert)</author>
    <description>
A year ago I wrote in &lt;a
href=&quot;http://noone.org/blog/English/Computer/Debian/CoolTools/wdiff-colordiff.html&quot;
&gt;Useful but Unknown Unix Tools: How wdiff and colordiff help to choose
the right Swiss Army Knife&lt;/a&gt; about using wdiff and colordiff
together. Colordiff&amp;#8217;ed wdiff output looks like this:

&lt;/p&gt;&lt;pre&gt;
$ wdiff foobar.txt barfoo.txt | colordiff
&lt;span style=&quot;color:red;font-weight:bold;&quot;&gt;[-foo-]&lt;/span&gt;bar fnord
gnarz hurz quux
bla &lt;span style=&quot;color:green;font-weight:bold;&quot;&gt;{+foo+}&lt;/span&gt; fasel
&lt;/pre&gt;&lt;p&gt;

But if you have colour, why still having these hard to read wdiff
markers still in the text?

&lt;/p&gt;&lt;p&gt;

There exists a tool named &lt;a href=&quot;http://os.ghalkes.nl/dwdiff.html&quot;
class=&quot;ext&quot; &gt;dwdiff&lt;/a&gt; which can do word diffs in colour without
textual markers and with even less to type (and without being
&lt;code&gt;&lt;a href=&quot;http://git-scm.com/&quot; class=&quot;ext&quot;&gt;git&lt;/a&gt; diff --color-words&lt;/code&gt; ;-). Actually it looks like
&lt;code&gt;git diff --color-words&lt;/code&gt;, just without the git:

&lt;/p&gt;&lt;pre&gt;
$ dwdiff -c foobar.txt barfoo.txt
&lt;span style=&quot;color:red;font-weight:bold;&quot;&gt;foo&lt;/span&gt; bar fnord
gnarz hurz quux
bla &lt;span style=&quot;color:green;font-weight:bold;&quot;&gt;foo&lt;/span&gt; fasel
&lt;/pre&gt;&lt;p&gt;

Another cool thing about dwdiff (and its name giving feature) is that
you can defined what you consider whitespace, i.e. which character(s)
&lt;strong&gt;d&lt;/strong&gt;elimit the &lt;strong&gt;w&lt;/strong&gt;ords. So lets do the
example above again, but this time declare that &amp;#8220;f&amp;#8221; is considered
the only whitespace character:

&lt;/p&gt;&lt;pre&gt;
$ dwdiff -W f -c foobar.txt barfoo.txt
f&lt;span style=&quot;color:red;font-weight:bold;&quot;&gt;oo bar &lt;/span&gt;&lt;span
style=&quot;color:green;font-weight:bold;&quot;&gt;bar &lt;/span&gt;fnord
gnarz hurz quux
bla f&lt;span style=&quot;color:green;font-weight:bold;&quot;&gt;oo &lt;/span&gt;fasel
&lt;/pre&gt;&lt;p&gt;

dwdiff can also show line numbers:

&lt;/p&gt;&lt;pre&gt;
$ dwdiff -c -L foobar.txt barfoo.txt
   1:1    &lt;span style=&quot;color:red;font-weight:bold;&quot;&gt;foo&lt;/span&gt; bar fnord
   2:2    gnarz hurz quux
   3:3    bla &lt;span style=&quot;color:green;font-weight:bold;&quot;&gt;foo&lt;/span&gt; fasel
$ dwdiff -c -L foobar.txt quux.txt
   1:1    &lt;span style=&quot;color:red;font-weight:bold;&quot;&gt;foo&lt;/span&gt; bar fnord
   1:2    &lt;span style=&quot;color:green;font-weight:bold;&quot;&gt;foobar floedeldoe&lt;/span&gt;
   2:3    gnarz hurz quux
   3:4    bla &lt;span style=&quot;color:green;font-weight:bold;&quot;&gt;foo&lt;/span&gt; fasel
&lt;/pre&gt;&lt;p&gt;&lt;small&gt;

(coloured shell screenshots by &lt;a class=&quot;ext&quot; href=&quot;http://packages.debian.org/aha&quot;&gt;aha&lt;/a&gt;)

&lt;/small&gt;</description>
    <comments>http://noone.org/blog/English/Computer/Debian/CoolTools/dwdiff.futile#comments</comments>
    <slash:comments>8</slash:comments>
    <dc:language>en</dc:language>
    <category domain="http://noone.org/blog/tags/aha">aha</category>
<category domain="http://noone.org/blog/tags/colordiff">colordiff</category>
<category domain="http://noone.org/blog/tags/dwdiff">dwdiff</category>
<category domain="http://noone.org/blog/tags/git">git</category>
<category domain="http://noone.org/blog/tags/UUUT">UUUT</category>
<category domain="http://noone.org/blog/tags/wdiff">wdiff</category>

  </item>
  <item>
    <title>Tools to handle archives conveniently</title>
    <slash:department>DWIM</slash:department>
    <slash:section>English &amp;raquo; Computer &amp;raquo; Debian &amp;raquo; CoolTools</slash:section>
    <link>http://noone.org/blog/English/Computer/Debian/CoolTools/atool-unp-dtrx.html</link>
    <guid isPermaLink="true">http://noone.org/blog/English/Computer/Debian/CoolTools/atool-unp-dtrx.html</guid>
    <pubDate>Thu, 15 Nov 2012 01:42:33 +0100</pubDate>
    <author>abe+blog@deuxchevaux.org (Axel Beckert)</author>
    <description>
&lt;small&gt;

TL;DR: There&amp;#8217;s a &lt;a href=&quot;#atool-tldr&quot;&gt;summary&lt;/a&gt; at the end
of the article.

&lt;/small&gt;&lt;/p&gt;&lt;p&gt;

Today I wanted to see why a dependency in a &lt;code&gt;.deb&lt;/code&gt;-package
from an external APT repository changed so that it became
uninstallable. While &lt;code&gt;dpkg-deb --info foobar.deb&lt;/code&gt; easily
shows the control information, the changelog is in the filesystem part
of the package.

&lt;/p&gt;&lt;p&gt;

I could extract that one &lt;code&gt;dpkg-deb&lt;/code&gt;, too,
but I&amp;#8217;d have to extract either to some temporary directory or pipe it
into tar which then can extract a single file from the archive and
sent it to STDOUT:

&lt;/p&gt;&lt;pre&gt;
dpkg-deb --fsys-tarfile foobar.deb | tar xOf - ./usr/share/doc/foobar/changelog.&lt;a href=&quot;http://www.debian.org/&quot; class=&quot;ext&quot;&gt;Debian&lt;/a&gt;.gz | zless
&lt;/pre&gt;&lt;p&gt;

But that&amp;#8217;s tedious to type. The following command is clearly less to
type and way easier to remember:

&lt;/p&gt;&lt;pre&gt;
acat foobar.deb ./usr/share/doc/foobar/changelog.Debian.gz | zless
&lt;/pre&gt;&lt;p&gt;

&lt;code&gt;acat&lt;/code&gt; stands for &amp;#8220;archive cat&amp;#8221; is part of the &lt;a class=&quot;ext&quot; href=&quot;http://packages.debian.org/atool&quot;&gt;atool&lt;/a&gt; suite of commands:

&lt;/p&gt;&lt;dl&gt;

&lt;dt&gt;als&lt;/dt&gt;
&lt;dd&gt;lists files in an archive.&lt;/dd&gt;

&lt;dd&gt;&lt;pre&gt;
$ als foobar.tgz
drwxr-xr-x abe/abe           0 2012-11-15 00:19 foobar/
-rw-r--r-- abe/abe          13 2012-11-15 00:20 foobar/bar
-rw-r--r-- abe/abe          13 2012-11-15 00:20 foobar/foo
&lt;/pre&gt;&lt;/dd&gt;

&lt;dt&gt;acat&lt;/dt&gt;
&lt;dd&gt;extracts files in an archive to standard out.&lt;/dd&gt;

&lt;dd&gt;&lt;pre&gt;
$ acat foobar.tgz foobar/foo foobar/bar
foobar/bar
bar contents
foobar/foo
foo contents
&lt;/pre&gt;&lt;/dd&gt;

&lt;dt&gt;adiff&lt;/dt&gt;
&lt;dd&gt;generates a diff between two archives using diff(1).&lt;/dd&gt;

&lt;dd&gt;&lt;pre&gt;
$ als quux.zip
Archive:  quux.zip
  Length      Date    Time    Name
---------  ---------- -----   ----
        0  2012-11-15 00:23   quux/
       16  2012-11-15 00:22   quux/foo
       13  2012-11-15 00:20   quux/bar
---------                     -------
       29                     3 files
$ adiff foobar.tgz quux.zip
diff -ru Unpack-3594/foobar/foo Unpack-7862/quux/foo
--- Unpack-3594/foobar/foo      2012-11-15 00:20:46.000000000 +0100
+++ Unpack-7862/quux/foo        2012-11-15 00:22:56.000000000 +0100
@@ -1 +1 @@
-foo contents
+foobar contents
&lt;/pre&gt;&lt;/dd&gt;

&lt;dt&gt;arepack&lt;/dt&gt;

&lt;dd&gt;repacks archives to a different format. It does this by first
extracting all files of the old archive into a temporary directory,
then packing all files extracted to that directory to the new archive.
Use the &lt;code&gt;--each&lt;/code&gt; (&lt;code&gt;-e&lt;/code&gt;) option in combination
with &lt;code&gt;--format&lt;/code&gt; (&lt;code&gt;-F&lt;/code&gt;) to repack multiple
archives using a single invocation of &lt;code&gt;atool&lt;/code&gt;. Note that
&lt;code&gt;arepack&lt;/code&gt; will not remove the old archive.&lt;/dd&gt;

&lt;dd&gt;&lt;pre&gt;
$ arepack foobar.tgz foobar.txz
foobar.tgz: extracted to `Unpack-7121/foobar&apos;
foobar.txz: grew 36 bytes
&lt;/pre&gt;&lt;/dd&gt;

&lt;dt&gt;apack&lt;/dt&gt;

&lt;dd&gt;creates archives (or compresses files). If no file arguments are
specified, filenames to add are read from standard in.&lt;/dd&gt;

&lt;dt&gt;aunpack&lt;/dt&gt;

&lt;dd&gt;extracts files from an archive. Often one wants to extract all
files in an archive to a single subdirectory. However, some archives
contain multiple files in their root directories. The aunpack program
overcomes this problem by first extracting files to a unique
(temporary) directory, and then moving its contents back if possible.
This also prevents local files from being overwritten by mistake.&lt;/dd&gt;

&lt;/dl&gt;&lt;p&gt;&lt;small&gt;

(atool subcommand descriptions from the atool man page which is
licensed under GPLv3+. Examples by me.)

&lt;/small&gt;&lt;/p&gt;&lt;p&gt;

I though &lt;a href=&quot;http://bugs.debian.org/690098&quot; class=&quot;ext&quot;&gt;miss&lt;/a&gt;
the existence of an &lt;code&gt;agrep&lt;/code&gt; subcommand. &lt;a
href=&quot;http://noone.org/blog/English/Computer/Shell/grep%20everything.html&quot;
&gt;Guess why?&lt;/a&gt;

&lt;/p&gt;&lt;p&gt;

&lt;code&gt;atool&lt;/code&gt; supports a wealth of archive types: tar (gzip-,
bzip-, bzip2-, compress-/Z-, lzip-, lzop-, xz-, and 7zip-compressed),
zip, jar/war, rar, lha/lzh, 7zip, alzip/alz, ace, ar, arj, arc, rpm,
deb, cab, gzip, bzip, bzip2, compress/Z, lzip, lzop, xz, rzip, lrzip
and cpio. (Not all subcommands support all archive types.)

&lt;/p&gt;&lt;h4&gt;Similar Utilities&lt;/h4&gt;&lt;p&gt;

There are some utilities which cover parts of what atool does, too:

&lt;/p&gt;&lt;h5&gt;Tools from the &lt;a class=&quot;ext&quot; href=&quot;http://packages.debian.org/mtools&quot;&gt;mtools&lt;/a&gt; package&lt;/h5&gt;&lt;p&gt;&lt;small&gt;

Yes, they come from the &amp;#8220;handle MS-DOS floppy disks tool&amp;#8221; package,
don&amp;#8217;t ask me why. :-)

&lt;/small&gt;&lt;/p&gt;&lt;dl&gt;

&lt;dt&gt;uz&lt;/dt&gt;

&lt;dd&gt;&lt;code&gt;gunzip&lt;/code&gt;s and extracts a &lt;code&gt;gzip&lt;/code&gt;&amp;#8216;d
&lt;code&gt;tar&lt;/code&gt;&amp;#8216;d archives&lt;/dd&gt;

&lt;dd&gt;Advantage over &lt;code&gt;aunpack&lt;/code&gt;: Less to type. :-)&lt;/dd&gt;

&lt;dd&gt;Disadvantage compared to &lt;code&gt;aunpack&lt;/code&gt;: Supports only one
archive format.&lt;/dd&gt;

&lt;dt&gt;lz&lt;/dt&gt;

&lt;dd&gt;&lt;code&gt;gunzip&lt;/code&gt;s and shows a listing of a &lt;code&gt;gzip&lt;/code&gt;&amp;#8216;d
&lt;code&gt;tar&lt;/code&gt;&amp;#8216;d archive&lt;/dd&gt;

&lt;dd&gt;Advantage over &lt;code&gt;als&lt;/code&gt;: One character less to type.
:-)&lt;/dd&gt;

&lt;dd&gt;Disadvantage compared to &lt;code&gt;als&lt;/code&gt;: Supports only one
archive format.&lt;/dd&gt;

&lt;/dl&gt;&lt;p&gt;&lt;h5&gt;&lt;a class=&quot;ext&quot; href=&quot;http://packages.debian.org/unp&quot;&gt;unp&lt;/a&gt;&lt;/h5&gt;&lt;p&gt;

&lt;code&gt;unp&lt;/code&gt; extracts one or more files given as arguments on the
command line.

&lt;/p&gt;&lt;pre&gt;
$ unp -s
Known archive formats and tools:
7z:           p7zip or p7zip-full
ace:          unace
ar,deb:       binutils
arj:          arj
bz2:          bzip2
cab:          cabextract
chm:          libchm-bin or archmage
cpio,afio:    cpio or afio
dat:          tnef
dms:          xdms
exe:          maybe orange or unzip or unrar or unarj or lha 
gz:           gzip
hqx:          macutils
lha,lzh:      lha
lz:           lzip
lzma:         xz-utils or lzma
lzo:          lzop
lzx:          unlzx
mbox:         formail and mpack
pmd:          ppmd
rar:          rar or unrar or unrar-free
rpm:          rpm2cpio and cpio
sea,sea.bin:  macutils
shar:         sharutils
tar:          tar
tar.bz2,tbz2: tar with bzip2
tar.lzip:     tar with lzip
tar.lzop,tzo: tar with lzop
tar.xz,txz:   tar with xz-utils
tar.z:        tar with compress
tgz,tar.gz:   tar with gzip
uu:           sharutils
xz:           xz-utils
zip,cbz,cbr,jar,war,ear,xpi,adf: unzip
zoo:          zoo
&lt;/pre&gt;&lt;p&gt;

So it&amp;#8217;s very similar to &lt;code&gt;aunpack&lt;/code&gt;, just a shorter command
and it supports some more exotic archive formats which
&lt;code&gt;atool&lt;/code&gt; doesn&amp;#8217;t support.

&lt;/p&gt;&lt;p&gt;

Also part of the &lt;a class=&quot;ext&quot; href=&quot;http://packages.debian.org/unp&quot;&gt;unp&lt;/a&gt; package is &lt;code&gt;ucat&lt;/code&gt; which does
more or less the same as &lt;code&gt;acat&lt;/code&gt;, just with &lt;code&gt;unp&lt;/code&gt;
as backend.

&lt;/p&gt;&lt;h5&gt;&lt;a class=&quot;ext&quot; href=&quot;http://packages.debian.org/dtrx&quot;&gt;dtrx&lt;/a&gt;&lt;/h5&gt;&lt;p&gt;

From the man page of &lt;code&gt;dtrx&lt;/code&gt;:

&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;

In addition to providing one command to extract many different archive
types, &lt;code&gt;dtrx&lt;/code&gt; also aids the user by extracting contents
consistently. By default, everything will be written to a dedicated
directory that&amp;#8217;s named after the archive. dtrx will also change the
permissions to ensure that the owner can read and write all those
files.

&lt;/p&gt;&lt;p&gt;

Supported archive formats: tar, zip (including self-extracting .exe
files), cpio, rpm, deb, gem, 7z, cab, rar, and InstallShield. It can
also decompress files compressed with gzip, bzip2, lzma, or compress.

&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;

&lt;code&gt;dtrx -l&lt;/code&gt; lists the contents of an archive, i.e. works like
&lt;code&gt;als&lt;/code&gt; or &lt;code&gt;lz&lt;/code&gt;.

&lt;/p&gt;&lt;p&gt;

dtrx has two features not present in the other tools mentioned so far:

&lt;/p&gt;&lt;ul&gt;

&lt;li&gt;It can extract metadata instead of the normal contents from .deb and
.gem files.&lt;/li&gt;

&lt;li&gt;It can extract archives recursively, i.e. can extract archives
inside of archives.&lt;/li&gt;

&lt;/ul&gt;&lt;p&gt;

Unfortunately you can&amp;#8217;t mix those two features. But you can use the
following tool for that purpose:

&lt;/p&gt;&lt;h5&gt;deepfind&lt;/h5&gt;&lt;p&gt;

deepfind is a command from the package &lt;a class=&quot;ext&quot; href=&quot;http://packages.debian.org/strigi-utils&quot;&gt;strigi-utils&lt;/a&gt; and
recursively lists files in archives, including archives in archives.
I&amp;#8217;ve already written a &lt;a
href=&quot;http://noone.org/blog/English/Computer/Debian/CoolTools/deepgrep.futile&quot;
&gt;detailed blog-posting about deepfind and its friend deepgrep&lt;/a&gt;.

&lt;/p&gt;

&lt;h5&gt;&lt;a class=&quot;ext&quot; href=&quot;http://packages.debian.org/tardiff&quot;&gt;tardiff&lt;/a&gt;&lt;/h5&gt;

&lt;p&gt;

&lt;code&gt;tardiff&lt;/code&gt; was written to check what changed in source code
tarballs from one release to another. By default it just lists the
differences in the file lists, not in the files&amp;#8217; contents and hence
works different than &lt;code&gt;adiff&lt;/code&gt;.

&lt;/p&gt;

&lt;h4&gt;&lt;a name=&quot;atool-tldr&quot;&gt;Summary&lt;/a&gt;&lt;/h4&gt;

&lt;p&gt;

&lt;code&gt;atool&lt;/code&gt; and friends are probably the first choice when it comes to
&lt;acronym title=&quot;Do What I Mean&quot;&gt;DWIM&lt;/acronym&gt; archive handling, also
because they have an easy to remember subcommand scheme.

&lt;/p&gt;&lt;p&gt;

&lt;code&gt;uz&lt;/code&gt; and &lt;code&gt;lz&lt;/code&gt; and the shortest way to extract or
list the contents of a .tar.gz file. But nothing more. And you have to
install mtools even if you don&amp;#8217;t have a floppy drive.

&lt;/p&gt;&lt;p&gt;

&lt;code&gt;unp&lt;/code&gt; comes in handy for exotic archive formats atool
doesn&amp;#8217;t support. And it&amp;#8217;s way easier to remember and type than
&lt;code&gt;aunpack&lt;/code&gt;.

&lt;/p&gt;&lt;p&gt;

&lt;code&gt;dtrx&lt;/code&gt; is neat if you want to extract archives in archives
or if you want to extract metadata from some package files with just a
few keystrokes.

&lt;/p&gt;&lt;p&gt;

For listing all files in recursive archives, use
&lt;code&gt;deepfind&lt;/code&gt;.</description>
    <comments>http://noone.org/blog/English/Computer/Debian/CoolTools/atool-unp-dtrx.futile#comments</comments>
    <slash:comments>4</slash:comments>
    <dc:language>en</dc:language>
    <category domain="http://noone.org/blog/tags/7zip">7zip</category>
<category domain="http://noone.org/blog/tags/acat">acat</category>
<category domain="http://noone.org/blog/tags/adiff">adiff</category>
<category domain="http://noone.org/blog/tags/als">als</category>
<category domain="http://noone.org/blog/tags/apack">apack</category>
<category domain="http://noone.org/blog/tags/archives">archives</category>
<category domain="http://noone.org/blog/tags/atool">atool</category>
<category domain="http://noone.org/blog/tags/aunpack">aunpack</category>
<category domain="http://noone.org/blog/tags/bzip">bzip</category>
<category domain="http://noone.org/blog/tags/bzip2">bzip2</category>
<category domain="http://noone.org/blog/tags/deb">deb</category>
<category domain="http://noone.org/blog/tags/deepfind">deepfind</category>
<category domain="http://noone.org/blog/tags/dtrx">dtrx</category>
<category domain="http://noone.org/blog/tags/floppy">floppy</category>
<category domain="http://noone.org/blog/tags/gem">gem</category>
<category domain="http://noone.org/blog/tags/grep">grep</category>
<category domain="http://noone.org/blog/tags/gzip">gzip</category>
<category domain="http://noone.org/blog/tags/lha">lha</category>
<category domain="http://noone.org/blog/tags/lrzip">lrzip</category>
<category domain="http://noone.org/blog/tags/lz">lz</category>
<category domain="http://noone.org/blog/tags/lzip">lzip</category>
<category domain="http://noone.org/blog/tags/lzop">lzop</category>
<category domain="http://noone.org/blog/tags/MS%2DDOS">MS-DOS</category>
<category domain="http://noone.org/blog/tags/mtools">mtools</category>
<category domain="http://noone.org/blog/tags/rar">rar</category>
<category domain="http://noone.org/blog/tags/rpm">rpm</category>
<category domain="http://noone.org/blog/tags/rzip">rzip</category>
<category domain="http://noone.org/blog/tags/strigi%2Dutils">strigi-utils</category>
<category domain="http://noone.org/blog/tags/tar">tar</category>
<category domain="http://noone.org/blog/tags/tardiff">tardiff</category>
<category domain="http://noone.org/blog/tags/ucat">ucat</category>
<category domain="http://noone.org/blog/tags/unp">unp</category>
<category domain="http://noone.org/blog/tags/UUUT">UUUT</category>
<category domain="http://noone.org/blog/tags/uz">uz</category>
<category domain="http://noone.org/blog/tags/xz">xz</category>
<category domain="http://noone.org/blog/tags/zip">zip</category>

  </item>
    <link>http://noone.org/blog/English/Computer/Debian/CoolTools</link>
  </channel>
</rss>
