The Linux shell will always be with us

The Linux shell will always be with us

Summary: There's been some talk recently about how we're now beyond using the command line. Nonsense!


Over at TuxRadar, a Linux site as you could guess from the name, they've been debating for some time the question of whether or not the Linux shell is obsolete. The argument really got kicked off with this comment: “The command line is a crusty, old-fashioned way to interact with a computer, made obsolete by GUIs, but a small hardcore of people who refuse to move on still use it to perform arcane tasks that the majority of more enlightened users never need to perform. Mostly these tasks need to be performed in this way because of defects and omissions in current GUIs.”

Oh please. For most users most of the time you'll no more need to use Linux shell commands, than you'll need to know how to change your oil to drive your car. But, sometimes, and here's the point, sometimes, you do need to change your oil.

With modern Linux desktop systems, this may only happen every time a Republican in the House votes for ObamaCare, but it can happen. That's why I still write stories such as  “The 16 Linux Shell Commands Every Desktop Linux User Should Know."

There's nothing there a Linux pro won't know by heart, but if things go really odd for you and you don't know your Bash from your C Shell you might find something handy there.

Don't get me wrong. A modern desktop Linux user is no more likely to use shell commands than a Windows user is likely to use regedit. That's why there are now Linux computers for grandpa and grandma  and my 80-year old mother-in-law is happily using Ubuntu 12.04. In 2012, most desktop users will never need to get their hands dirty with their desktop operating system's motor.

But, the shell, or its Windows equivalent. the command line, was never just for desktop users. Any Linux or Windows system administrator must know how to use this level of tools. Unlike Joe or Jane Desktop User, a system manager will use shell or command line tools all the time.

Why? For the same reason a car mechanic needs power tools to work on an engine. No graphical user interface (GUI) can give you access to all the possible tweaks that need to be made to a misbehaving desktop or to keep any server in line.

So while most users will never need to know the ins and outs of Linux's netstat or nmon or Windows' PowerShell scripts, system administrators, on any operating system, will always need to those “crusty, old-fashioned ways” to interact with a computer.

Related Stories:

A Linux computer for grandpa and grandma

If my mother-in-law can use Ubuntu Linux, anyone can

Red Hat Enterprise Linux 6.3 is ready today

Has Microsoft opened the door to the Linux desktop?

Ubuntu, CentOS, & SUSE Linux comes to Windows Azure

Topics: Linux, Open Source, Operating Systems, Windows

Kick off your day with ZDNet's daily email newsletter. It's the freshest tech news and opinion, served hot. Get it.


Log in or register to join the discussion
  • I agree that the CLI will always be needed for some things..

    But your own quote almost sums it up best...

    "Mostly these tasks need to be performed in this way because of defects and omissions in current GUIs"

    I know you included the words "defects and" in there, but really, I think you would have more correct in just saying "omissions".

    There really isn't anything that GUIs aren't capable of, as long as they are written to do the work. Plenty of OS's (even UNIX-based ones) have demonstrated that you can get just about all of the same work done in a properly-designed GUI that you can in a CLI - so long as the GUI actually includes these features.

    Of course, in Open Source land, you have to have developers who see the benefit in doing so. If they continue to see the GUI as a waste of time, they will leave the lowest-level functions in the CLI where they are most comfortable, regardless of whether the users feel the same way or not.

    For this reason, Linux has the reputation of being a "geek's" operating system. There are still many things that everyday computer users have come to expect to be able to adjust using an intuitive GUI that can't be adjusted as easily in some of Linux's various GUIs. It's not because the GUI is defective, or because GUIs aren't capable - it's because the developers have made the decision not to include that capability.
    • What's this GUI you talk of?

      The power to manage everything via the commandline is part of the beauty of Unix-like OSes.

      Unix tools, text, stdin/out/err & shell scripting are unparalleled for getting work done.
      Richard Flude
      • Possibly the most popular full-featured Unix-like OS in use today...

        ..namely Mac OS X..

        ..the one and only Unix-Like OS that lets you do just about everything you *need* to do in the GUI, including many things that would require a command-line in most versions of Linux and other versions of FreeBSD.

        Flexibility-wise, I agree, the CLI allows you to do a lot, very quickly, if you know what you're doing.. However I'm incredibly hard-pressed to think about any task I would need to do in Mac OS X that I couldn't do using GUI tools..

        As far as automation and shell scripting goes - I'll see your shell scripting and raise you Automator.. Bringing 90% of the automation tasks that most computer users would really want to do into the GUI environment, where many would, again, be *required* to use shell scripting in Linux.

        The difference I'm talking about is the level of what you *can* do to the level of what you *need to* do. Granted, the latter is becoming less and less of an issue in Linux as well, but it is still moreso than Mac OS X. Considering Open Source is supposed to mean accelerated innovation because "everyone" can modify the system to suit, the development effort on tools like this just doesn't seem to be happening. With all the "new" UIs being developed now, it seems the Linux developers have spent more time re-inventing what they've already got (Gnome and KDE, now XFCE, Unity, etc) instead of expanding on it.

        Unfortunately, this is the double-edged sword of open-source development - freedom = lack of control but it often also means lack of leadership and direction.
        • The distinction between *need* and *can* is quite fuzzy.

          While I agree that most things can be solved from a GUI, it's programs like TinkerTool that actually give you allot of command-line options through a GUI on OS X. I have also run into issues personally were a CLI is definitely needed at least once to create a launch daemon, so I don't have to do it ever again. (Static bonding of ethernet, since Apple doesn't supply LACP capable drivers on the BootCamp partition for example)

          Thankfully this is only concerning desktops/workstations, since IMHO Apple's greatest downfall for server is the GUI, but that's probably another discussion.
        • There's your problem right there...

          "However I'm incredibly hard-pressed to think about any task I would need to do in Mac OS X that I couldn't do using GUI tools"

          Just because your needs can be met with a GUI and you are hard pressed to think of any task you would need to do outside of OS X'x GUI doesn't mean that it can accommodate everyone's needs. Even if you can do certain things from the GUI a CLI can still actually be more efficient than a GUI for some of those tasks. Other tasks would be a nightmare without a CLI.


          Creating multiple directories. Right clicking and selecting "new folder" and typing the folder names becomes tedious as the number of directories needed increases. At a point, opening a terminal and typing "mkdir mp3 ogg wma avi mpg" etc is actually easier and faster.

          Copying or moving/renaming files selectively can be done from a CLI with much more power than a GUI. (although I have found some GUI file manager apps that are pretty powerful.)

          Installing multiple packages can be done from a GUI package manager but the utility of merely typing "apt-get install opera geany axel frozen-bubble" etc trumps any package manager when you already know the name of the software you want to install. Bonus points when a client calls and says "I need a program to edit audio." and you can tell them to pull up terminal and type "sudo apt-get install audacity" rather than trying to talk him through browsing the web and finding a program, the right program's download link and clicking through the installer. Or you can ssh into their computer if they have a support agreement even over a slow connection and install it for them without interrupting their GUI session.

          Lots of specialized data processing tasks no one would spend the time writing a GUI to do because they are so specific to the job.

          A computer can be a powerful tool that can service the needs of 100% of its users all of the time or it can only provide the tools to do what 90% of its users would need most of the time. I prefer the former over the latter and there will never be a GUI that can do the former until they get direct mind interface which is close to the power of a CLI currently.

        • Full-featured Unix-Like OS?

          Is there a common understanding that a "Unix-Like" OS is something everyone wants to achieve?

          Your use of "full-featured" is an admission that Unix isn't that complete or usable.

          The most popular OS today is without doubt Windows and the most powerful shell has to be Windows PowerShell aka Monad. With Windows PowerShell, you can access the full .NET Framework class libraries, and that is where you get all your heavy-lifting work done. You have classes and objects, can use generics, consume web services, and do LINQ.
          • Powershell

            Powershell has been a tremendous addition to windows it still is not as powerful as a CLI on linux/UNIX. A Linux/UNIX CLI lets you do everything with the system including controlling the GUI. I am not dissing powershell just would like Microsoft to go farther.
          • RE: PowerShell

            > I am not dissing powershell just would like Microsoft to go farther.

            Your wish is my command! :-)

            In WS8 and WS2012, we *dramatically* increase the level of cmdlet coverage as well as dynamically compile the scripts, include a workflow engine, address hundreds of user feedback items and provide a rich ISE with intelli-sense support.

            I think it is what you are looking for.

            Jeffrey Snover [MSFT]
            Distinguished Engineer and Lead Architect for Windows Server
        • Not true

          I need static routes and it is harder to do in OS X, than windows or Linux, and not doable in the OSX gui, and only linux has a GUI to do it.
      • It's more than stdin/stdout/err!

        "Unix tools, text, stdin/out/err & shell scripting are unparalleled for getting work done."

        A modern day shell has full object-oriented scripting, has integrated access to the objects of its host system which in Windows (the most popular OS ever with a keyboard) means the full .NET Framework class library. It has to be able to handle modern language constructs such as generics, LINQ, etc. The ability to use your .NET classes is unparalleled for getting work done, as work is more than just printf or writeline. Windows PowerShell can do all of that, and can even do MessageBox.Show(). Try it and you will fall in love.
      • All depends on whether you want greater than that 1%

        For the people who love Linux the command line probably is "part of the beauty". But for most who are not currently part of that 1% a command line is anything but an "unparalleled for getting work done". Do you want to be mass market and used by many or do you want to remain a niche? Your answer to that question determines how much "beauty " there is in a command line.
    • RE: daftkey

      It's not really about GUI vs. CLI.

      It's about Mouse vs. Keyboard.

      Keyboards are _very_ necessary to get work done. Mice are expendable.

      It's about efficiency and automation.

      First of all, no GUI can keep up with the speed at work at on the CLI. But what's more is that by the time I work up a task in the GUI the first time, I can copy all of those commands into a script and do the same task again the 2nd, 3rd, or 1000th time in < 1 sec.

      It's about the task at hand.

      If you want to use the CLI for web browsing, you will be disappointed. If you need a GUI to run an internal Web or Filesharing service, you are a nincompoop. Real servers don't need and should never have the X stack installed.
      • Disappointed?

        Lynx ought to work just fine at least for Twitter, don't you think?
        • Lynx?

          TTYtter is a better example
    • Exactly, this article is what is ridiculous.

      I gave Linux a try a few years ago. SUSE to be exact, and I have to admit, I was pretty impressed for the most part. Of course, to start with its free, and to get a full blown highly functional OS for free is an impressive thing from the get go. I liked the install package, tons of decent apps included. It was an easy install and it generally performed very well.

      But the fact is, in relatively short order I did find myself being pushed into using command lines and quite frankly it was for various things I never would have had to use a command line for in Windows. It happened with just enough regularity to put my off Linux. It felt like any time I wanted to do something beyond simple computing I had to look for answers on the web to see how its done, and it usually involved me using command lines. Linux is OK for the geeks, and its OK for grandma who doesn't want to do much besides look at email and do some simple surfing. For people who are very active users and do a wide variety of things with their computer, but are not of geek status, Linux is mostly a pain in the butt.
      • =?

        You don't need to use CLI to even work with Unix systems like Linux distributions unless you want.

        I bet you just were following guides to edit some text files or install some packages?

        All those can be done with graphical applications, but problem just is, people don't think what they are doing and they follow blindly every guide.

        It is easier to write a guide for CLI than to make a screenshot gallery what to do and what to click. Even when writing guides in text format for GUI, is harder like "Settings > Display > Extend Display".

        No one needs to use CLI to modify text files, just open it to graphical text editor like Kate or Gedit.
        No need to manage files trough CLI, just use graphical filemanager like Dolphin or Nautilus.
        No need to install packages directly using package manager, just use application what gives graphical frontend for package manager.

        Every graphical application actually makes pretty small things harder than CLI. Thats why CLI has survived to these days so well and even Microsoft has improved it to Windows because it is needed.
        That is as well one reason why people tend to throw all their files to desktop on Windows or OS X, because it is easy to make a folder there and save all files to those folders (no matter of predefined folders at user account directories).

        I know lots of all kind people from beginners (don't even know well how to use mouse) to basic users (does all kind stuff) and professionals (needs to do stuff at work) to geeks (like to learn new stuff for hobby). And all can perfectly do everything without touching CLI, but they have a choice to use CLI and most actually do when they just notice that CLI is not difficult, it is very easy, quick and powerful tool and only thing what people are scared are their own fears "Oh, again a command line".

        People who are new to Unix systems like Linux distributions, tend to be guided sooner to CLI than in other systems, but it is not a must in most cases.
    • There are some things that the GUI will never be as capable of as a CLI

      How would you like your own GUI to have hundreds of options on the context menu? Now try thousands. The power of a CLI can not be duplicated and leveraged by a GUI. There are just too many things that can be done at the CLI to make it possible.
    • Not SJVN's quote.

      "Mostly these tasks need to be performed in this way because of defects and omissions in current GUIs" It was part of a comment in TuxRadar.
    • A CLI is a GUI

      Might we dispense with the fallacy that a CLI is not a GUI? It has been since teletypewriters were first hitched to a computer so you could see what you were typing.
  • A comment to the wind...

    Power users, adminstrators, sysadmins, etc. always move from JUST gui tools to some scripting. This is as true on Windows as on Linux. In fact, Windows Servers can now be installed and maintained with no gui.

    For other users, there is little need for command-line or scripting, so they can happily click away on Windows or Linux, until the occasional "oops" comes along, and then they need their friendly Google command-line to show they what to enter in that scary command-line on their computer.

    And that's the way it is, Wednesday, July 11th, 2012.