The ls command is used to list files and directories. While it has many options, these are the most common uses I'm aware of.
The options I use most of the time are -a ("show all") and -l ("long listing"). Put together, like this:
ls -al
this means "show a long listing of all files in the current directory". In the home directory of my Mac OS X system this results in output like this:
drwxr-xr-x 60 al al 2040 Aug 5 21:17 .
drwxrwxr-t 6 root admin 204 Jul 2 18:13 ..
-rw-r--r-- 1 al al 15364 Aug 5 20:56 .DS_Store
drwx------ 66 al al 2244 Aug 5 21:22 .Trash
-rw------- 1 al al 0 Aug 5 21:17 .Xauthority
-rw------- 1 al al 10682 Aug 6 16:39 .bash_history
-rw-r--r-- 1 al al 696 Jan 14 2007 .bashrc
-rw-r--r-- 1 al al 59 Jul 22 11:57 .profile
drwx------ 3 al al 102 Jun 15 2006 .ssh
drwxr-xr-x 6 al al 204 May 23 2006 .subversion
-rw-r--r-- 1 al al 2087 Jul 22 15:12 .vi_help
-rw-r--r-- 1 al al 218 Jul 22 14:53 .vimfoo
-rw------- 1 al al 8417 Jul 25 21:32 .viminfo
-rw-r--r-- 1 al al 218 Jul 22 14:56 .vimrc
drwx------ 46 al al 1564 Jul 20 20:35 Desktop
drwx------ 14 al al 476 May 12 20:07 Documents
drwx------ 34 al al 1156 Mar 25 10:07 Library
drwx------ 4 al al 136 Dec 28 2006 Movies
drwx------ 8 al al 272 Dec 28 2006 Music
drwx------ 109 al al 3706 Jul 18 19:54 Pictures
drwxr-xr-x 5 al al 170 Apr 1 2006 Public
drwxr-xr-x 16 al al 544 Jul 20 15:52 Sites
I've trimmed a lot of files and directories from that listing, but you get the general idea of the output.
As a practical matter, directory listings can get long some time, and when I know a directory listing is going to be long I'll automatically pipe the output of this command into the more command, like this:
ls -al | more
The more command lets me scroll through the output, which is very cool.
Other options
As a practical matter the only other way I use the ls command is like this:
ls -F
or this:
ls -FG
or this:
ls -aFG
The -F option puts slashes after directories, "*" after executables, and other nice tags. The -G option adds in color coding, which is nice. And again the -a option includes all files, including those that begin with a decimal.
Output from the ls -F command looks like this:
AlsLife/ GarageBandProjects/ Music/ WakeUp.scpt
Apps/ Library/ Pictures/ bin/
Desktop/ MYSQL_README Reference/ pg_foo/
Documents/ MagicDrawFiles/ Send Registration@ tmp/
EclipseStuff/ Movies/ Sites/ tomcat-4.1.31/
Listing other directories
If you're in your home directory (like /Users/al) you don't have to move to the /tmp directory to get a listing of that directory, you can just type:
ls /tmp
or
ls -al /tmp
and so on. Only newbies do this:
cd /tmp
ls -al
cd -
so don't do that. :)
Many more options
There are many more options, but those are the ones I use the most. If I was forced to show two more options I would show these:
ls -alR
That shows a very long listing of every file beneath your current location in the filesystem. If you did that from the root directory it would show every file on the filesystem you have privilege to see.
ls -ld somedir
That command shows a listing of a directory named "somedir". You use this when you want to see information about the directory itself, as opposed to what's in the directory. To be more clear, if you want to see a long listing of what's in a subdirectory named "somedir" you'd type this:
ls -l somedir
but if you want to see information about the "somedir" directory itself you'd type this:
ls -ld somedir
which displays something like this:
drwx------ 45 al al 1530 Aug 5 21:22 somedir
The -d option tells the ls command to just show the directory information, and not the directory contents.
Aliases
With any of these options I encourage you to create aliases so you don't have to type much. My aliases look like this:
alias l="ls -al"
alias lm="ls -al | more"
alias lf="ls -aFG"
On my Mac OS X system I keep these in the .profile file in my home directory, so they're available each time I open a new Terminal window.
Even more information
For more information on the ls command, type
man ls
on your Unix, Linux, or Mac OS X system, or click here for my online ls command man page.