> Still the most complex game on the planet.
Dwarf Fortress.
As a sidenote, to anyone who doesn't know the story of how Dwarf Fortress is being made, you should check it out. It's one guy, working full time on it, and managing to support himself and his brother through monthly donations. It's released completely free of charge, so this is just solely from people donating. That alone would be a pretty cool story, but when you look at the immense, mindboggling, ridiculously ambitious scale of the the planned finished game, it's incredible. He's basically trying to build a completely "generic fantasy world simulator", with procedurally generated world, history, etc. The amount of detail he goes into in this is amazing, and he has so much more planned. If you ever need to be inspired that one person can make a living doing what they love, or that you can actually implement features that are ambitious beyond most AAA developers' wildest dreams, look to Toady One.
As a bonus, it's a pretty fun game!
The sequel, Headshoots[2], is also funny but not quite the same calibre as Boatmurdered. FYI, the name of your fortress is randomly generated.
[1] http://lparchive.org/Dwarf-Fortress-Boatmurdered/Introductio...
It's a pity that DF isn't open source either, as then its interface problems would have long since been fixed. But, as it is, its lead (and only) developer doesn't seem to care enough to fix it himself.
It's just too bad he can't come up with a UI that would appeal to any but the most dedicated players.
Until someone writes out rules for Azad, I think Dwarf Fortress will remain king of the complexity hill.
Still, a very nice one, that is!
For me, the major winner was dstat. Did not know about that tool - I've been struggling with the output of iostat. I'll also be experimenting with tmux as a screen replacement/alternative.
got me:
ack - Kanji code converter
:(
abcde - CD to mp3 ripper
apg - random password generator
base64 - better than uuencode
boxes - draw any kind of boxes around your text
bsdiff - binary differ
bspatch - binary patcher
bvi - binary vi (yet another hex editor)
ccx2 - console xmms2 client
clive - flash video downloader
dvipdfmx - dvi to pdf converter
enfuse - poor man's HDR
get_flash_videos - yet another flash video downloader
glark - advanced grep
indent - code beautifier
lshw - list hardware configuration
mcurl - multiple part downloader using curl
mktemp - safely create temporary files and directories
msort - sort records in complex ways
netbrake - bandwidth limiter
od - octal dump
par - paragraph reformatter
par2 - archive verification and repair tool
ped - sed done right with perl
pinfo - color info reader
pipe.vim - make vim part of a unix pipe and allow it to
edit the pipe contents
pv - Pipe Viewer: a tool for monitoring
the progress of data through a pipe
pydf - pretty df (disk space viewer)
qmv - use your favorite editor to rename files
(part of renameutils)
qodem - modem program that can do serial, telnet, ssh,
zmodem, kermit, etc
rdiff-backup - like rsync, but can do incremental backups
recode - like dos2unix and unix2dos, but with many more encodings
recordmydesktop - make screencast videos
remark - great logfile colorizer (part of regex-markup)
rkhunter - find rootkit infections
rlwrap - add readline editing support to any command
safecopy - data recovery tool (better than dd)
sponge - soak up stdin and write to a file
(for things like pipeline editing)
sux - su while transferring X credentials
unbuffer - force flushing of stdout
upx - executable compressor
utimer - countdown timer and stopwatch
vared - edit shell variables (part of zsh)
watch - run a command multiple times and display the output
(with differences highlighted)
xdotool - simulate keyboard and mouse activity
xxd - hex dump
zargs - a version of xargs that makes the find command redundant
(part of zsh)
zed - very small and fast vi-like editor (part of zsh)
zrun - automatically uncompress arguments to commandI mean, I remember even 5 years ago ripping a CD took actual effort and a long time to get all the encoding done. So yay for abcde.
but nl is shorter :)
$ cat > test.txt
one
two
three
five
Let's try to number every line: $ nl test.txt
1 one
2 two
3 three
4 five
Ok, the leading spaces are annoying (why not use a single tab?), and are also produced with "cat -n". And why is not numbering blank lines the default?How can you prefix every line, even non-blank ones, with the line number followed by a single tab? Turns out the answer is:
$ nl -w1 -n ln -ba -s"`printf '\t'`" test.txt
Horrible defaults. HORRIBLE.yafc: The best command-line FTP client that nobody's ever heard of. Local caching, tab completion, bookmarking, SFTP, and other generally awesome stuff.
clex: Full-screen file manager for command-line junkies. Configurable directory display, smart name completion, enhances the command line without seeking to replace it.
clex's approach to file management is by complementing the command line; you can generally use it as a pure CLI and it stays out of your way unless until you need to find or select a path. Every action you perform remains on the command line, clex merely makes it easier to quickly build commands. Compared to clex, Midnight Commander (like Norton Commander before it) feels like an attempt at a graphical file manager for the terminal, where the command line is almost an afterthought.
==== ________ ___________
_D _| |_______/ \__I_I_____===__|_________|
|(_)--- | H\________/ | | =|___ ___| _________________
/ | | H | | | | ||_| |_|| _| \_____A
| | | H |__--------------------| [___] | =| |
| ________|___H__/__|_____/[][]~\_______| | -| |
|/ | |-----------I_____I [][] [] D |=======|____|________________________|_
__/ =| o |=-~~\ /~~\ /~~\ /~~\ ____Y___________|__|__________________________|_
|/-=|___|| || || || |_____/~\___/ |_D__D__D_| |_D__D__D_|
\_/ \__/ \__/ \__/ \__/ \_/ \_/ \_/ \_/ \_/Fixed it for you.
That principle also applies to grep regular expressions vs Perl regexes. Regular languages are quite weak in the right way, and thus can be recognized in linear time. Perl's regexes on the other hand, are so powerful, they can even tell prime numbers from composite numbers with their back tracking.
Choosing a weaker tool also serves as documention---about which features not to worry about.
(Of course you shouldn't try to use a tool that's weaker than what you need. For example, trying to solve some problem crying for recursion or iteration in a spreadsheet will lead to more harm than good.)
I was in the process of making something similar before I found what I wanted – rlwrap. It provides readline line editing capabilities to command line applications that don’t support them, such as netcat.
< cowsay is the epitome of a unix tool. >
------------------------------------------------
\ _
\ (_)
\ ^__^ / \
\ (OO)\_____/_\ \
(__)\ ) /
||----w ((
|| ||>>You can do some amazing things with MySQL, Postgres, and Memcached with some of the maatkit tools.
Especially, xmlstarlet sel lets you select whatever data you want from XML files, being a command-line XSL templates generator.
Don't know anything else useful for XML, so it fills a vacuum.
I bet very few people here are aware of its existence, even it has been part of Unix since Version 7. I recently discovered it and have used it to solve some project Euler problems.
Kristof here, creator of this particular list. First, thanks for the kind words! :)
I'll maybe add more tools when I have some time to make more screenshots. It's surprisingly more time consuming than it seems :)
Also, I'm a bit of two minds with the whole list -- many people think that some of these tools are already not "obscure" enough, while others suggest adding even more trivial ones like ifconfig or grep. I'll have to think about this a bit :)
Once again, thanks for your feedback!
KKovacs
None of the following from this list are obscure: screen, vim, rsync, xargs, curl
I'm tempted to put ack in that list.
Irssi - irc client
Mutt - email client
These are mentioned mostly because he included the newsbeuter rss client (which is amazing, I highly recommend it).agrep - approximate grep based on edit distance).
GNU Global - source tagging system that integrates with the shell (less -tfunc displays the function given in the shell).
xmllint - xml validator, pretty printer and schema validator.
"tee"
Redshift/f.lux - Redshift adjusts the color temperature of your screen according to your surroundings.
http://unkart.ovh.org/ncmpcpp/screenshots.php
Also in line with tmux, checkout teamocil and tmuxinator on github.
http://caca.zoy.org/wiki/libcaca
Also, there is neercs, a terminal multiplexer that uses libcaca: http://caca.zoy.org/wiki/neercs
So over on one of the test machines I apt-get install cowsay ... One of the other devs here is going go get a surprise next time he logs into one of the webservers ... ;)