This is the first in a series of posts on just what the title says: The command line. The main point will be this: Stop worrying about the command line.

Part 1: “If only…”

If you want to clone a hard drive in Linux, all you have to know is that the command dd converts and copies a file, and that in Linux, everything, including your hard drives, is a file. So, you could type:

dd if=/dev/hda of=/dev/hdb

and you’ve got a clone of your hard drive if your hard drive was hda. Of coruse, of hdb existed already it is gone now, so don’t just go typing stuff into your command line.

It is often said that “Linux would be better if you didn’t have to use the command line” or “Linux would be usable on the desktop if you didn’t have to use the command line” or “If only … Linux …. command line … my grandmother …. just click on it…” and so on.

This makes me laugh. I laugh because people who judge an operating system on the basis of whether or not there is a command line do not understand operating systems or command lines.

A command line is a prompt to which one responds with a word followed by between zero and lots of options and data. ls -a in bash produces a list of files, including hidden files. dir produces a similar list in DOS (but the hidden file thing does not apply). Typing something like

cat /usr/demo/SOUND/sounds/cuckoo.au > /dev/audio

in Unix makes a cuckoo clock sound. In OSX, you can use the same commands, plus or minus, as you use in Linux, because OSX is based on a system similar to Linux and thus has a redily accessible ‘shell’ that will run a lot of well known standard commands.

But this command line thing is hard to do. The user has to actually know the commands … potentially many commands to actually do anything … and all the switches and options (like the “-a” in the ls example above). The user may have to type a filename, which may include a lengthy path, exactly. If it is not typed exactly, you get the “else” in the “exactly or else” construct. A graphical user interface gets rid of most of this hardosity by allowing the user to see a word or symbol that triggers a memory. A picture of a 3.5 inch disk (which is an antique hardware item of some kind) is symbolic of the “save a file” command and a picture of a piece of paper with a plus sign may mean “make a new document.” Menus are even more clear and less culturally bound. The standard “file – edit – view – whatever – whatever – help” sequence of main menu headings across the top of the screen, with organized commands and sub menus that fly into view when when you click, allows any semi-experienced computer user to do complex things that only a few years ago required great expertise. And great memory.

Replacing the command line with a GUI means that everything is easier. Microsoft’s operating system (formerly MS-DOS, now Windows) has done this. Apple practically invented this approach. And Linux has a plethora of graphical ‘desktops’ but two that most people chose between, and it’s all menus and icons.

But not all functions on the computer are the same, and not all user requirements are best served in the same way. Think about the things you do on your computer as a spectrum of different types of functions, as follows:

1: The most basic, often low level, system or hardware related functions;
2: Day to day utilities such as file management, desktop configuration, or settings that affect appearance;
3: Running typical applications such as word processor, spreadsheet, graphics programs, and web browsers;
4: Professionalized or specialized use of applications, such as batch processing of images in The Gimp or Adobe Photoshop, or other automated operations; or
5: User engineered “applications” such as complex scripts or specialized software.

This is meant to provide a rough and provisional spectrum of computer use for the present discussion only. Use of this framework in other contexts is not recommended.

At the lowest end [1] we would have the commands you serve up to bash on a Linux or Mac OSX machine or to the “command prompt” in Windows, perhaps to configure some aspect of your hardware that is not really available to you via menus. Levels 2 and 3 are the most common day to day functions, such as copying or backing up files, opening and using text documents or spreadsheets, browsing on the Internet, and so on. These are functions that are designed to use menus in all of the systems under consideration here, and that as far as I know never require the use of the command line in Linux, Windows or OSX.

Level 4 is interesting. If you buy a nice piece of software, you expect it to do nice stuff and to do it effectively and efficiently. Well, it turns out that at some point you might actually expect, even demand, that it allow command line processing. This might be hidden in the guise of a “batch” or “macro” language, but it is a command line capability. If you live in a world in which it is assumed that the command line is always bad, and that a really good system or really good sofware would never saddle you with such a thing, then you have paid extra for a nice bit of irony. At a professional level, you may really want the command line as an option. For example, in Adobe Photoshop you may use macro commands to mass process your zillions of photographs. With this and other batch languages, you may end up with a pseudo-command line that allows you to manipulate the functionality of one program to process a series of files but that does not allow you direct, unmitigated access to any other programs that might have also been integrated into your work flow.

Level 5 is where you decide that none of your other options is good enough so you write a program or a script, or you get someone else to do that for you.

Now, let’s look at how each level compares across the three most commonly used families of system.

The first level of operation, for most normal non-geeked-out computer users, is rarely used but its use is often critical. Many people believe that basic hardware level functionality (and everything else your computer does) requires command line access in Linux, and never involves a command line in Windows or the Mac. This is simply a misconception.

If you need to configure a cable modem for a Windows system you will use software supplied on a CD by the cable Internet vendor. But when something goes wrong and that software simply does not work, and you call technical support, there is a pretty good chance the person on the other end of the phone line is going to have you open a command box and type in stuff. That’s on a Windows system. When that happens, you have to ask yourself, “Could this have been done with menus?” and the answer is, in Windows XP or later, “maybe.” But it is much much easier for the tech to dictate several dozen characters once and have it be done than to navigate you through a GUI that may actually be very complicated and somewhat unpredictable (GUI’s sometimes look very different on different configurations of the ‘same’ system).

It is quite possible to set up a Windows computer and do all sorts of things with it and never, ever, ever type in a command. But what many people do not realize is that it is also quite possible to set up a Linux computer, use it for all sorts of things, and also never have to type in a command. As of this writing, there are probably more junctures where you *need* to use the command line in Linux than in Windows, even though typical desktop users will rarely encounter this juncture in either system. But even more importantly, there are many many cases where you *want* to use the command line in Linux *and* Windows, but in Windows it is either not possible or, perhaps, simply not done, and you won’t find much guidance on how to do it, whereas in Linux (or in some cases OSX), there will be plenty of guidance.

So, at the low end, down near the system and the hardware, command line work is beneficial, critically important when it is done, and for most people rare in any modern desktop computer system. At the high end, it is something we demand despite protestations in other contexts that command line = bad. In the middle, it just never happens. Putting this another way, the basic complaint that Linux will be OK when the command line is no longer used, is obviated by … well, by the reality that a) the same applies to all systems, and b) the command line is not all bad.

So in the end it turns out that you want a command line, and you want it handy, and you want to learn how to use it.

So let’s say you have a complicated PHP or CSS file that specifies a certain color to be used over and over again in your WordPress site. And you want to change the color. You can open the file and mess arond with it, or you could type this at the command line:

sed 's/#FF0000/#0000FF/g' main.css

and go have lunch. Or, check out the next installment in this series: May the force (of the command line) be with you

_________________
Some of the code examples in this series come from this post.

Comments

  1. #1 6EQUJ5
    August 10, 2009

    Whenever I copy from a USB drive, they land on my Desktop with permissions set to ‘-rwxrwxrwx’, which makes a flat ASCII file executable, which I don’t want. Hence: chmod a-x *

    I don’t know how to do that with any GUIed application.

    I also don’t know how else to get rid of ubiquitous ‘.DS_Store’ files except from the command line.

  2. #2 D. C. Sessions
    August 10, 2009

    Here’s a system-independent problem:

    I have a lot of e-books (thank you, Jim Baen!) which I use to keep the brain active when doing long cardio workouts. The WebScription books are structured as a directory (named with the book title) full of HTML files and JPG graphics, with the files named according to the stock number (totally useless.) The book cover illustration is also present and named the <number>.JPG ; there is a TOC which is <number>_TOC.HTML

    I want to put these directories in a common parent directory and:

    1) Create an alias to the TOC named index.html (the browser default)
    2) Change the thumbnail property for the directory to use the cover graphic, in a path-independent way (so it can be accessed remotely.)

    Not too complicated, right? Try doing it with a GUI for a few hundred books and we’ll talk.

  3. #3 debeuk
    August 10, 2009

    “dd if=/dev/hda of=/dev/hdb”

    Don’t /ever/ do that unless hda and hdb are identical drives, since it will wipe the MBR and partition tables. Tar is your friend (or rsync).

  4. #4 Ben Zvan
    August 10, 2009

    @1: Mac OS has a ‘get info’ dialogue that includes permissions. It’s handled much like a GUI FTP client that allows you to set permissions on remote files. The drawback is that it can’t set permissions on multiple files at once. So maybe I missed your point.

  5. #5 6EQUJ5
    August 10, 2009

    @4: I found the OS X ‘More info’, which does allow me to unlock the file, change permissions for ‘user’ and for ‘other’ (but not for ‘group’). It’s a lot of keystrokes and mousing around to change a singe file’s permissions.

    With ‘chmod a-x *’ I remove all executable permissions from all three classes from all files in that directory.

  6. #6 Alex Besogonov
    August 10, 2009

    To be fair, Windows now has PowerShell which is even more powerful than Unix shells. It lack polish for now, but it’s definitely a serious contender.

  7. #7 Jeff Knapp
    August 10, 2009

    @4 and 5:
    Actually, you can add additional groups and users in the “get info” dialog including “group” if you have a group set up in accounts. You can set the permissions for a directory and have it recursive for everything within that directory. There are third party GUI utilities that give you more robust access to permissions without having to use the shell. Here is one for example.

    @Greg:
    In the OS X world at least, even with very specialized, high-end applications such as some of what I work with (Maya, Shake, Nuke, pfTrack), the files these apps write out are actually readable ascii scripts. Many of the configuration files are also the same. Thankfully, for me, these apps are such that they are made with the visual artist in mind and gives me purely visual ways of creating all of these scripts. I never have to directly interact with them at the text level if I don’t want to (though the option certainly is there if I do).

    I am one of those who has a lousy memory for non-visual information – things like commands and path names. I find having to interact with a command line in a shell a daunting process and kind of scary. I really need the direct visual feedback of what it is I am working with which is what a GUI gives me.

    My recent little experiment with installing Linux as a virtual machine did indeed still require me to use the command shell to get around a problem with installing 32 bit only Flash Player on the 64 bit Ubuntu. I had to search for a solution, fail a couple of times, before finding the answer and solving the problem. This is not good enough yet.

    In order for this to have truly been a “newbie” level friendly experience, that should never have been an issue. So, there is still work to be done before Linux becomes “Grandma friendly.” (The same is true for Windows too). In my personal experience, so far, only OS X comes the closest to actually achieving that goal.

    I will say, the parts of the install that went well did indeed go very well and I found the system – running as a virtual machine on my Mac Pro – very smooth and responsive. There is a lot of promise but, not yet the smooth, nearly seamless user experience that I get with the Mac.

  8. #8 Dan J
    August 10, 2009

    The 64-bit/32-bit Flash player problem can be very frustrating. The source of the problem, as is very common, is the fault of the plugin developer (Adobe in this case), not the operating system itself. The 64-bit version for Linux is still an alpha pre-release version. Only 32-bit is available as an actual release for Linux. If Adobe were to open the source for the Flash player, I’m guessing we would have a very robust player for 32-bit and 64-bit platforms very quickly. But Adobe won’t even think of doing that.

  9. #9 Greg Laden
    August 10, 2009

    Jeff: I call foul on your “not good enough yet” bit. You were crossing the 32 vs 64 bit boundary, what exactly do you expect? Ever try doing that in Windows? Also, Flash is a huge problem everwhere it goes, and that is not Linux’s fault.

    But next time my grandmother wants to install a 32 bit version of flash on linux running in a virtual box, I’ll have her make you cookies and you can help her out!!!!

    (Jeesh… You do realize, right, that you are comparing an operating system running native on a machine for which it was designed and visa versa, with a …. oh, never mind..)

  10. #10 Tony P
    August 10, 2009

    Had fun showing someone how to use chmod the other day. Taught him the octal representation of rights.

    4,2,1 = R,W,X so if you said chmod 775 on a file or directory it would set the rights to rwx-rwx—x, allowing User, Group and Other to execute the file, as well as allowing read/write to User and Group.

  11. #11 Jim Lippard
    August 10, 2009

    I recommend the Unix-Haters Handbook, now that it’s available as a free download:

    http://www.cs.washington.edu/homes/weise/unix-haters.html

  12. #12 sinned34
    August 10, 2009

    Well, Greg, in a post a month ago I said that I’d try installing Linux, and I finally did it! You asked for an update, so here it is: It didn’t go so well (to start with). I had to do three installs to get it to work.

    I installed Ubuntu in a dual-boot with my existing Windows XP, and it made my system completely unbootable. After being unable to fix it, I did a repair install of XP and gave up for a couple of weeks, until a coworker gave me the latest Kubuntu disc. I installed it and had the same problem, but I was able to figure out it was an issue with a PATA hard drive mixed in with my four SATA drives. The third install worked flawlessly, and I now have Kubuntu and XP running in a dual-boot on two separate partitions of the same hard drive.

    After a couple of missteps, my first impression is one of cautious optimism. I’ve already had a bad video card driver update that I was able to figure out how to recover from. Once the media player is working properly with my 100+Gb music library and I figure out how to get World Of Warcraft running, I’ll be able (and willing) to spend a lot more time in the Land Of The Penguin.

  13. #13 travc
    August 11, 2009

    For many operations, the GUI is just a way to generate command line commands. It really shouldn’t be viewed as an either-or situation… rather which interface is right for the job at hand.
    In a perfect world, anything you can do in the GUI should be possible on the command line (pretty much true outside of apps). Operations which get commonly used get implemented in the GUI, but the GUI would end up so full of options as to be neigh unusable if it tried to be capable of everything possible on the command line. People who pine for simple, usable, totally GUI based interface want less power. Having a GUI (or various GUI) environments and an accessible command line can make everyone more or less happy.

    Any OS is pretty much fine for the proverbial grandma… what grandma needs is a stripped down UI which doesn’t even give her the option of doing something complicated. With Linux, it is actually relatively easy to create such a hobbled UI, but there is not much real-world demand since people really want to use bleeding-edge apps, shiny new PATA drives with odd bus controllers, and snazzy video cards of doom who’s GPUs use a massive and ever changing instruction set. Newsflash, that sort of stuff will always be buggy and GUI development will always lag behind a bit.

    Apple takes a bit of a different approach, since their products are full computer systems, not just the software. Different model with some real pluses and minuses.

    A bit tangentially… I’d say that the command-line / GUI dichotomy is even a bit deeper than just the primary UI. When I write complex documents (scientific papers), I use latex in an old-fashioned text editor + command line. I also generate most of my figures using scripts (matlab scripts most frequently) and really try not to do use any GUI manipulation for data figures. These steps make version control, updating figures (with new data for example), and edits much easier.
    “If something is worth doing twice, it is worth writing a script to do it.”

  14. #14 Jeff Knapp
    August 11, 2009

    Jeff: I call foul on your “not good enough yet” bit. You were crossing the 32 vs 64 bit boundary, what exactly do you expect? Ever try doing that in Windows? Also, Flash is a huge problem everwhere it goes, and that is not Linux’s fault.

    Not in Windows but, on the Mac, not an issue. I can run both 32 bit and 64 bit apps without any issue concurrently in the Mac OS X. Currently, I am running Cinema 4D which is a 64 bit app, capable of addressing all 10 gigs of my RAM, while simultaneously running 32 bit apps. That there is a 32/64 bit barrier in Ubuntu at all is exactly the kind of thing I am talking about.

    Any time you have to delve into a text-based interface to make it go – especially if it is to solve problems – that is an indicator that more work, more polish and refinement is needed. Command lines and scripting are not something for the average user. It simply requires more knowledge and expertise of the under-the-hood workings of the system than can be expected from them. You illustrated that very well yourself, Greg.

    The 64-bit/32-bit Flash player problem can be very frustrating. The source of the problem, as is very common, is the fault of the plugin developer (Adobe in this case), not the operating system itself. The 64-bit version for Linux is still an alpha pre-release version.

    I was unaware that 64 bit Ubuntu was in alpha. I was just one of the choices available on the download page. I saw nothing indicating it was still in alpha.

    Flash may be a problem elsewhere, but I have had no issues with it on the Mac, nor am I aware of any. If it is a problem on Linux, even if it is Adobe’s fault, it is still a problem – the kind of problem I run into far less often in the Mac OS X.

    If you compare Ubuntu to Windows, I agree, other than the lack of available commercial apps, my short experience with it was far superior to the experience I have had with Windows (extensive). But, when you compare it to the Mac OS X – an OS based on the BSD Unix kernel that has all of the advantages that Linux has plus the refinement, polish, and tight integration the Mac is known for – for me, the Mac still comes up on top. As good as Ubuntu/Linux is compared to Windows, it just is not quite there yet for the non-technical, “I just want it to work” user. I am not talking about the experienced power users such as you guys here, I am talking the home user who just wants a good, trouble-free computing experience. Linux is good and getting better. I feel it has great potential but, it just is not quite there yet. That is just my own, personal, subjective experience with it.

  15. #15 Heraclides
    August 11, 2009

    So let’s say you have a complicated PHP or CSS file that specifies a certain color to be used over and over again

    At the risk of getting my head bitten off, as a good programmer, you should be defining a variable or CSS class and use that not the colour code: then you only need to change it in one place ;-) (It’s the old anything can be solved with one more level of indirection thing…) As a really good programmer, you’d have thought ahead and done this from the onset, or at least well before a fixed value got spread all over your website code.

    (I do get the point you’re illustrating with the example, it’s a fair point. Incidentally, you can do the equivalent on OS X using from within TextWrangler without resorting to the command line.)

    D. C. Sessions example is better, I think. I have a similar thing I need to get around to sometime: remove duplicate PDFs in a directory based on a mixture of nearly the same filenames, file sizes and dates. Scripting would be the sensible solution (bash or perl).

  16. #16 Greg Laden
    August 11, 2009

    Sinned34: Good for you for trying!

    I installed Ubuntu in a dual-boot with my existing Windows XP, and it made my system completely unbootable.

    As I have said before, I do not recommend dual booting unless you really know what you are doing, and NEVER dual boot with XP or any other microsoft system. Remember, booting is not what Linux does, or Windows. That is another piece of software, a kind of mini-system. Linux is said to work pretty well with that system, but Windows does not, especially if it recognizes another non-windows system.

    BTW, your system was probably not unbootable, you just didn’t know how to fix it.

    a coworker gave me the latest Kubuntu disc. I installed it and had the same problem, but I was able to figure out it was an issue with a PATA hard drive mixed in with my four SATA drives.

    Switching to kubuntu would not make the underlying problems that are unrelated to Liux go away, but it is interesting that in messing around with your system you learned some cool stuff about S/PATA.

    The third install worked flawlessly, and I now have Kubuntu and XP running in a dual-boot on two separate partitions of the same hard drive.

    Excellent! Now, just get rid of that WP part and you’ll have more room on your hard drive!

    Regarding World of Warcraft go here:

    http://www.transgaming.com/

    Or check out codeweavers.

    Of course, the whole point of a dual boot system would be to have Windows available when you want it, so you can use the Linux side for all sorts of stuff and go to Windows to play the game.

  17. #17 unreal
    August 11, 2009

    biting your head off here, if you install a Word Press template it is what it is.

  18. #18 Ted
    August 11, 2009

    Jeff: You totally miss the point. Grandma does not even know what flash is!

  19. #19 Grandpa
    August 11, 2009

    In my experience Grandma do not have that much trouble with command lines. Some people really have more trouble with screwy marketing-driven GUI smoke and mirrors. Just because something is a GUI does not make it better.

  20. #20 Ostracod
    August 11, 2009

    Jeff, I agree that for some users, especially those who need more hand holding, the Mac does come up on top compared to Linux. But the difference in cost is about an order of mag, so no thank you very much, I’ll stick with my el-cheapo but very effective Linux box!

  21. #21 Dan J
    August 11, 2009

    Jeff; either you really weren’t paying attention, or you’re deliberately being disingenuous. I’ll give you the benefit of the doubt and go with the former.

    The 64-bit/32-bit Flash player problem can be very frustrating. The source of the problem, as is very common, is the fault of the plugin developer (Adobe in this case), not the operating system itself. The 64-bit version for Linux is still an alpha pre-release version.

    I was unaware that 64 bit Ubuntu was in alpha. I was just one of the choices available on the download page. I saw nothing indicating it was still in alpha.

    The 64-bit versions of the Ubuntu releases are not in alpha release state. As I said, the 64-bit version of the Flash plugin for Linux is still an alpha release.

    Flash may be a problem elsewhere, but I have had no issues with it on the Mac, nor am I aware of any. If it is a problem on Linux, even if it is Adobe’s fault, it is still a problem – the kind of problem I run into far less often in the Mac OS X.

    Yes, it is a problem. Yes it is Adobe’s fault.

    To make use of your logic: A lot of my favorite Linux applications won’t run on Mac. I can’t run Mac OS in a virtual machine even if I pay for the OS from Apple. That must mean Mac is an inferior operating system.

  22. #22 Garry
    August 11, 2009

    nice article. one quibble: Apple didn’t even come close to inventing this. think Xerox PARC. think 1970′s.

  23. #23 Ray Ingles
    August 11, 2009

    As a counterbalance to the Unix-Hater’s Handbook, I can recommend The Art Of Unix Programming. It’s not just a programming book, it covers a lot of the Unix philosophy and why things are as they are.

  24. #24 Greg Laden
    August 11, 2009

    Garry: Thanks for spotting my troll bait! Well done.

  25. #25 D. C. Sessions
    August 11, 2009

    Flash may be a problem elsewhere, but I have had no issues with it on the Mac, nor am I aware of any. If it is a problem on Linux, even if it is Adobe’s fault, it is still a problem – the kind of problem I run into far less often in the Mac OS X.

    32-bit Flash works fine in 64-bit Linux. It even works fine for 64-bit Konqueror (WebKit-based like the native Mac browser.) It’s fine with 32-bit Firefox on 64-bit Linux.

    What it isn’t fine with is 64-bit Firefox, and that has nothing to do with Linux per se. It’s because Adobe exports a 32-bit API and Firefox calls plugins with 64-bit calling syntax. If you try to run a 64-bit Firefox on MacOS and try to use the 32-bit Adobe plugin, you’ll have the same issues.

  26. #26 Jason Thibeault
    August 11, 2009

    As soon as my damnable site is back up, sinned34, I’ll get back to going back and forth with you about WoW on Linux. Long story short, Jodi’s on day three of a ten-day trial now, playing on Ubuntu. It works fine under WINE. No need for Cedega or Crossover Office.

  27. #27 sinned34
    August 11, 2009

    Thanks for the encouragement, Greg. Linux should be interesting to learn, so I’m looking forward to the effort of getting everything working as efficiently (or better!) than I had it in XP.

    BTW, your system was probably not unbootable, you just didn’t know how to fix it.

    Undoubtedly! I didn’t mean to imply that it was Ubuntu’s fault, just that I wasn’t able to get it to work, so I did a repair install of XP and went back to my Evil Old Ways for a while!

    Switching to kubuntu would not make the underlying problems that are unrelated to Liux go away, but it is interesting that in messing around with your system you learned some cool stuff about S/PATA.

    Oh, definitely. I didn’t word it properly, but meant to state that the initial problem I experienced with both Ubuntu and Kubuntu wasn’t related to Linux, but my odd hard drive configuration. That said, the first Kubuntu install after fixing the hard drive issue wouldn’t load. It was giving me an “Error 13″ message (if I remember correctly). The only recommendation I could find was to just do the install a second time from within the LiveCD, and those steps worked flawlessly.

    Excellent! Now, just get rid of that WP part and you’ll have more room on your hard drive!

    Well, I’ve got 2 Tb of hard disk room, but I’m down to only about 250 Gb free, so I’ll probably need the space soon!

    Of course, the whole point of a dual boot system would be to have Windows available when you want it, so you can use the Linux side for all sorts of stuff and go to Windows to play the game.

    That’s what I’m aiming for. I want to see if I can use Linux for most everything and just go back to Windows for the gaming experience. Thanks for the WoW links, I’ll have a look at them.

    Jason,

    I had noticed your site seemed to be having fits. I’m going to be giving WINE a chance, it seems. I hope it likes my ATI card! If I have difficulties or questions, I’ll definitely drop by to pick your brain.

  28. #28 Heraclides
    August 11, 2009

    @17 (unreal),

    I’ve never used Word Press. Does it really insist that you use the “raw” colour codes in CSS and PHP files? That sounds incredibly clumsy to me.

  29. #29 unreal
    August 11, 2009

    No, it does not insist on that, but when you get any pre-made wordpress templates they are made the way they are made, which may not be as you feel they should be made.

    By the way, I don’t happen to agree that hard coding colors is bad. CSS is a bit out of control as a concept and is starting to ruin HTML beacause of the almost religious belief that all things must be specified in CSS. This does not help when one is writing something as I am right now in this comment box and do not have access to the CSS.

  30. #30 Heraclides
    August 11, 2009

    unreal,

    I think the issue is in reading of Greg’s statement. To me his “let’s say you have a complicated PHP or CSS file” implied that he’d written it himself and was adding it to the site. I’m not familiar with how you use Word Press, so it was a na├»ve interpretation, but nonetheless I think it’s a fair interpretation for all that. English is annoying like that, too many ways to read a sentence.

    Hard coding is bad from a maintenance point of view, especially if the same colour is “tied” to unrelated objects, you’re better referring to the “object”. Simple example: let’s say I have a main body and side bars on a background. The main body and sidebar happen to be using the same colour at present, and it’s hard-coded. I want to change the colour of the sidebars, but not the main body. It’s much less effort if you have sidebar-colour (and separately main-body-colour) to update. But you know all this! ;-)

    That said, CSS used badly is like any programming language used badly. I suspect part of the issue is that using CSS well involves a different approach and with that a mind-shift that some people don’t get (at first).

  31. #31 Jeff Knapp
    August 11, 2009

    As a counterbalance to the Unix-Hater’s Handbook, I can recommend The Art Of Unix Programming. It’s not just a programming book, it covers a lot of the Unix philosophy and why things are as they are.

    Bingo! This is my point exactly. Unix (and Linux) – from its inception – was and still is an OS made by programmers for programmers. It never was intended as an end-user OS. Variations such as Ubuntu, I think, are making a genuine attempt at making it end-user friendly but, in my own opinion, it is not there yet. With enough work, it could be someday. But, to keep promoting it as Greg does as a friendly, end-user ready alternative to Mac or Windows – it just ain’t there yet.

    The 64-bit/32-bit Flash player problem can be very frustrating. The source of the problem, as is very common, is the fault of the plugin developer (Adobe in this case), not the operating system itself. The 64-bit version for Linux is still an alpha pre-release version.

    I was unaware that 64 bit Ubuntu was in alpha. I was just one of the choices available on the download page. I saw nothing indicating it was still in alpha.

    You are right. I saw for Linux and read of Linux Sorry about that, that was my bad. (Sheesh – even these simple html formatting tags are more hassle than I like.) But, this too, illustrates my point. I did not make the connection of running a 32bit plugin with a 64bit Firefox. That had not even occurred to me. I should not have had to be cognizant of such an issue. This should have been transparent to me, the know-nothing end user. At the very least, a more helpful error message explaining that in plain English would have made a huge difference; to whit, “Error: You are trying to install a version of a plug-in (Adobe Flash Player) that is incompatible with this version of Firefox. You need to install the ’64 bit’ version instead of this ’32 bit’ version.” But all I got was a terse error that was undecipherable to me. If I had known the lingo, I would have seen that, in a very terse way, was informing me of this. But, I did not understand the lingo. Which is the point I am trying to make. Again, I use the Mac as an example of an environment that I run into such issues much less frequently.

    Yes, the average user needs much more hand-holding than power users such as you guys (or even me). Most of us are not code oriented. We are not coders, scripters, or programmers. We do not thing that way. Until the Linux community really understands this and fully addresses this (as Apple tries to do), in my view, Linux will remain a niche OS for power users who enjoy tinkering around, modifying, and having the power over the system that a command line gives you – but only for that user.

    In my experience Grandma do not have that much trouble with command lines. Some people really have more trouble with screwy marketing-driven GUI smoke and mirrors. Just because something is a GUI does not make it better.

    I am using “grandma” as a metaphor for a very technically unsavy, end user who knows nothing and does not want to have to learn anything about what goes on under the hood. They just want to turn it on, get their email, surf the web, print out a letter perhaps, etc. Or, in my case, the CG/VFX artist who just wants to be creative and productive on a powerful system that simply works – someone who is very good at the art, and loves the huge capability and palette CG software gives me to be creative with; someone who is very visually oriented and, frankly, has the memory and left-brain capacity for codes, commands, and scripting of a hammer and quickly gets lost and frustrated without visual feedback.

    I do agree though that a poorly designed GUI is every bit as bad as dealing with any command line can be. There is no doubt about that. I have seen many an example of really bad GUI design. However, when it is done well, it makes all the difference in the world. A well designed GUI will trump any command line every time in my view. Windows is a good example of bad GUI design, the Mac OS X is an example of good GUI design. Some of the differences are subtle but, it is those subtleties that often make all difference in the world. Good GUI design is a fine are as well as a science. It makes all the difference in the world for the usability and, especially, accessibility of a given app. Very few developers truly understand this.

    My whole argument comes down to simply this: is Linux up to the task of being a truly right-brained friendly OS for those of us who want a point-and-click, visual environment where the command line is never necessary? No, it is not there yet. Further, the Linux “power users” who do enjoy working with code and commands tend to scoff at the rest of us as whiners who need hand-holding. As long as that attitude persists, Linux probably never will get there.

    I speak up here because, Greg, who loves Linux and is very comfortable coding, scripting, and working with the command line seems to think that that is no big deal and that Linux is great for us “hand-hold needing” end users and promotes it as such. I am simply countering that with, “No, Linux is good, superior in some ways, but not quite ready for prime time yet.”

    Greg, if you think I am being a troll, then ban me. I don’t think I am. I feel I am making valid points and arguing them honestly.

  32. #32 sampson
    August 11, 2009

    The command line is great. It might even be useful to the greater bulk of computer users IF the elites would devote a bit of effort into making it user friendly. But they won’t. The elites have no interest in these millions of users.

    The elites devote lots of effort into development environments, for example, as it serves their self interest. If a fraction of the effort went into a shell that included a context-sensitive help and examples of how commands are used, well everybody would be using the CLI – and then where would you all be?

  33. #33 Ray Ingles
    August 12, 2009

    Knapp: Two things. The first use of Unix was typesetting for secretaries. It was too an end-user-oriented OS. The expectations of end-users have changed, that’s all… and Linux is meeting those changed expectations.

    The other problem is that you’re assuming any OS today is really “grandma ready”. That’s just not the case. For Windows or Linux certainly, and Macs only get away with it – most of the time – by restricting the available hardware and software, and charging more to pay for some extra development.

    Normal end-users of Windows cannot and do not install or maintain their systems. They get their child or friend or neighbor who’s “good with computers” to do it. (For our family reunions, my wife got me a t-shirt that says, “No, I Will Not Fix Your Computer.”)

    I moved my elderly parents over to Ubuntu from Windows a couple years ago, and they’ve had no problems. They’d already been using Firefox & Thunderbird, so the only thing they remarked on was that the screensavers were better. I now don’t have to worry about viruses and crap, and I don’t spend an hour every time I visit fixing stuff that broke. I just run the update utility and get the latest security and bugfixes.

  34. #34 Jeff Knapp
    August 12, 2009

    Knapp: Two things. The first use of Unix was typesetting for secretaries. It was too an end-user-oriented OS. The expectations of end-users have changed, that’s all… and Linux is meeting those changed expectations.

    Oh yeah. I know those old typesetting systems all too well. Talk about a nightmare of non-visual feedback. All of those arcane tags and codes and then not seeing your results until you got your gallies back from the typesetter. Those systems were the epitome of user-hostile design. They worked, sure, but they were a nightmare to learn and took considerable skill and training to get good results out of them. They were the reason Adobe invented PostScript and desktop publishing so quickly took over publishing world.

    The other problem is that you’re assuming any OS today is really “grandma ready”. That’s just not the case. For Windows or Linux certainly,

    I never claimed Windows was “grandma ready.” In fact, I stated specifically that it is not. Windows is a nightmare of inconsistent GUI design, poor implementation not to mention all of the issues with crapware.

    and Macs only get away with it – most of the time – by restricting the available hardware and software, and charging more to pay for some extra development.

    And that is precisely what makes all of the difference in the world – that “extra development.” (Price has nothing to do with discussion btw). It is the extra time and effort spent honing and refining of OS X and its GUI that makes the difference between “good enough” and “insanely great.” This is true in all aspects of design whether it be cars, music players, or a magazine layout. The iPod and iPhone are the successes they are in large part because of that “extra development” – extra effort and time that went into getting the details right to make the end user experience the great one that it is with those products. When you buy a BMW or Merc vs. a Pontiac or even a Honda or Toyota over a Chevy – part of what makes those cars better is the extra effort put into sweating the details.

    And, actually, Apple restricts the OS to their own hardware as part of ensuring that that user experience is as good as it is. But that is just the PC itself. When it comes to third-party add-ons, that field is wide open. However, if a developer of a scanner (for example) wants to successfully sell it into the Mac market, they better make sure that they too sweat the details and get the user experience right. What is “good enough” for the Windows market is too often, unacceptable to us Mac users. We have higher expectations because, frankly, we are used to it.

  35. #35 Ari
    October 22, 2010

    I think you missed the real strength of a command line: it’s not about the “one-off” discrete tasks, where I’d agree with grandma that a GUI is easier to use.

    The power of a command line comes in the ability to string together tasks into a larger system. You can pipe commands to each other to create more complex behaviors. With GUIs, each tool functions autonomously and isn’t easily connected with the other tools in your toolkit.

    That’s the primary strength of a command line, and for me that’s the main reason I put up with its annoyances. It’s like with GUIs you are given easy to use words, but with a command line you can actually build together your words to form original sentences.