Linux ls command FAQ: Can you share some examples of the Unix/Linux
ls command is used to list files and directories. While it has many options, I thought I'd list the most common ls command uses I'm aware of.
ls command 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. Here are a few quick notes about that 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 Linux more command, like this:
$ ls -al | more
more command lets me scroll through the ls command output, which is very cool.
As a practical matter the only other way I use the
ls command is like this:
$ ls -F
$ ls -FG
$ ls -aFG
-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/
This combination is nice because it shows a lot of information in a small area by filling the width of your screen with the data it shows. In this example, 20 files and directories are shown on five lines of screen real estate.
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
$ ls -al /tmp
and so on. Only newbies do this:
cd /tmp ls -al cd -
so don't do that. :)
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
-d option tells the
ls command to just show the directory information, and not the directory contents.
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"
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.