Thursday·01·September·2011
Useful but Unknown Unix Tools: How wdiff and colordiff help to choose the right Swiss Army Knife //at 12:18 //by abe
In light of the fact that it seems possible to fit the plastic caps of a Debian branded Swiss Army Knife (Last orders today!) on an existing Swiss Army Knife (German written howto as PDF), I started to think about which Victorinox Cybertool would be the best fitting for me.
And because the Victorinox comparison page doesn’t really show diffs, just columns with floating text which are not very helpful for generating diffs in your head, I used command line tools for that purpose:
wdiff
Because the floating texts are not line- but just whitespace-based,
the tool of choice is not diff
but wdiff
, a word-based diff. It encloses additions and removals
in {+…+}
and [-…-]
blocks.
(No, those aren’t Japanese smileys although they look a lot like some.
^^).
The easiest and clearest way is to copy and paste the texts from Victorinox’ comparison page into some text files and
compare them with wdiff
:
$ wdiff cybertool34.txt cybertool41.txt
{+Schraubendreher 2.5mm,+} Pinzette, Nähahle mit Nadelöhr, {+Holzsäge,+} Bit-Schlüssel( 5 mm Innensechskant für die D-SUB Steckverbinder, 4 mm Innensechskant für Bits, Bit Phillips 0, Bit Phillips 1, Bit-Schlitzschrauben 4 mm, Bit Phillips 2, Bit Hex 4 mm, Bit Torx 8, Bit Torx 10, Bit Torx 15 ), Kombizange( Hülsenpresser, Drahtschneider ), Stech-Bohrahle, Kugelschreiber( auch zum DIP-Switch verstellen ), Mehrzweckhaken (Paketträger), {+Metallsäge( Metallfeile, Nagelfeile, Nagelreiniger ),+} Dosenöffner( kleiner Schraubendreher ), Kleine Klinge, Grosse Klinge, Ring, inox, Mini-Schraubendreher, Kapselheber( Schraubendreher, Drahtabisolierer ), {+Holzmeissel / Schaber,+} Bit-Halter, Stecknadel, inox, Schere, Korkenzieher, Zahnstocher
So this already extracted the information which are the seven tools which are in the Cybertool 41, but not in the Cybertool 34. Nevertheless the diff is still not easily recognizable on the first glance. There are several ways to help here.
First wdiff
has an option --no-common
(the
according short option is -3
) which just shows added and
removed words:
$ wdiff -3 cybertool34.txt cybertool41.txt ====================================================================== {+Schraubendreher 2.5mm,+} ====================================================================== {+Holzsäge,+} ====================================================================== {+Metallsäge( Metallfeile, Nagelfeile, Nagelreiniger ),+} ====================================================================== {+Holzmeissel / Schaber,+} ======================================================================
This is already way better to quickly recognize the actual differences.
But if you still also want to see the common tools of the two knifes you need some visual help:
One option is to use wdiff
’s --terminal
(or
short -t
) option. Added words are then displayed inverse
and removed words are shown underlined (background and foreground
colors hardcoded as there is no “invert colors” style in CSS or HTML):
$ wdiff -t cybertool34.txt cybertool41.txt
Schraubendreher 2.5mm, Pinzette, Nähahle mit Nadelöhr, Holzsäge, Bit-Schlüssel( 5 mm Innensechskant für die D-SUB Steckverbinder, 4 mm Innensechskant für Bits, Bit Phillips 0, Bit Phillips 1, Bit-Schlitzschrauben 4 mm, Bit Phillips 2, Bit Hex 4 mm, Bit Torx 8, Bit Torx 10, Bit Torx 15 ), Kombizange( Hülsenpresser, Drahtschneider ), Stech-Bohrahle, Kugelschreiber( auch zum DIP-Switch verstellen ), Mehrzweckhaken (Paketträger), Metallsäge( Metallfeile, Nagelfeile, Nagelreiniger ), Dosenöffner( kleiner Schraubendreher ), Kleine Klinge, Druckkugelschreiber, Grosse Klinge, Ring, inox, Mini-Schraubendreher, Kapselheber( Schraubendreher, Drahtabisolierer ), Holzmeissel / Schaber, Bit-Halter, Stecknadel, inox, Schere, Korkenzieher, Zahnstocher
But some still like to to use color instead of the contrast-rich inverse and the easily to oversee underlining. This is where colordiff comes into play:
colordiff
colordiff is like syntax highlighting for diffs on the
command line. I works with classic and unified diffs as well as with
wdiffs and debdiffs (the debdiff
command is part of the
devscripts package).
$ wdiff cybertool34.txt cybertool41.txt | colordiff
{+Schraubendreher 2.5mm,+} Pinzette, Nähahle mit Nadelöhr, {+Holzsäge,+} Bit-Schlüssel( 5 mm Innensechskant für die D-SUB Steckverbinder, 4 mm Innensechskant für Bits, Bit Phillips 0, Bit Phillips 1, Bit-Schlitzschrauben 4 mm, Bit Phillips 2, Bit Hex 4 mm, Bit Torx 8, Bit Torx 10, Bit Torx 15 ), Kombizange( Hülsenpresser, Drahtschneider ), Stech-Bohrahle, Kugelschreiber( auch zum DIP-Switch verstellen ), Mehrzweckhaken (Paketträger), {+Metallsäge( Metallfeile, Nagelfeile, Nagelreiniger ),+} Dosenöffner( kleiner Schraubendreher ), Kleine Klinge, Grosse Klinge, Ring, inox, Mini-Schraubendreher, Kapselheber( Schraubendreher, Drahtabisolierer ), {+Holzmeissel / Schaber,+} Bit-Halter, Stecknadel, inox, Schere, Korkenzieher, Zahnstocher$ wdiff cybertool29.txt cybertool41.txt | colordiff
{+Schraubendreher 2.5mm,+} Pinzette, Nähahle mit Nadelöhr, {+Holzsäge,+} Bit-Schlüssel( 5 mm Innensechskant für die D-SUB Steckverbinder, 4 mm Innensechskant für Bits, Bit Phillips 0, Bit Phillips 1, Bit-Schlitzschrauben 4 mm, Bit Phillips 2, Bit Hex 4 mm, Bit Torx 8, Bit Torx 10, Bit Torx 15 ), {+Kombizange( Hülsenpresser, Drahtschneider ),+} Stech-Bohrahle, {+Kugelschreiber( auch zum DIP-Switch verstellen ), Mehrzweckhaken (Paketträger), Metallsäge( Metallfeile, Nagelfeile, Nagelreiniger ),+} Dosenöffner( kleiner Schraubendreher ), Kleine Klinge, [-Druckkugelschreiber,-] Grosse Klinge, Ring, inox, Mini-Schraubendreher, Kapselheber( Schraubendreher, Drahtabisolierer ), {+Holzmeissel / Schaber,+} Bit-Halter, Stecknadel, inox, {+Schere,+} Korkenzieher, Zahnstocher
(Coloured “Screenshots” done with ANSI HTML Adapter from the package aha.)
Some, especially those who are used to git, are probably
confused by the default choice of diff colors. This is easily fixable
by writing the following into you ~/.colordiffrc
:
newtext=green oldtext=red diffstuff=darkblue cvsstuff=darkyellow
(See also /etc/colordiff
for the defaults and hints.)
colordiff
has by the way two operating modes:
- Without parameter it reads diffs from standard input as seen above.
- With parameters it works as drop-in diff replacement including all diff options as shown below.
So now let us compare the Cybertool 29 with Cybertool 34 in a normal diff (by using the texts from above and replacing all commata with newline characters) with git-like colors:
$ colordiff cybertool29-lines.txt cybertool34-lines.txt 12a13,14 > Kombizange( Hülsenpresser > Drahtschneider ) 13a16,17 > Kugelschreiber( auch zum DIP-Switch verstellen ) > Mehrzweckhaken (Paketträger) 16d19 < Druckkugelschreiber 25a29 > Schere
Or as unifed diff with some context:
$ colordiff -u cybertool29-lines.txt cybertool34-lines.txt --- cybertool29-lines.txt 2011-08-31 20:55:37.195546238 +0200 +++ cybertool34-lines.txt 2011-08-31 20:55:11.667710504 +0200 @@ -10,10 +10,13 @@ Bit Torx 8 Bit Torx 10 Bit Torx 15 ) +Kombizange( Hülsenpresser +Drahtschneider ) Stech-Bohrahle +Kugelschreiber( auch zum DIP-Switch verstellen ) +Mehrzweckhaken (Paketträger) Dosenöffner( kleiner Schraubendreher ) Kleine Klinge -Druckkugelschreiber Grosse Klinge Ring inox @@ -23,5 +26,6 @@ Bit-Halter Stecknadel inox +Schere Korkenzieher Zahnstocher
So if you want nicely colored diffs with Subversion like you’re used
to with git, you can use svn diff | colordiff
.
Tagged as: aha, colordiff, Colorful Console, Cybertool, debdiff, Debian, devscripts, diff, git, nuggets, SAK, svn, Swiss Army Knife, UUUT, Victorinox, wdiff
// show without comments // write a comment
Related stories
Wednesday·31·August·2011
Useful but Unknown Unix Tools: Calculating with IPs, The Sequel //at 20:09 //by abe
This is a direct followup on my previous blog posting about calculating IPs and netmasks with the tools netmask and prips. Kurt Roeckx (via e-mail) and Niall Donegan (via a comment to that blog posting) both told me about the package sipcalc, and Kurt also mentioned the package ipcalc. Thanks for that! And since I found both useful, too, let’s put them in their own blog posting:
Both tools, ipcalc and sipcalc offer a “get all information at once” mode which are not present in the previously presented tool netmask.
ipcalc
ipcalc by default outputs all information and even in ANSI colors:
$ ipcalc 192.168.96.0/21 Address: 192.168.96.0 11000000.10101000.01100 000.00000000 Netmask: 255.255.248.0 = 21 11111111.11111111.11111 000.00000000 Wildcard: 0.0.7.255 00000000.00000000.00000 111.11111111 => Network: 192.168.96.0/21 11000000.10101000.01100 000.00000000 HostMin: 192.168.96.1 11000000.10101000.01100 000.00000001 HostMax: 192.168.103.254 11000000.10101000.01100 111.11111110 Broadcast: 192.168.103.255 11000000.10101000.01100 111.11111111 Hosts/Net: 2046 Class C, Private Internet
(Coloured “Screenshots” done with ANSI HTML Adapter from the package aha.)
You can suppress the bitwise option or directly output HTML via
commandline options. For example ipcalc -b -h 192.168.96.0/21
outputs the following content:
Address: 192.168.96.0 Netmask: 255.255.248.0 = 21 Wildcard: 0.0.7.255 => Network: 192.168.96.0/21 HostMin: 192.168.96.1 HostMax: 192.168.103.254 Broadcast: 192.168.103.255 Hosts/Net: 2046 Class C, Private Internet
Yes, that’s an HTML table and no preformatted text, just with a monospaced font. (I just removed the hardcoded text color from it, otherwise it would not look nice on dark backgrounds like in Planet Commandline’s default color scheme.)
Like netmask, ipcalc can also deaggregate IP ranges into largest possible networks:
$ ipcalc 192.168.87.0 - 192.168.110.255 deaggregate 192.168.87.0 - 192.168.110.255 192.168.87.0/24 192.168.88.0/21 192.168.96.0/21 192.168.104.0/22 192.168.108.0/23 192.168.110.0/24
(ipcalc -r 192.168.87.0 192.168.110.255
is just another
way to write this, and it results in the same output.)
To find networks with at least 20, 63 and 30 IP addresses within a /24 network, use for example:
Address: 192.0.2.0 Netmask: 255.255.255.0 = 24 Wildcard: 0.0.0.255 => Network: 192.0.2.0/24 HostMin: 192.0.2.1 HostMax: 192.0.2.254 Broadcast: 192.0.2.255 Hosts/Net: 254 Class C 1. Requested size: 20 hosts Netmask: 255.255.255.224 = 27 Network: 192.0.2.128/27 HostMin: 192.0.2.129 HostMax: 192.0.2.158 Broadcast: 192.0.2.159 Hosts/Net: 30 Class C 2. Requested size: 63 hosts Netmask: 255.255.255.128 = 25 Network: 192.0.2.0/25 HostMin: 192.0.2.1 HostMax: 192.0.2.126 Broadcast: 192.0.2.127 Hosts/Net: 126 Class C 3. Requested size: 30 hosts Netmask: 255.255.255.224 = 27 Network: 192.0.2.160/27 HostMin: 192.0.2.161 HostMax: 192.0.2.190 Broadcast: 192.0.2.191 Hosts/Net: 30 Class C Needed size: 192 addresses. Used network: 192.0.2.0/24 Unused: 192.0.2.192/26
sipcalc
sipcalc is similar to ipcalc. One big difference seems to be the IPv6 support:
$ sipcalc 2001:DB8::/32 -[ipv6 : 2001:DB8::/32] - 0 [IPV6 INFO] Expanded Address - 2001:0db8:0000:0000:0000:0000:0000:0000 Compressed address - 2001:db8:: Subnet prefix (masked) - 2001:db8:0:0:0:0:0:0/32 Address ID (masked) - 0:0:0:0:0:0:0:0/32 Prefix address - ffff:ffff:0:0:0:0:0:0 Prefix length - 32 Address type - Aggregatable Global Unicast Addresses Network range - 2001:0db8:0000:0000:0000:0000:0000:0000 - 2001:0db8:ffff:ffff:ffff:ffff:ffff:ffff
(Thanks to Niall for the pointer to RFC3849. :-)
It can also split up networks into smaller chunks, but only same-size chunks, like e.g. split a /32 IPv6 network into /34 networks:
sipcalc -S34 2001:DB8::/32 -[ipv6 : 2001:DB8::/32] - 0 [Split network] Network - 2001:0db8:0000:0000:0000:0000:0000:0000 - 2001:0db8:3fff:ffff:ffff:ffff:ffff:ffff Network - 2001:0db8:4000:0000:0000:0000:0000:0000 - 2001:0db8:7fff:ffff:ffff:ffff:ffff:ffff Network - 2001:0db8:8000:0000:0000:0000:0000:0000 - 2001:0db8:bfff:ffff:ffff:ffff:ffff:ffff Network - 2001:0db8:c000:0000:0000:0000:0000:0000 - 2001:0db8:ffff:ffff:ffff:ffff:ffff:ffff -
Similar thing with IPv4:
sipcalc -s27 192.0.2.0/24 -[ipv4 : 192.0.2.0/24] - 0 [Split network] Network - 192.0.2.0 - 192.0.2.31 Network - 192.0.2.32 - 192.0.2.63 Network - 192.0.2.64 - 192.0.2.95 Network - 192.0.2.96 - 192.0.2.127 Network - 192.0.2.128 - 192.0.2.159 Network - 192.0.2.160 - 192.0.2.191 Network - 192.0.2.192 - 192.0.2.223 Network - 192.0.2.224 - 192.0.2.255
sipcalc also has a “show me all information” mode with the -a option:
$ sipcalc -a 192.168.96.0/21 -[ipv4 : 192.168.96.0/21] - 0 [Classfull] Host address - 192.168.96.0 Host address (decimal) - 3232260096 Host address (hex) - C0A86000 Network address - 192.168.96.0 Network class - C Network mask - 255.255.255.0 Network mask (hex) - FFFFFF00 Broadcast address - 192.168.96.255 [CIDR] Host address - 192.168.96.0 Host address (decimal) - 3232260096 Host address (hex) - C0A86000 Network address - 192.168.96.0 Network mask - 255.255.248.0 Network mask (bits) - 21 Network mask (hex) - FFFFF800 Broadcast address - 192.168.103.255 Cisco wildcard - 0.0.7.255 Addresses in network - 2048 Network range - 192.168.96.0 - 192.168.103.255 Usable range - 192.168.96.1 - 192.168.103.254 [Classfull bitmaps] Network address - 11000000.10101000.01100000.00000000 Network mask - 11111111.11111111.11111111.00000000 [CIDR bitmaps] Host address - 11000000.10101000.01100000.00000000 Network address - 11000000.10101000.01100000.00000000 Network mask - 11111111.11111111.11111000.00000000 Broadcast address - 11000000.10101000.01100111.11111111 Cisco wildcard - 00000000.00000000.00000111.11111111 Network range - 11000000.10101000.01100000.00000000 - 11000000.10101000.01100111.11111111 Usable range - 11000000.10101000.01100000.00000001 - 11000000.10101000.01100111.11111110 [Networks] Network - 192.168.96.0 - 192.168.103.255 (current)
Thanks again to Kurt and Niall for their contributions!
Now listening to the schreimaschine and fausttanz
submissions for the interactive
competition at the Bünzli/DemoDays in Olten (Switzerland)
Tagged as: aha, Bünzli, CLI, Colorful Console, Contribution, Debian, DemoDays, Fausttanz, IP, ipcalc, IPv6, netmask, nuggets, Planet Commandline, RFC, RFC3849, Schreimaschine, sipcalc, UUUT
// show without comments // write a comment
Related stories
Tuesday·30·August·2011
Useful but Unknown Unix Tools: watch //at 22:18 //by abe
Yet another useful tool of which at least I heard quite late in my Unix career is “watch”. For a long time I wrote one-liners like this to monitor the output of a command:
while :; do echo -n "`date` "; host bla nameserver; sleep 2; done
But it’s way shorter and less error-prone to use “watch” from Debian’s procps package and just write
watch host bla nameserver
The only relevant difference is that I don’t have some kind of history when the output of the command changed, e.g. to calculate the rate with which a file grows.
You can even track the output of more than one command:
watch 'ps aux | grep resize2fs; df -hl'
Also a nice way to use watch is to run it inside GNU Screen (or tmux or splitvt) and split up the terminal horizontally, i.e. show the output of watch in one window and the process you’re tracking with the commands run by watch in the other window and see both running at the same time.
Update, Sunday, 28th of August 2011, 17:13h
I never found a useful case for watch’s -d
option which
highlights changes to the previous run (by inverting the changed
bytes), but until now three people pointed out the -d
option in response to this blog-posting and weasel also had some nice
examples, so here are they:
Keep an eye on the current network routes (once per second) of a host and quickly notice when they change:
watch -n1 -d ip r
Watch the current directory for size or time stamp changes of its files:
watch -d ls -l
The option -d
only highlights changes from the previous run to the
next run. If you want to see all bytes which ever changed since the
first run, use --differences=cumulative
.
Thanks to Klaus “Mowgli” Ethgen, Ulrich “mru” Dangel, Uli “youam”
Martens and Peter “weasel” Palfrader for comments and suggestions.
Tagged as: GNU Screen, nuggets, procps, screen, splitvt, tmux, UUUT, watch
// show without comments // write a comment
Related stories
Useful but Unknown Unix Tools: Kill all processes of a user //at 22:15 //by abe
I already got mails like “What a pity that your nice blog posting series ended”. No, it didn’t end. As announced, I knew that I won’t be able to keep up a daily schedule. It worked as long as I had already written the postings in advanced. But in the end the last postings were already written just in time and then I ran out of leisure and muse for a time. But as I said: It didn’t end, it will be continued. And this is the next such posting.
Oh, and for those who tell me further tools, I should blog about: I appreciate that, especially because that way I also hear about tools I didn’t know about. But why just telling me and not blogging yourself about it? :-) At least those whose blog is part of Planet Debian or Planet Symlink anyway really should do this themselves. I’d really like to see also others writing about cool tools. I neither have a right on the idea nor on the name of this series (call it meme if you want :-), so please go on and publish your favourite tools in a blog posting, too. :-)
And for all those who want to join me and Myon blogging about cool Unix tools, independent if listed on Planet Debian or Planet Symlink, I encourage you to offer a separate feed for this kind of postings and join us on Planet Commandline.
Anyway, here’s the next such posting:
As system administrator you often have the case that you have to kill all processes of one user, e.g. if a daemon didn’t properly shut down itself or amok running leftovers of a GUI session.
Many use pkill -SIGNAL -u user
from the
procps package or killall -SIGNAL -u user
from the psmisc package for it. But that’s a) quite
cumbersome to type and b) is there a chance to forget about the -u and
then bad things may happen, especially with pkill’s default substring
match, so I prefer another tool with a more explicit name:
slay
slay has an easy to remember name (at least for BOFHs ;-)
which is even quicker to type (alternating one character with the left
and the right hand, at least on US layout keyboards) than “pkill” (all
characters to type with the right hand), and has the same easy to
remember commandline syntax like kill
itself:
slay -SIGNAL user [user …]
But beware, slay is…
… not only for BOFHs, but also from a BOFH
It has a “mean mode” which is activated by default. With mean mode on, it won’t kill the given user but the user who called the program if it is invoked as an ordinary user without root rights. *g*
Interestingly I never ran into this issue despite I use this program often and for many years now.
But some Ubuntu users did, probably because adding a
sudo
in front of some command is easier to forget than
doing an ssh root@localhost
or su -
beforehand. They even seem to be so desperate about it that they forwarded the issue
from Launchpad to the Debian Bug Tracking System. ;-)
But to be honest — even if I was very amused about those bug reports — isn’t this issue “grave”, as it causes very likely (unexpected) data loss?
Now playing: Monzy
— kill dash nine (… and your process is mine
;-)
Tagged as: blog, BOFH, BTS, kill, kill dash nine, killall, Launchpad, Lyrics, Now Playing, nuggets, Other Blogs, pkill, Planet Commandline, Planet Debian, Planet Symlink, procps, psmisc, slay, sysadmin, Ubuntu, UUUT
// show without comments // write a comment
Related stories
Saturday·27·August·2011
Useful but Unknown Unix Tools: Calculating with IPs //at 12:22 //by abe
There are two small CLI tools I need often when I’m handling larger networks or more than a few IP addresses at once:
netmask
netmask is very handy for calculating with netmasks (anyone expected something else? ;-) in all variants:
$ netmask 192.168.96.0/255.255.248.0 192.168.96.0/21 $ netmask -s 192.168.96.0/21 192.168.96.0/255.255.248.0 $ netmask --range 192.168.96.0/21 192.168.96.0-192.168.103.255 (2048) $ netmask 192.168.96.0:192.168.103.255 192.168.96.0/21 $ netmask 192.168.87.0:192.168.110.255 192.168.87.0/24 192.168.88.0/21 192.168.96.0/21 192.168.104.0/22 192.168.108.0/23 192.168.110.0/24 $ netmask --cisco 192.168.96.0/21 192.168.96.0 0.0.7.255
(The IP ranges in RFC5737 where too small for the examples I had in mind. :-)
There’s though one thing netmask can’t do out of the box and that’s where the second tool comes into play:
prips
When I read the package name prips, I always think of something like “print postscript” or so, but it’s actually an abbreviation for “print IPs”.
And that’s all it does:
$ prips 192.0.2.0/29 192.0.2.0 192.0.2.1 192.0.2.2 192.0.2.3 192.0.2.4 192.0.2.5 192.0.2.6 192.0.2.7 $ prips 198.51.100.1 198.51.100.6 198.51.100.1 198.51.100.2 198.51.100.3 198.51.100.4 198.51.100.5 198.51.100.6 $ prips -i 2 203.0.113.0/28 203.0.113.0 203.0.113.2 203.0.113.4 203.0.113.6 203.0.113.8 203.0.113.10 203.0.113.12 203.0.113.14 $ prips -f hex 192.0.2.8/29 c0000208 c0000209 c000020a c000020b c000020c c000020d c000020e c000020f
prips has proven to be very useful in combination with shell loops like these:
$ prips 192.0.2.0/29 | xargs -n 1 host […] $ for ip in `prips 198.51.100.1 198.51.100.6`; do host $ip; done […]
And since prips doesn’t support the 192.0.2.0/255.255.255.248 netmask syntax, you can even easily combine those two tools:
$ prips `netmask 192.0.2.0/255.255.255.248` […]
(Hah! Now I was able to use RFC5737 IP ranges! ;-)
Tagged as: CLI, Debian, IP, netmask, nuggets, prips, RFC, RFC5737, UUUT
// show without comments // write a comment
Related stories
Tuesday·22·March·2011
Planet Commandline officially online //at 22:25 //by abe
Around the first bunch of postings in my Useful but Unknown Unix Tools, Tobias Klauser of inotail and Symlink fame came up with the idea of making a Planet (i.e. a blog aggregator) of all the comandline blogs and blog categories out there.
A first Planet Venus running prototype based on the template and style sheets of Planet Symlink was quickly up and running.
I just couldn’t decide if I should use an amber or phosphor green style for this new planet. Marius Rieder finally had the right idea to solve this dilemma: Offer both, an amber and a phosphor green style. Christian Herzog pointed me to the right piece of code at A List Apart. So here is it, available in you favourite screen colors:
For a beginning, the following feeds are included:
- Myon’s Unix blog category
- Evgeni Golov’s Desktop in a Shell column
- My Useful but Unknown Unix Tools column
- My Shell blog category
- The GRML Development Blog
- Chrütertee (Swiss-German)
- Commandline Magic’s identi.ca feed
Which leads us to the discussion what kind of feeds should be included in Planet Commandline.
Of course, all blogs or blog categories which (nearly) solely post neat tips and tricks about the command line in English are welcome.
Microblogging feeds containing (only) small but useful command line tips are welcome, too, if they neither permanently contain dozens of posts per day nor have a low signal-to-noise ratio. Unfortunately most identi.ca groups do, so they’re not suitable for such a planet.
What I’m though unsure about are non-English feeds. Yes, there’s one in already, but I noticed this only after including Beat’s Chrütertee and his FreeBSD command line tips are really good. So if it doesn’t go overboard, I think it’s ok. If there are too many non-English feeds, I’ll probably split Planet Commandline off into at least three Planets: One with all feeds, one with English only and one with all non-English feeds or maybe even one feed per language. But for now that’s still a long way off.
Another thing I’m unsure about are more propgram specific blogs like
the impressive Mastering Emacs blog “about mastering the world’s best text
editor”. *g*
(Yeah, I didn’t include
that one yet. But as soon someone shows me the vi-equivalent of that
blog, I’ll include both. Anyone thinks, spf13’s vim
category is up to that?)
Oh, and sure, any shell-specific (zsh, tcsh, bash, mksh, busybox) tips & tricks blogs don’t count as program-specific blogs like some $EDITOR, $BROWSER, or $VCS specific blogs do. :-)
Of course I’m happy about further suggestions for feeds to
include in Planet Commandline. Just remember that the feed should
provide (at least nearly) exclusively command line tips, tricks or
howtos. Suggestions for links to other commandline related planets are
welcome, too.
Tagged as: Chrütertee, CLI, CoolTools, FreeBSD, grml, inotail, LUGS, Myon, nuggets, Other Blogs, Planet Symlink, Planet Venus, Shell, tuxedo, UUUCO, UUUT, Zhenech
// show without comments // write a comment
Related stories
Wednesday·01·December·2010
Useful but Unknown Unix Tools: htop //at 02:20 //by abe
You probably know about “top”, in Debian and Ubuntu part of the procps package.
Ever wanted to see CPU and memory usage as bars and not numbers?
Ever wanted to kill a process from inside top by just selecting its row instead of having to type its pid?
Ever tried to press a cursor key inside top? It makes a noise and says “Unknown command - try ‘h’ for help”. Short said: top is not that interactive.
Ever wanted top to be more colorful?
Well, there is a solution to all these issues. It’s called htop (Debian package) and is some kind of colorful, ncurses based cross-over between top and a Midnight Commander for processes:
More screenshots of htop at
screenshot.debian.net and at the
project’s site at SourceForge.
It can do many things, top can’t do:
- Different color themes including fore- and background (includes also a monochrome theme for people considering ANSI colors being eye cancer :-)
- Highlighting the current user’s processes.
- Scrolling up, down and sidewards.
- Interactively selecting processes with cursor keys as well as with the mouse.
- Kill or renice the selected process without having to enter its pid
- Show the CPU usage for each core and a CPU usage summary at the same time.
- Show CPU, memory and swap usage as textual bars, either encoded in colors or characters.
- Easy interactive configuring while running.
- Automatically saves the current state (sort order, color scheme, etc.)
- Easy access to the most often used functions through F-keys like in Midnight Commander.
One more cool thing about htop: It’s also available on the Nokia N900 as “app”.
The only thing I found so far that top can do, but htop can’t, is
top’s batch mode (e.g. with “top -b -n 1”) where it runs
non-interactively and its output can even be piped to other processes.
The Xymon/Hobbit
monitoring system uses that as input for some machine statistics.
Tagged as: ANSI, Eye Cancer, fatboy, htop, Maemo, mc, N900, ncurses, nemo, Nokia, nuggets, top, UUUT
// show without comments // write a comment