Before the invention of the mouse, the command line was the only interface folks had to navigate through the directories on their computer and launch programs (among other things). A mouse and a graphical user interface (a.k.a., a "GUI") makes doing such things more intuitive, but the command line console still has its own set of advantages: it's simple (i.e., it has a low overhead in terms of memory and processing power needed to run); it's flexible, it's fast, and it's very powerful (i.e., you can accomplish a lot with just a few typed commands).
In Windows 7, there are two different versions of the command line that you can use -- with one being definitely better than the other. The old MS-DOS based command line can be started by going to the start menu, typing command
in the run/search text field, and hitting return. This, however, is a legacy application and rife with shortcomings. Microsoft realized this, and in 2006 released Windows Powershell, a unix-inspired command line application with much greater functionality. To launch powershell, again go to the start menu, but this time type powershell
and hit return.
Once launched, you should see something like the following:
In OS X+ on a Mac, to gain access to the command line you will want to launch the "Terminal" application. There are a couple of ways to do this -- one is to simply hold down the ⌘-key and hit the space bar to open Spotlight, and then type "terminal" and hit return. The result should look something like the following:
If you start typing something, the text typed will advance the flashing cursor position symbol (as marked by the small white or grey-filled rectangle above). To the left of the initial cursor position is some text called the prompt. As can be seen in the above images, the prompt can look different depending on your operating system, your current directory, the "name" of your computer, and so on... By default, however, the prompt will end with "$
" under Mac OS X+ and with ">
" under Windows 7 Powershell. In case you are curious, Unix machines also use the "$
" symbol by default at the end of their prompt.
The command line prompts used in each of these environments can be customized, if desired. If this interests you, a simple google search on the subject should get you started -- but we won't go into that here, lest our discussion drift away from the absolute bare essentials of command line access and basic navigation. For simplicity's sake, the remainder of the examples shown on this page, will use a "$
" with no preceding text as the prompt...
pwd
)Suppose you are browsing through the folders/directories of your computer by opening and closing various windows. One of those windows will be the active window (often it's border is shown in color), while the rest of the windows will be sitting in the background (often, their border has been slightly "greyed out"). If you perform any actions (for example -- copying or pasting files), you know that the results are typically tied to the aforementioned active window. To do anything with regard to the other windows, one has to make them active first (typically, by simply clicking on them somewhere). The command line works in a similar way. One directory, called the working directory can be easily affected with commands typed into the command line, while others require some additional work first. To find out what your current working directory is, simply type at the prompt pwd
(which is short for "print working directory"), and you should see something similar to the below.
$ pwd /Users/joe_userThis means that you are currently working in the "joe_user" directory, which is itself inside the "Users" directory. If you are on a Windows machine, you may notice this "path" to the working directory gets printed in a slightly different way. The above path, for example, might show up as
C:\Users\joe_user
. Two things should draw your attention. First, in Windows a path to a directory starts with a drive letter followed by a colon (i.e., C:
), indicating on which drive the directory can be found. Second, the slashes that separate the directory names are reversed. Microsoft has always used the backslash "\", while Macs (and Unix) prefer the forward slash "/". There are no right or wrongs here -- just different systems behaving slightly differently.
ls
)You can see what files and directories are in a directory with the ls
command. It's simplest usage -- typing ls
at the command prompt and hitting return will produce a list of all files and directories in the working directory, in alphabetical order. Windows shows these names together with information regarding creation dates and times, file sizes, etc... while in Mac OS-X+, one needs to type ls -l
to get more than just the names of the files and directories (note, the extra "l" stands for "long form"), as can be seen in the example below:
$ ls -l total 1296 -rw-r--r--@ 1 oser staff 28002 Aug 12 13:06 oxford_logo.gif -rw-r--r--@ 1 oser staff 11747 Aug 12 13:08 math_center_banner.gif -rw-r--r--@ 1 oser staff 158840 Aug 12 13:39 mandlebrot_set.jpg drwxr-xr-x 50 oser staff 1700 Jul 3 19:15 java_programs -rw-r--r-- 1 oser staff 16 Aug 13 15:16 test.txt
$ ls Directory: C:\Users\oser\Desktop\ Mode LastWriteTime Length Name ---- ------------- ------ ---- d---- 8/13/2013 3:35 PM java_programs -a--- 4/29/2013 8:11 AM 158840 mandlebrot.gif -a--- 4/29/2013 8:13 AM 11747 math_center_banner.gif -a--- 4/29/2013 7:17 AM 28002 oxford_logo.gif -a--- 4/29/2013 6:11 AM 16 test.txt
Note, in both cases above, the current working directory has another directory inside of it called java_programs
. We know this sub-directory is a directory because of the little leading "d
" at the beginning of the corresponding row.
cd
)You can change your working directory with the cd
command. For example, assuming that your current working directory has three directories inside of it, named "college", "home", and "work". We can make the change the working directory to "college" with cd college
as the below shows:
$ pwd /Users/joe_user $ cd college $ pwd /Users/joe_user/college
If you need to change the working directory to the directory that encloses the current directory (which is called the working directory's parent directory), you can refer to that directory with two periods typed in succession (i.e., ..
). So, to continue our example from above -- if we wished to change the current working directory from college
back to joe_user
, we might do the following:
$ pwd /Users/joe_user/college $ cd .. $ pwd /Users/joe_user
To get to an even "higher" directory, we simply use the ..
symbol more than once, as shown here:
$ pwd /Users/joe_user/college $ cd ../../ $ pwd /Users
You can also change directories by providing a path to the directory in question. This directory can be either absolute or relative. To see the difference between the two, suppose the directory college
used in the example above had another directory in it called cs170
, and our current working directory was /Users/joe_user
. To change our working directory to cs170
, we might do the following:
$ pwd /Users/joe_user $ cd /Users/joe_user/college/cs170 $ pwd /Users/joe_user/college/cs170
The above is an example of using an absolute path to a directory. Often however, we can often be more efficient (i.e., type less) by using a relative path to the directory (or file) in question, like the below demonstrates:
$ pwd /Users/joe_user $ cd college/cs170 $ pwd /Users/joe_user/college/cs170
cat
commandThis command allows one to print to the screen the contents of a text file.
Example:
cat my_poem.txt
cp
commandThis command allows one to make a copy of a file or directory
Examples:
some_existing_file
in the current directory, naming the new copy new_copy
and placing it in the same directory:
cp some_existing_file new_copy
some_existing_file
in the current directory, naming the new copy newcopy
and placing it in the parent directory:
cp some_existing_file ../newcopy
some_file
that exists in the directory /Users/student00/project1/
, giving the copy with the same name and placing it in the directory /Users/student00/project2/
, presuming the current directory is /Users/student00/
:
cp /Users/student00/project1/some_file /Users/student00/project2/To do the same thing more briefly by using relative paths:
cp ./project1/some_file ./project2/
some_existing_directory
and all of its contents -- assuming some_existing_directory
resides in the current directory -- and naming the new directory new_directory
and placing it also in the current directory:
cp -r some_existing_directory new_directoryThe
cp
command doesn't copy all of the contents of a directory by default. We tell the cp
command that we want it to copy all of the contents by including the "-r" flag.
mv
commandThis command allows one to rename and/or relocate a file.
Examples:
junk
found in the current directory to the file precious
:
mv junk precious
precious
from the current directory to a directory treasure
also in the current directory:
mv precious treasure
jewel
to a directory casket
also in the current directory and rename it to amethyst
:
mv jewel casket/amethyst
bag_of_diamonds
to a directory safety_deposit
in the parent directory, while renaming it rainy_day_fund
:
mv bag_of_diamonds ../safety_deposit/rainy_day_fund
rm
commandThis command allows one to remove an existing file.
Example:
rm junk.txt
mkdir
commandThis command allows one to make a new directory of a given name.
Examples:
alice
in the current directory:
mkdir alice
bob
in the parent directory:
mkdir ../bob
rmdir
commandThis command allows one to remove an existing directory.
Example:
empty_folder
from the current directory:
rmdir empty_folder
man
commandThis command allows you to learn about any other command. The metaphor here would be looking up the command in question in the "manual". Invoking man
will bring up text detailing the command in question, citing what it does, how it and it's arguments should be called, what happens when optional flags are provided, and so on...
Example:
javac
:
man javac
nano
editornano
is a simple text editing program that will run in a terminal/console window. Note, in such a program, one obviously doesn't have the benefit of a mouse. Thus, moving the cursor around must be done with the arrow keys and other keyboard shortcuts. Copying and pasting, searching for specified text, indenting, and other operations are all handled in this way -- through the use of keyboard shortcuts.
Note: The nano editor does not come as a standard part of the windows operating system, so to use it in this environment you must install it first. (See nano for windows)
Example
myTextFile
and immediately start editing it:
nano myTextFile
Once you are in editing mode, type "Ctrl-g" to bring up the help document that details all of the keyboard shortcuts you can perform within the editor itself.
vim
editorvim
is a much more powerful text editing program that also runs in a terminal/console window. The learning curve, however, is substantially steeper. If you want to learn how to use it, this interactive tutorial is a nice gentle way to start...
Note: The vim editor does not come as a standard part of the windows operating system, so to use it in this environment you must install it first. (See vim for windows)
Example
myTextFile
and immediately start editing it:
vim myTextFileYour are strongly encouraged to read through the aforementioned tutorial (or some other tutorial on
vim
) before executing something similar to the above -- if for no other reason than learning how to exit the editor (it's not obvious)!