I know lists like this will almost always contain at least one command that I, or any other sys admin on here, would use fairly regularly. But it would be nice if just once an article about "obscure" CLI commands didn't include stuff that's the most basic of essential every day staples for any *nix administrator.
Including stuff like vi and emacs is just ridiculous, quite frankly. If you haven't heard of them already then you really have no place in the command line, let alone reading a document like this.
Most of these types of articles should be rebanded as "beginners cheat sheet for handy command line tools" or just not written to begin with (because, frankly, they're just repeating all the same recommendations as every other article like this that pops up each week and few of them have any descriptions that are accurate either).
Maybe my job this weekend will be to write my own version of these documents but with a decent selection of programs, descriptions and example usages?
> Maybe my job this weekend will be to write my own version of these documents but with a decent selection of programs, descriptions and example usages?
Maybe your job this weekend should be to get a little exercise before writing on the internet?
It's a nice little summary of cool tools. "Some are little-known, some are just too useful to miss, some are pure obscure".
Although there's some real gems in there (I can't believe I never ran across vipe before!), its Debian package conflicts with the GNU parallel package: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=718816 Quite annoying.
The best not-so-well-known tool he mentiions is socat. If you use netcat, socat is like netcat on steroids. It's just a bit hard to remember all the options, but next time there's something crazy you want to do with netcat that it doesn't support, like tunnelling raw packets from a wireless interface on a machine in firewalled corporate network through an SSL tunnel to home machine and dumping those packets locally to a serial port, socat can pretty much do it all.
I don't really think it's fair to call anything that's in a POSIX standard obscure (like xargs).
Most of these are fairly common, and many of the descriptions are terrible, for example: `rsync` doesn't "[Keep] filesystems in sync over SSH"; it's a versatile `cp`-like for dealing with remote systems efficiently that happens to support transfers over SSH.
I still don't use ack, mostly because it's not installed everywhere I go on a regular basis and so my fingers still go 'grep' when I think 'text search'.
(I also rarely use curl, because my fingers are trained for wget -qO. That one is a personal quirk, though, I didn't know about curl until I'd had that one imprinted on my brain. The cool thing there, though, is that wget -qSO will send headers to stderr and content to stdout, so you can get fancy.)
I would like to see a graphical terminal emulator. When I mean by this is that the terminal emulator works the same as usual- it should display normal output, support ANSI escape sequences and have scroll-back. But it also should be able to display graphics. If your UNIX command line program happens to output a graph, it shows up on the terminal. The graph is embedded inline with the text and you can scroll back to it.
Interactive programs should also possible- think of a schematic editor or a figure editor running right on your terminal emulator.
The point of all this is to retain the context of whatever you're doing without having to switch windows. That and to advance the state of the art of console tools- certainly they have not changed in decades.
On the topic of ways to improve the terminal, I'd like to see output separated from input.
Put the prompt 1/4 of the way down the screen instead of at the bottom. Above the prompt, we have a backlog of the commands we input. As we press up, it scrolls through the backlog, as normal.
Below the prompt, we see the output of the command.
I'd also like to see tab completion (and maybe some form of hinting) on programs, not just file paths.
Check out terminology [0]. The video is quite long but impressive.
There was a work by someone on github for building a new kind of terminal. It wasn't line-based, rather "context-based": the output of the command was written next to the input, but you could write commands in the same terminal next to each other. It was some amazing stuff, but I can't find it (I think the logo was an octopus or something like that, and the "backend" was emacs)
Incorrect title for the post. Many of the tools mentioned are very commonly used. Also, except nice screenshots, this article is just a listing of tools with very little useful info to go with them.
I was going to mention jq. It's great, and replaces the previous json tool I was using (can't remember the name now, but it wasn't as useful.) I hope it becomes more popular.
[+] [-] laumars|12 years ago|reply
Including stuff like vi and emacs is just ridiculous, quite frankly. If you haven't heard of them already then you really have no place in the command line, let alone reading a document like this.
Most of these types of articles should be rebanded as "beginners cheat sheet for handy command line tools" or just not written to begin with (because, frankly, they're just repeating all the same recommendations as every other article like this that pops up each week and few of them have any descriptions that are accurate either).
Maybe my job this weekend will be to write my own version of these documents but with a decent selection of programs, descriptions and example usages?
[+] [-] darklajid|12 years ago|reply
[+] [-] kemist|12 years ago|reply
Maybe your job this weekend should be to get a little exercise before writing on the internet?
It's a nice little summary of cool tools. "Some are little-known, some are just too useful to miss, some are pure obscure".
[+] [-] alec|12 years ago|reply
Examples:
- sponge: read in all of stdin, then write to the given file. Great for pipelines: sed "s/root/toor/" /etc/passwd | grep -v joey | sponge /etc/passwd
- vipe: easily drop a $EDITOR instance in the middle of a pipe chain
- ts: timestamp all standard input; great for long-running output
[+] [-] stevekemp|12 years ago|reply
https://github.com/skx/sysadmin-util
More focused on those a sysadmin might prefer than general-use, but contributions or updates are welcome.
[+] [-] chipb|12 years ago|reply
[+] [-] wging|12 years ago|reply
[+] [-] justincormack|12 years ago|reply
[+] [-] vesinisa|12 years ago|reply
[+] [-] jevinskie|12 years ago|reply
[+] [-] alcari|12 years ago|reply
Most of these are fairly common, and many of the descriptions are terrible, for example: `rsync` doesn't "[Keep] filesystems in sync over SSH"; it's a versatile `cp`-like for dealing with remote systems efficiently that happens to support transfers over SSH.
[+] [-] alcari|12 years ago|reply
[+] [-] dbbolton|12 years ago|reply
Not to mention vim, rsync, curl, and ack, all of which I (and I had assumed everyone else) use on a regular basis.
[+] [-] eropple|12 years ago|reply
(I also rarely use curl, because my fingers are trained for wget -qO. That one is a personal quirk, though, I didn't know about curl until I'd had that one imprinted on my brain. The cool thing there, though, is that wget -qSO will send headers to stderr and content to stdout, so you can get fancy.)
[+] [-] defrex|12 years ago|reply
[+] [-] albiabia|12 years ago|reply
It sounds ridiculous, but you can tell a lot about a console program from a screenshot.
[+] [-] jhallenworld|12 years ago|reply
Interactive programs should also possible- think of a schematic editor or a figure editor running right on your terminal emulator.
The point of all this is to retain the context of whatever you're doing without having to switch windows. That and to advance the state of the art of console tools- certainly they have not changed in decades.
[+] [-] tavoe|12 years ago|reply
Put the prompt 1/4 of the way down the screen instead of at the bottom. Above the prompt, we have a backlog of the commands we input. As we press up, it scrolls through the backlog, as normal.
Below the prompt, we see the output of the command.
I'd also like to see tab completion (and maybe some form of hinting) on programs, not just file paths.
[+] [-] rakoo|12 years ago|reply
There was a work by someone on github for building a new kind of terminal. It wasn't line-based, rather "context-based": the output of the command was written next to the input, but you could write commands in the same terminal next to each other. It was some amazing stuff, but I can't find it (I think the logo was an octopus or something like that, and the "backend" was emacs)
[0] https://www.gnu.org/philosophy/free-sw.html
[+] [-] tsudot|12 years ago|reply
Also its written by antirez :)
[+] [-] sadanapalli|12 years ago|reply
[+] [-] oinksoft|12 years ago|reply
[+] [-] johnchristopher|12 years ago|reply
I think the difference is in the trailing slash of the submitted link.
[0] Oh god, no.
[+] [-] anonfunction|12 years ago|reply
[+] [-] philsnow|12 years ago|reply
Here [0] is a post detailing how I got calendar notifications working with remind/wyrd + screen + URGENT hint.
[0] http://lists.roaringpenguin.com/pipermail/remind-fans/2006/0...
[+] [-] fis|12 years ago|reply
[+] [-] TuxLyn|12 years ago|reply
[+] [-] tsudot|12 years ago|reply
> Still the most complex game on the planet.
Does anybody know if a HTML5 version of Nethack exists?
[+] [-] anateus|12 years ago|reply
[+] [-] riskable|12 years ago|reply
That's a direct link to the Gate One demo. You can play Nethack (among other things).
Here's the source to Gate One: https://github.com/liftoff/GateOne
[+] [-] RexRollman|12 years ago|reply
http://inconsolation.wordpress.com/
[+] [-] coherentpony|12 years ago|reply
[+] [-] mateuszf|12 years ago|reply
[+] [-] owenversteeg|12 years ago|reply