It's not intended as a full replacement. It's about reducing your technology for a few days in order to get proficient in the console. The browsers are just because we all need google or hacker news sooner or later.
I think you've misinterpreted the article somewhat.
The best way to rid yourself of "I have this hammer..." syndrome is to get rid of the hammer temporarily, and force yourself to use the alternatives for a while. That way you get to know them, and can recognize when they're a better choice than a hammer. After that you start using the hammer again, but now you can put it aside when you need to.
That's why the author suggests giving up your GUI-based tools for a short time.
More like "the terminal challenge." Curses-based programs (like vim, mutt and lynx) still have graphical user interfaces, they just have really shitty graphics. (And that's not a criticism of those programs.)
Try spending a week using just ed, mail, and curl. Those are actual command-line programs, not just terminal-based programs. The litmus test is whether they would work with a real paper teletype.
"When I log into my Xenix system with my 110 baud teletype, both vi and Emacs
are just too damn slow. They print useless messages like, ‘C-h for help’ and
‘“foo” File is read only’. So I use the editor that doesn't waste my VALUABLE time.
Ed, man! !man ed"
Curses-based programs (like vim, mutt and lynx) still have graphical user interfaces, they just have really shitty graphics. (And that's not a criticism of those programs.)
I'd say the keyboard-centricness still separates them from, say, Eclipse.
I think we can be more purist still: menu-driven UIs are not really command line either. MH has a truly command-line UI for mail, while the mail program doesn't.
Some years back, I spent a couple of days trying to use ed for some serious text preparation work before I decided this was not the kind of experiment one should do when better tools are available and real work needs to be done. Using nmh (an MH reimplementation) used to be a pleasure, until its clumsy handling of HTML (quite a bit worse than mutt) began to overwhelm the whole user experience.
I suppose now we have a new generation of developers who have never had nothing but a DOS prompt to stare at. I have no desire to relive the days before high resolution displays, mice, and the most amazing software that has ever existed.
Have to agree. I mean, I probably count as the tail end of that generation, at least in terms of actual programming (though I sort-of-fondly remember the joys of SUBSTing drive letters for games in DOS when I was five or six...), but I do definitely remember 80x25-and-that's-all-you-get (heck--QBasic, anybody?). I have been to the land of stone knives and bearskins, and I am so very grateful we don't still live there.
My (unintentional) Command Line Challenge was trying to build Gentoo on a 100MHz laptop with no other computers around. That was about 2 days of compute work. At the time, it didn't compile reliably either, so emerge would crash 5-10 times while trying to get to Xorg. Learning to fix the problems, particularly via lynx, brought me up to speed more quickly than anything else.
I was using Debian on a compaq dual 200MHz Pentium Pro desktop until about '02. I was pretty much 100% of the time on the shell so I really didn't need anything more.
Mutt for email, irssi for IRC, links for browser, vi for the editor and a 512k ADSL connection. That was about it.
The whole machine cost me 10GBP (about $15). It replaced an old Sun machine I found in a skip in 1997.
Xorg is fine today, it's pretty much automatic. I'm talking about 6 or 7 years ago when you had to dive into xorg.conf to get 75% of graphics cards to work.
Amusingly, Emacs can do pretty much all he listed. Of course, as somebody who pretty much lives in Emacs and a browser, I'm probably the wrong demographic :).
Also, I'm annoyed at other commenters' equating "command line" with primitive: just because GUIs are newer does not mean they are superior or that the command line is obsolete! For a large range of tasks like file management or system administration it is actually superior; for quite a lot of other things it's completely usable. I'm not saying GUIs are useless or that the command line is perfect for everything, but it is far from obsolete or inferior.
Now, doing everything in a terminal is overkill, which is why this is a challenge--you're not expected to use a terminal forever, just long enough to get sufficiently acquainted with it so that when you do things the terminal is great at--which you will--you will be able to use it as efficiently as possible. And, since all the readers here doubtlessly spend very large amounts of time behind a computer, being as efficient as possible there should be a priority.
Coincidentally, I say all this as somebody who started using a computer with Windows 95. I only learned how to use the command line (first a bit on Windows then on Linux) because it looked cool; I continue using it because it turned out to be more efficient at a whole host of tasks than using a GUI.
CLI is great from *NIX perspective and I believe most of us had used it extensively in the past. I still use CLI but if and only if it suits as the best tool for the problem I'm working on. The fact is, that the paradigm has changed, therefore the way we interact with our computing devices.
IMHO, bigotry is not only bad in politics. We have to embrace the change, learn new tools, improve, share our knowledge and not only make our jobs better for ourselves, but also for others. Especially for rookies, who will have to be doing more tomorrow than what we do today. I don't believe `libcaca` has anything to serve this purpose.
Using mutt instead of gmail; I'd ask "Why?". We don't need to stick with the tools we've used 10 years ago. If I'd be looking for a challenge as a sysadmin, I'd learn ways to better utilize cloud environments, look for better ways to serve static content for large volume systems, improve my tool base for managing geographically distributed servers, learn about the requirements of the new era of real time web, how to deploy node.js on my servers, etc.
You point out that you're familiar with the command line, thus this article isn't really for you.
For people who haven't used CLI before; or who don't have much experience of the command line: it makes some things about the Unix way a bit clearer. One program does one task, but does it well. You pass the output from one command into the input of another. Input and output are text, because text is universal.
These are important powerful concepts and I'm disappointed that they've largely been forgotten in the GUI world.
I'm also baffled that my vastly powerful computer has areas of lagginess when grinding through some seemingly trivial things. A pure-CLI trivially-easy-to-install distro[1] isn't going to happen, but imagine the use people could get from all those old computers which are not coping with modern OSs.
[1] Linux from scratch definitely does not count. TinyCore doesn't really count. Arch sort of comes close, but would need to be i) Much easier to install and ii) have a specific repository for CLI / Curses / etc software.
I use a lot of command line tools these days, but I always use a web browser for browsing the web and a proper music player too. I don't think "going cold turkey" from the GUI is really a good idea.
I can understand the browser - I use a graphical one too - but except for CD covers there's really no content a music player needs images for.
Ncmpcpp has a clear, nice interface with features like automated lyrics downloading, database management, tags editor, playlists, etc. And the advantage is that since it's only an MPD frontend, you can still use mpc to script stuff.
Yes. But. The trick is knowing other tools in sufficient depth to know when Excel is an anti-pattern.
Which is hard, b/c it's so flexible that it gets adapted to a lot of stuff it really shouldn't be. A big chunk of Corporate America uses Excel the way our foreprogrammers used Perl or Bash, adapting it to all manner of tasks because it's what they know. I admire their resourcefulness (and scorn their IT environment for limiting their access to better tools) but that handiness leads them into solutions that are fragile, unmaintainable, uncheckable and unscaleable.
The step from Excel to broader, more flexible tools is the move away from graphically delineated relationships to logically stated relationships. It's a very hard step, and one most people won't make unless they force themselves through a period of clumsiness while they orient themselves to a new approach.
Exercises like the OP are a great way to do just that: "I'm going to force myself in this direction by setting some simple but arbitrary obstacle that will build capabilities I can use elsewhere." Doing so on tasks that are well understood may help even more -- "I know how I would do this in Excel, how do I do it in Python?" -- because your knowledge of the problem frees you to learn the new things about this new sort of solution.
The OP isn't saying the CLI is the right tool for everything, he's saying this is a way to build the understanding that lets you move to it freely when it is the right.
Will using cli tools for no real reason be the next hipster retro thing? If so, I just want to state that I've used the terminal and cli applications/tools long before it was cool :p
I do this. I live in the command line exclusively and have for over a decade, except for web browsing (Lynx is extremely useful though) with Firefox + pentadactyl, and PDF/image,video viewing/editing.
But then again I'm a little biased, since I work for a company that makes our own vi, perl, awk port of entire POSIX APIs for Windows and UNIX shells etc. And cross platform ALM suite of applications (Linux, Solaris, AIX, HPUX, Windows, Mac OS X). I can't imagine being a developer and not being in the CLI 99% of the time.
Same here but not as much. I do all my work that way in FreeBSD but with another FreeBSD box sitting next to it running X for any graphical stuff I need to look at.
> lynx has more options and is more powerful in general, but elinks has a better rendering and looks.
I've never understood why lynx gets so much more love and respect than elinks. Elinks has tabs, lynx doesn't. Elinks supports some EMCAscript, lynx does not. What are these special features that only lynx has?
Yeah, so, I did that. On VT-220 and VT-320 terminals, connected to VMS on VAX and Solaris on Sun. Oh, and command line on a 486DX33 running Linux so long ago that the concept of a distribution was new.
I love command lines, and I use them every day. Most of my work is on a command line... in a term window in X. The Linux virtual terminal system was a great advantage. The ability to run multiple terminal windows on-screen at the same time, with a clipboard! that was an amazing achievement. Virtual desktops? Great.
All of these things are advantages, and you don't need to stop using the good stuff that works in order to use the new stuff that works. Today I click on one of my sidebar icons to summon the terminal windows in which I do most of my work. I have enough RAM that I can keep heavy graphical browsers open -- FF and Chrome -- with hundreds of tabs open.
I'm happy to be able to use everything. I'm happy to have choices.
The article didn't make any religious argument for the command line opposed to a GUI. His background is the opposite of yours. For him, relying on the ease of a graphical interface was a habitual deterrent to stepping out of his comfort zone and learning the CLI. Temporarily restricting himself to use only CLI was a focusing mechanism to help him gain strength in a weak area. His efforts demonstrate the hacker ethic quite well. He could have easily stuck with the familiar, but decided to force himself to go out on a limb.
44 comments
[ 3.9 ms ] story [ 99.7 ms ] threadLynx/links/elinks are not acceptable substitutes for a modern browser.
The command line is a powerful tool, and it has its place, like any other tool. This just reeks of "all I have is a hammer..." syndrome.
The best way to rid yourself of "I have this hammer..." syndrome is to get rid of the hammer temporarily, and force yourself to use the alternatives for a while. That way you get to know them, and can recognize when they're a better choice than a hammer. After that you start using the hammer again, but now you can put it aside when you need to.
That's why the author suggests giving up your GUI-based tools for a short time.
You can use the (terribly named.) libcaca. Or you can use fbi as root and take advantage of having a display that isn't a physical teletype.
Try spending a week using just ed, mail, and curl. Those are actual command-line programs, not just terminal-based programs. The litmus test is whether they would work with a real paper teletype.
I'd say the keyboard-centricness still separates them from, say, Eclipse.
or http://luakit.org/projects/luakit/
The real challenge these days is javascript. I'm not aware of a text-mode browser that interprets javascript.
I'd also like to give a plug for w3m. It's far more user-friendly than lynx, and IMO more advanced than elinks.
I think we can be more purist still: menu-driven UIs are not really command line either. MH has a truly command-line UI for mail, while the mail program doesn't.
Some years back, I spent a couple of days trying to use ed for some serious text preparation work before I decided this was not the kind of experiment one should do when better tools are available and real work needs to be done. Using nmh (an MH reimplementation) used to be a pleasure, until its clumsy handling of HTML (quite a bit worse than mutt) began to overwhelm the whole user experience.
Something to be said for leaning by immersion.
I was using Debian on a compaq dual 200MHz Pentium Pro desktop until about '02. I was pretty much 100% of the time on the shell so I really didn't need anything more.
Mutt for email, irssi for IRC, links for browser, vi for the editor and a 512k ADSL connection. That was about it.
The whole machine cost me 10GBP (about $15). It replaced an old Sun machine I found in a skip in 1997.
I bought my first new computer in 2004 :)
The console rocks.
Also, I'm annoyed at other commenters' equating "command line" with primitive: just because GUIs are newer does not mean they are superior or that the command line is obsolete! For a large range of tasks like file management or system administration it is actually superior; for quite a lot of other things it's completely usable. I'm not saying GUIs are useless or that the command line is perfect for everything, but it is far from obsolete or inferior.
Now, doing everything in a terminal is overkill, which is why this is a challenge--you're not expected to use a terminal forever, just long enough to get sufficiently acquainted with it so that when you do things the terminal is great at--which you will--you will be able to use it as efficiently as possible. And, since all the readers here doubtlessly spend very large amounts of time behind a computer, being as efficient as possible there should be a priority.
Coincidentally, I say all this as somebody who started using a computer with Windows 95. I only learned how to use the command line (first a bit on Windows then on Linux) because it looked cool; I continue using it because it turned out to be more efficient at a whole host of tasks than using a GUI.
IMHO, bigotry is not only bad in politics. We have to embrace the change, learn new tools, improve, share our knowledge and not only make our jobs better for ourselves, but also for others. Especially for rookies, who will have to be doing more tomorrow than what we do today. I don't believe `libcaca` has anything to serve this purpose.
Using mutt instead of gmail; I'd ask "Why?". We don't need to stick with the tools we've used 10 years ago. If I'd be looking for a challenge as a sysadmin, I'd learn ways to better utilize cloud environments, look for better ways to serve static content for large volume systems, improve my tool base for managing geographically distributed servers, learn about the requirements of the new era of real time web, how to deploy node.js on my servers, etc.
For people who haven't used CLI before; or who don't have much experience of the command line: it makes some things about the Unix way a bit clearer. One program does one task, but does it well. You pass the output from one command into the input of another. Input and output are text, because text is universal.
These are important powerful concepts and I'm disappointed that they've largely been forgotten in the GUI world.
I'm also baffled that my vastly powerful computer has areas of lagginess when grinding through some seemingly trivial things. A pure-CLI trivially-easy-to-install distro[1] isn't going to happen, but imagine the use people could get from all those old computers which are not coping with modern OSs.
[1] Linux from scratch definitely does not count. TinyCore doesn't really count. Arch sort of comes close, but would need to be i) Much easier to install and ii) have a specific repository for CLI / Curses / etc software.
For this exact reason, in my first experiences with GNU/Linux, I reinstalled the distro every time X was screwed.
Both have their place.
I can understand the browser - I use a graphical one too - but except for CD covers there's really no content a music player needs images for.
Ncmpcpp has a clear, nice interface with features like automated lyrics downloading, database management, tags editor, playlists, etc. And the advantage is that since it's only an MPD frontend, you can still use mpc to script stuff.
I just happen to be able to get a lot done using a terminal. However, that does not mean I want to be doing something Excel-ish in anything but Excel.
Which is hard, b/c it's so flexible that it gets adapted to a lot of stuff it really shouldn't be. A big chunk of Corporate America uses Excel the way our foreprogrammers used Perl or Bash, adapting it to all manner of tasks because it's what they know. I admire their resourcefulness (and scorn their IT environment for limiting their access to better tools) but that handiness leads them into solutions that are fragile, unmaintainable, uncheckable and unscaleable.
The step from Excel to broader, more flexible tools is the move away from graphically delineated relationships to logically stated relationships. It's a very hard step, and one most people won't make unless they force themselves through a period of clumsiness while they orient themselves to a new approach.
Exercises like the OP are a great way to do just that: "I'm going to force myself in this direction by setting some simple but arbitrary obstacle that will build capabilities I can use elsewhere." Doing so on tasks that are well understood may help even more -- "I know how I would do this in Excel, how do I do it in Python?" -- because your knowledge of the problem frees you to learn the new things about this new sort of solution.
The OP isn't saying the CLI is the right tool for everything, he's saying this is a way to build the understanding that lets you move to it freely when it is the right.
I have to say that I haven't seen such a fair argument in favor of emacs or vi for years.
But then again I'm a little biased, since I work for a company that makes our own vi, perl, awk port of entire POSIX APIs for Windows and UNIX shells etc. And cross platform ALM suite of applications (Linux, Solaris, AIX, HPUX, Windows, Mac OS X). I can't imagine being a developer and not being in the CLI 99% of the time.
I've never understood why lynx gets so much more love and respect than elinks. Elinks has tabs, lynx doesn't. Elinks supports some EMCAscript, lynx does not. What are these special features that only lynx has?
I love command lines, and I use them every day. Most of my work is on a command line... in a term window in X. The Linux virtual terminal system was a great advantage. The ability to run multiple terminal windows on-screen at the same time, with a clipboard! that was an amazing achievement. Virtual desktops? Great.
All of these things are advantages, and you don't need to stop using the good stuff that works in order to use the new stuff that works. Today I click on one of my sidebar icons to summon the terminal windows in which I do most of my work. I have enough RAM that I can keep heavy graphical browsers open -- FF and Chrome -- with hundreds of tabs open.
I'm happy to be able to use everything. I'm happy to have choices.