The Graphical User Interface (GUI) is probably right in front of you 80% of your day (not counting sleeping hours). If you use a smartphone, tablet, laptop, computer, gaming console, etc. then you have been using a GUI (pronounced goo-ee) and may not have known it. The GUI may seem like your friend. It is pretty, offering all sorts of entertaining imagery to tantalize your senses. This is the fun side of computing. There is a time and place for this distraction with the computing experience. Other reasons for using computers, are to conduct business, do research, run calculations, etc. Almost all other reasons to use a computer that do not have to do with entertainment, are done faster, more efficiently, and more effectively through what is known as the Command Line Interface (CLI). A shell is a more broad concept that contains both of these modes of interacting with data. The shell allows both GUIs and CLIs to access the Operating System (OS) files and programs. The goal of the shell is to create the best workflow possible for the intended task. When people reference “using Windows” to accomplish a goal while using one of the distributions of Microsoft Windows, they are often referencing either the Windows Shell or the visual desktop environment. If you were to ask yourself if your GUI creates the best possible workflow for your intended task, and you knew how to use the CLI with as great a degree of fidelity as you use the GUI, you would most likely say that the GUI holds you back. Some people actually do operate optimally with the GUI. It could be said that the GUI is optimal for a person in the early, most basic, learning stages of getting familiar with how a computer works. For those people, I recommend looking at the list of alternate shells or GUIs for Windows. (I personally love BlackBox (BB) with themes from DeviantArt and an active community. Check out also active fork binary BBZero, or Openbox for Linux users.) However wonderful these alternate GUI shells may be, most people would benefit greatly from learning how to ween themselves off of this addictive computing medium. Just as it can be difficult to ween children off a milk bottle or sippy cup, it can be difficult to make ourselves accustomed to using the CLI. Challenge yourself to learn your favorite OSs CLI and you will be thankful you did.
My recommendation is to use only CLI terminal environment for 6-9 months until you are fully proficient in its use. Once you have it fully committed to muscle memory, and have reflexive conceptual processing capability while using computers with the CLI, then it would be appropriate to utilize both environments for greatest effect. It does not matter all that much if you use Windows, OSX, or Linux; though I recommend Linux as this notion is accepted throughout the Linux Community. As the notion is well respected and promoted among most Linux Users, they would understand your plight if you were ardently attempting to accomplish a goal solely through the CLI and were seeking help to that effect. If you asked for help in the OSX or Windows community, you may often have to win 3 or 4 successive arguments with people before they would help you accomplish your goal in the manner you hope to achieve it in. Simply put; by and large, the Linux community supports the ideals and understands the value of learning, or accomplishing things solely with the CLI.
Professionalism When someone asks you to accomplish something with a computer, if you are able to open a terminal, click on the keyboard for a few seconds/minutes, and explain that the task is finished; you have elevated yourself in that person’s eyes as competent, knowledgeable, and professional. They will know that in the future they can rely on you to get the job done. Effectively you have just worked computing magic in their eyes. The vast majority of people will find it amazing that you can accomplish things with such confidence, skill, and timeliness. Not to mention that you will be able to accomplish things you may never have done before in a fraction of the time it would take a computer Lehman to look it up, ask for help, and implement something in a step by step infantile manner. Furthermore, in the event that you do have to look something up, get advice, and implement a procedure; you will have a MUCH deeper understanding of what you are doing, or what your helpers are attempting to convey to you as you go about accomplishing your goal. All of this reflects on your professional demeanor, attitude, and image.
Speed Typing is a must have skill for a computer user. This skill is largely being ignored as the smartphone and tablet takes over; literally leaving our electronics users without a keyboard. By this I mean a physical keyboard that is designed for two human sized hands to utilize in a proper typing manner. When a computer user reduces themselves to typing with only one finger; often their thumb, (at least they are using that evolutionary advantage) they are typing at approximately 40% their max potential speed. Compare your own speeds to see for yourself. On a more practical note pertaining directly to computer users equipped with keyboard and mouse; the user that has to take their hands off the keyboard to utilize the mouse is operating more slowly. In one study involving short time periods, the CLI user was 20% faster than the GUI user. Not only do typing skills affect your speed, but being able to operate without looking at things allows you to transcend the clumsy limitations of the physical realm and move into conceptual space. When your thoughts and actions are a result of utilizing both creative and logical capacities at the same time, you will find that you are able to solve problems that other people did not even know existed. When you achieve this state, you will expand your awareness of problems and solutions that allow you to operate at much higher speeds and participate in projects that only select few people will be able to participate in. As this somewhat unbiased article points out, you should employ the techniques that work best for you. I do beg the question however; if you have never tried to operate much more in the non-mousing way, and only ever used one method (the mousing way), then how could you know for sure which is best for you? It is worth expanding your horizons and learning a new set of skills and way of understanding ways to interface a machine you use for a significant portion of your life. You could elevate yourself to a higher state of computing. Some interesting studies on speed are the Keystroke Level Model (KLM), Goals Operators Methods and Selection (GOMS), or Model Human Processor (MHP). In a way that perhaps only I would see as associated; for years I have entertained a game notion that on certain mornings I should unclothe myself, wash, perform my morning routine, and clothe myself again with only my off hand. This exercise is both satisfying in regard to my ability to perform in the event that my good limb is injured, disabled, or removed; but also under the assumption that I derive value from being reminded of the humility that I am blessed to have full functioning capability and command of my normal resources. I observe some people in society perform tasks that make it apparent that they have disabilities. This observation reminds me that it is worth my while to retain an attitude of sympathy or empathy about their method of solving problems or accomplishing goals. I feel much the same way regarding people who do not have a more keen understanding about computers. It is worth retaining a notion of humility in entertaining even the more clumsy method of accomplishing computing goals. At least they are solving problems rather than creating them… maybe; we hope.
Knowledge There is something about using the CLI that warrants a greater understanding of the underlying programs, capabilities, and resources that you can draw on to get computing tasks done. Rather than tracing our eyes across the computer screen and clicking a mouse button to hunt and find a conclusion, a CLI user will often sit back, look up, and experience a Eureka moment followed by a flurry of motion and typing. A GUI user tends to ask a CLI user how to accomplish something when they get stuck. A CLI user tends to either research and look up a solution to mimic from someone else, write the code themselves, or possibly modify hardware to accomplish their goals. This results in faster recall, more thorough understanding, and a profound adaptability regarding a multitude of potential tasks. Not only can you know what to do before you do it, but you are also able to describe to someone else; how you have done it, how you will do it, or how one could go about doing it even if you have not done it before. Essentially what this means is that rather than asking someone else how to accomplish things all the time, or relying on them to do it for you; you can use your mind, look some things up, and develop a deeper understanding of how computers work and how you can control the computing environment in a fundamentally different level. The sort of knowledge that it takes to develop this deeper understanding of the computing environment could be described as Tacit Knowledge. On one hand, it could be said that all software that we use is a result of someone creating a solution or group of solutions to problems or desires. On another it could be said that we use software to solve problems or satisfy desires. Somewhere in that mix, someone thinks of a way to solve a problem. The person that invents a new way to solve a problem or satisfy a desire in the computer world is employing Tacit Knowledge. The person who employs software that was created by someone else, or utilizes a technique thought of by someone else is employing Explicit Knowledge skills. It could be said that a computer expert develops Tacit skills, while a Script Kiddie or novice user develops Explicit skills. Both are relevant ways to solve problems or accomplish goals… In the event that no-one has solved that problem before, or in the even that a person who has solved that same problem is not accessible for conversation or never documented their procedure for the world to see; a novice user would have no recourse and would just give up … or be forced to develop Tacit Knowledge about the computing environment. Even in the event that not a single person in the world has ever solved a particular problem before, an expert user with Tacit Knowledge of the computing environment would be able to persist and create a solution to accomplish their goal.
Retention One of the ways that humans learn how to respond to new challenges is a 3 part equation called The Power Law of Practice. It roughly states that reaction time when performing a novel task is largely determined by practice iterations that were performed in the past with closely related skills. We could say that the computing environment (either CLI or GUI) are one of the constants each conveying their own benefits. Basically this makes Practice Time very important that lends well to a concept called Automaticity. A GUI user spends the bulk of their Practice Time learning to move their mouse around and depressing the mouse key when they think they are on the right track. A CLI user can think for a moment, then type exactly what they want to do, and it just happens. The CLI user also does not need to rely on visual evidence that their result was achieved. Often GUI users are confused by activities in the CLI environment because they are waiting for visual cues to affirm that their intended result has been carried out. A CLI user is more comfortable assuming that their will has been carried out. The CLI user does not need to practice needless movements of the mouse, nor are they bound to the resulting muscle memory that allows them to get tasks done. Because the movements on the keyboard are more standardized, than the necessary movements of the mouse; the muscle memory that is required to accomplish a task is more standardized for the CLI user than for the GUI user. A GUI user is often limited to their particular instance of the graphical environment, whereas if they were to begin using someone else’s slightly customized version of the same OS they would experience a loss of speed and confidence as they have to rely on their eyes to affirm that they are in the right place and clicking on the right thing. Not only does the CLI user get to rely on a more standardized and confident set of inputs, but often the CLI user is able to accomplish a goal from anywhere within the system; or accomplish many simultaneous or normally queued tasks with rapid fire succession without the need to slow down or pause. Any person with MUD gaming experience knows the astounding number of successive commands that can be entered and carried out in a short time. I highly recommend that someone new to CLI environments download a MUD client, find a favorite MUD, and become proficient at navigating that world with text commands. If these concepts resonate with you, then you most likely have a keen understanding of the subtleties of Psychomotor Learning.
Operate Conceptually Some tools allow us to accomplish tasks on a higher level. Automation is a wonderful concept that has special meaning in the computing world. We all know it is better to automate certain tasks, but few of us get to the point where we accomplish the goal of automating as many things as we could. Some would call Linux Automation tools like Murguu macro software. Some automation tools are described by their application, like this article from Unixmen. Some are specific to the GUI environment like Sikuli or trialware AutoMate. Other automation is exclusive for the CLI environment like code test software. Some of them are CLI programs designed to automate GUI actions, like freeware AutoIt. Others are specific for internet or web-browser application such as WebRecorder. Some allow automation with both CLI and GUI interaction, like WINSCP. Some automation software is designed for more business application with computers and the internet such as Drip. For Telephone VOIP dialing automation check out free NCH software. Looking for automated SMS text software? How about paying for Client served web applications like SocialFuse? Perhaps you like the idea of automating your home or office. Basically what it comes down to is: the more you know about computers, the easier your life can become. Make Command Line Interface skills a higher priority by becoming an expert yourself, or hiring someone who already is. Higher level thinking and operating can be applied to computers and the hardware that computers can interface with to make our lives easier.
For Definition’s Sake:
A System Console is a combination of hardware and software. It is comprised of a computer, keyboard, monitor, mouse. Other inputs such as a camera can be considered part of the console if it allows you to control the computer. Examples of inventive ways to control your computer are Microsoft Kinect for XBox, Sony Playstation Move controller, or the Nintendo Wii remote. The software layer of the console is evidence that your input has been entered, and feedback about what your input has accomplished for you.
A Terminal Emulator (tty) allows the user access to a text terminal and all the computer’s applications. This includes both CLIs and GUIs. A neat concept about the tty is that it can be affecting your local machine, or any remote machine that you can gain access to. This means that you can be affecting many computers at once in a very efficient way.
Text Based User Interface is another concept that is a sort of middle-ground between GUI and CLI. A famous version of this software is often used in banking, collections, or government application. You can play around with AS400 for free. Some other things to be aware of with the AS/400 system are the languages associated with the system. Technically the AS400 is a hardware system with more emphasis on security, speed, and scalability as a server. AS400 and Report Program Generator (RPG) are actually difficult subjects to research. I presume it is because the financial systems of the world rest on the shoulders of this giant. If you were to read the wiki about RPG, you may not be able to discern that this Text Based User Interface software/hardware setup is the predominant computing force in the financial world. DB2 UDB/400 are the languages associated with this specific type of machine. Many of the underlying programs supporting these financial systems are written in COBOL. Suffice to say that knowledge about these things can make you wealthy.
A Console Application is a software program that runs on the System Console that is designed to require a text-only software interface, monitor, keyboard and the computer itself. Many of these programs are found in /bin in Linux, or C:\Windows\System32\ in Windows.
A Virtual Console is a concept that in practice looks much like Terminal Emulator, or a CLI running in a GUI environment. If you have a GUI running and you are working in only one Linux Terminal Window entering common Linux Console Application Commands, it could be said that “you are utilizing a Command Line Interface style of computing in a Linux ‘Bash‘ application window in the GUI environment.” Not many people would phrase it that way, but that is more precise terminology to express what is really going on. This particular Console Application called Bash is also known as a Unix Shell. If you have two such Bash programs open, and you are logged in to two different computers in each of those windows; it becomes more obvious what a Virtual Console is all about or why we have them. In one of your Bash Terminals, you may be running the telnet program and be executing commands on your computer in another room. In the other Bash Terminal you may be downloading, installing, or updating a program onto the computer you are currently touching, with the Advanced Package Tool (APT-get) program. If you open a third Virtual Console and run IpTraf you can begin monitoring the traffic on your network. When you have multiple of these windows open and you are performing tasks in multiple environments, Virtual Console functionality becomes incredibly valuable. You can cycle through them easily by using the Alt+F keys. This is wonderful when you find yourself operating in multiple user environments with different login requirements etc.
A Terminal Multiplexer allows you to interact with multiple Virtual Consoles in a single window. This makes it so that if you are not working in a GUI environment you can still easily have the advantage of multiple Virtual Consoles without having to cycle between them in a visual way. Many multiplexers offer functionality beyond this basic definition however. Some of them offer window re-sizing, and tiling options within a GUI, or even allowing you to complete complex functions like resume compiling over ssh after a network connection drops.
What are the Alternatives to the GUI?
Windows – (Terminal Emulators)
attachmate Reflection (formerly WRQ)
TCC/LE (formerly 4NT)
cygwin (Linux like feel)
mintty (used with cygwin)
Linux- (Command Line Shells)
Google- (Internet Command Line Shell) ** unofficial**
OSX – (Terminal Emulators)