The Basics
The ls
, or listing, command will list all of the 'visible' files in a directory by default e.g.
[22:29] centos:~:$ ls setup.sh test_dir workspace
Adding the -l
flag will provide a long vertical listing similar to a typical GUI file explorer, showing the user and group the files belong to, the permissions for each, size and last updated time:
[22:31] centos:~:$ ls -l total 4 -rwxrwxr-x. 1 centos centos 604 May 5 17:05 setup.sh drwxrwsr-x. 2 centos root 32 Apr 29 11:23 test_dir drwxrwxr-x. 5 centos centos 52 May 13 22:18 workspace
Quick tip: Use the -h
/--human-readable
flag for 'human readable' file sizes i.e. convert them into KB/MB/GB/etc. rather than bytes.
Earlier I mentioned that by default the ls
command will only list 'visible' files. On Linux any file beginning with a dot (.) will be hidden from this listing. By appending the -a
flag it will list all of the dot files too.
[22:33] centos:~:$ ls -a . .. .bash_history .bash_logout .bash_profile .bashrc .gitconfig .pki setup.sh .ssh test_dir .tmux .vim .viminfo .vimrc .weechat workspace
Extras
There's a whole raft of arguments available to the ls
command, all of which can be found on the man
page. Here are a few that I've found helpful.
The --group-directories-first
flag: This flag will group all directories in the listing first, and then list the files, notice the difference between these two:
[22:29] centos:~:$ ls -l --group-directories-first total 4 drwxrwsr-x. 2 centos root 32 Apr 29 11:23 test_dir drwxrwxr-x. 5 centos centos 52 May 13 22:18 workspace -rwxrwxr-x. 1 centos centos 604 May 5 17:05 setup.sh [22:29] centos:~:$ ls -l total 4 -rwxrwxr-x. 1 centos centos 604 May 5 17:05 setup.sh drwxrwsr-x. 2 centos root 32 Apr 29 11:23 test_dir drwxrwxr-x. 5 centos centos 52 May 13 22:18 workspace
Creating aliases: Aliases can be really useful for defaulting some of the above arguments if you use them regularly. A number of Linux distributions will provide some default aliases using ls
e.g.
[22:22] centos:~:$ alias alias l.='ls -d .* --color=auto' alias ll='ls -l --color=auto' alias ls='ls --color=auto'
It's easy to set your own, running the following will set a temporary alias, add it to your .bashrc file to make it permanent:
alias lsd='ls --group-directories-first --color=auto -lah'
Now typing lsd
into the command line will execute the above ls
command with the listed parameters
There's a number of other arguments, too minor for their own little section, but could definitely be helpful if you want to use ls
in your shell scripts. For example the -Q
flag will quote all of the entries, which can help with files/directories with spaces in; various sorting flags (sort by modified time, created time, name etc.); different display methods (horizontally [default], long list, single column, comma separated etc.), and many more. Dig into the man
pages to find out more!
Overall a simple command, so an easy introduction to begin with.
Quick tip: You can view the basic specification of my setup in this post here.