I'm relatively new to programming as a whole and some tutorials have been telling me to use ls -l
to look at files in a directory and others have been saying ll
. I know that ls
is a short list, but is there a difference between the other two?

- 1,191
6 Answers
On many systems, ll
is an alias of ls -l
:
$ type ll
ll is aliased to `ls -l'
They are the same.
-
4
-
5
-
7
-
3
-
1
-
-
I usually alias
ll
tols -Ahog
on Bash. It shows long listing but without the owner and group column; it additionally shows human-readable sizes (with suffixes like K, M, etc.), hidden files and directories except.
and..
. – legends2k Nov 05 '20 at 13:02 -
-
As noted, ll
is often defined as an alias of ls -l
. In fact, ls
is often an alias itself:
$ which ls
alias ls='ls --color=auto'
/usr/bin/ls
The actual command is ls
which above is found in /usr/bin
. ll
is intended as a convenience, but you cannot rely on it being defined on all *nix systems, so it is good to know what it is really doing.

- 453
-
Great answer. I can't help by add that this is one of the reasons why relying on
ls
in automation (especially ad-hoc one-liners) is usually a bad idea. It has several options that change its output, and many ways to specify them. With different distributions choosing different defaults, it tends to lead to headaches. – ctt Jun 18 '14 at 02:30 -
I haven't seen any popular distribution to alias
ls
to anything else thanls --color=auto
. It's either that or there is no alias. – ek9 Jun 18 '14 at 07:02
Ubuntu 12.04, 14.04, 16.04, 18.04:
laike9m@laike9m1:~$ type ll
ll is aliased to `ls -alF'
-
1Also 12.04 and 16.04, but that is all I have available to test right now. – Paul Nov 05 '16 at 17:00
-
In most cases, ll
does not work in shell scripts.

- 93,103
- 40
- 240
- 233

- 5,062
-
1What happens is that typically commands like
ll
are really aliases, that aren't defined when running scripts. – vonbrand Jun 18 '14 at 07:57 -
3Some people have the alias in the .profile, and the alias is working in an interactive shell. After debugging/testing a new script, the script suddenly fails in crontab. Cron does not read the .profile. – Walter A Jun 18 '14 at 09:49
-
1This is not an answer to the question, but should be a comment instead. From my little understanding, aliases are deprecated in shell scripts. – cornflakes24 Jan 23 '16 at 20:21
-
ll
is an alias for ls -l
.
The option -l
tells the command to use a long list format. It gives back several columns, not shown when the simple ls
command is used. These columns include:
Permissions
Number of hardlinks
File owner
File group
File size
Modification
time
Filename

- 22,765

- 121
ll is actually aliased to `ls -l' If you run ll, then it will show you files in the shell then you to press Enter to see the next files (more.. option). If you run ls -l, then all files will be displayed at a time.

- 2,862
which ll
. You will probably discover thatll
is actually an alias forls -l
. – HalosGhost Jun 17 '14 at 23:04ls
any other command I put into the shell? If I typewhich ls
I getalias ls='ls --color=auto' /bin/ls
, but if I type (for example)which cd
I get/usr/bin/which: no cd in (........)
. EDIT: I tried it again withwhich mkdir
and I got/bin/mkdir
. What is the distinction between these commands that some of them are stored(?) in/usr/bin
and some are apparently not? – Jon Jun 18 '14 at 21:45$PATH
.ls
is very often aliased, so your shell reports the alias (which takes precedence over the binary) and the binary's actual location (in your case,/bin/ls
). Ifwhich
could not findcd
, then something appears terribly wrong. – HalosGhost Jun 20 '14 at 07:30cd
is a shell builtin keyword, not a program found in a filesystem. Usetype cd
andtype ls
to see what I mean. Some commands are simply overriden by shell builtins:echo
exists in/bin/echo
, but inbash
and in fact most of modern shells, a builtinecho
function is called instead (which usually has extended features).type
actually tells you which one it is. – orion Feb 04 '15 at 10:00