The listing command in UNIX and UNIX like operating System ‘ls‘ is one of the most basic and widely used utility in command-line. It is POSIX compliant utility available for GNU coreutils and BSD variants.
The ‘ls’ command can be used with a variety of options to get desired results. This article aims at deep insight of file listing command in Linux with relevant examples.
1. How will you List files from a directory?
Ans: The Linux file listing command ‘ls‘ comes to rescue here.
# ls
Alternatively, we can use ‘echo’ command to list files within a directory in association with wildcard (*).
# echo *
2. How will you list all the directories only using echo command?
# echo */
3. How will you list all the files within a directory including hidden files aka (.) dot files?
Ans: We need to use option ‘-a‘ (list hidden files) with command ‘ls‘.
# ls -a
4. How do you list all the files within a directory including hidden files, but do not list implied ‘.’ and ‘..’?
Ans: We need to use option ‘-A‘ (do not list implied . and ..) with command ‘ls‘.
# ls -A
5. How will you print the content of a directory in long format listing?
Ans: We need to use option ‘l‘ (long format) with command ‘ls‘.
# ls -l
In the above example, the output seems like.
drwxr-xr-x 5 avi tecmint 4096 Sep 30 11:31 Binary
Here, drwxr-xr-x is file permission for owner, group and world. Owner has Read(r), Write(w) and Execute(x) permission. The group to which this file belongs has Read(r) and Execute(x) permission but not Write(w) permission, same permission implies for the world that have access to this file.
- The Initial ‘d‘ means its a Directory.
- Number ‘5‘ represents Symbolic Link.
- The File Binary belongs to user avi and group tecmint.
- Sep 30 11:31 represents the date and time it was last modified.
6. You are supposed to print the content of directory in long format listing, showing hidden/dot files. How will you achieve this?
Ans: We need to use option ‘-a‘ (list hidden files) and ‘-l‘ (long listing) together with command ‘ls‘.
# ls -la
Alternatively We can use option ‘-A‘ and ‘-l‘ with ‘ls‘ command, if we do not want to list implied ‘.’ and ‘..’.
# ls -lA
7. How will you figure out the author of each file?
Ans: We need to use option ‘–author‘ along with option ‘-l‘ to print the author name of each file.
# ls --author -l
8. How will you print escape for non-graphic character?
Ans: We just need to use option ‘-b‘ to print escape for non-graphic character.
# ls -b
9. List the size of files and folders in desired scale format. How will you achieve this?
Ans: Here option ‘–block-size=scale‘ along with option ‘-l‘ needs to be used. We need to remove ‘scale’ in the example with the desired scale viz M, K, etc.
# ls --block-size=M -l # ls --block-size=K -l
10. List the files within a directory, but don’t show the backup files, i.e., those files that end with ~.
Ans: Here option ‘-B‘ (do not list implied entries ending with ~) comes to rescue.
# ls -B
11. Sort all the files within a directory by name and show associated last modification information.
Ans: We need to use option ‘-c‘ and option ‘-l‘ with command ls to fulfil the need as suggested above.
# ls -cl
12. Sort all the files within a directory by modification time and show associated information.
Ans: We need to use three options together i.e., ‘-l‘, ‘-t‘ and ‘-c‘ with command ls to sort files by modification time, newest first.
# ls -ltc
13. How will you control the output of ‘ls’ command to be colorful or no-color?
Ans: We need to use option ‘–color=parameter‘. The parameter to be used with color option are ‘auto’, ‘always’ and ‘never’ which are self explanatory.
# ls --color=never # ls --color=auto # ls --color=always
14. You are supposed to list directory entries themselves, not their contents. What will you do?
Ans: Here the option ‘-d‘ comes handy.
# ls -d
15. Create an alias for long format listing “ls -l” as “ll” and output the result to a file and not standard output.
Ans: Here in the above scenario, we need to add alias to .bashrc file and then use redirect operator to write the output to file and not standard output. We will be using editor nano.
# ls -a # nano .bashrc # ll >> ll.txt # nano ll.txt
That’s all for now. Don’t forget to provide us with your valuable feedback in the comments below. I’ll be here again with another interesting article soon. Till then stay tuned and connected.
Real Also:
Thanks for this tutorial
About `ls -d`, when is mandatory or useful? it only returns
"."
at a first glance has no sense, could you update the answer to question #14? Thanks in advanceExcuse me? What is the point of these interview questions, please? What position would I be hiring for and ask myself – “has this candidate memorized all possible options of the ls command?”. These are great questions for the geek pub quiz but not job interviews…
Under Linux what simple thing can I do to make a file not appear in a standard ls directory listing
Super awesome interview questions and answers on Linux Commands.
In-correct bit of information: on Question #5, the 2nd bullet point says that “Number ‘5‘ represents Symbolic Link.”
(a) The numeric field(2) between permission & file owner is the LINK_COUNT, but only includes direct/hard links.
(b) Symbolic links do NOT change/increment the link count for a regular file or directory.
(c) Unix/Linux allows the same exact file to have multiple names.
(d) Link_Count shows count for “How Many simultaneous hard-link Names does this File HAVE?”
(e) Rule: You are NOT allowed to add hard-links (extra names) for a Directory… just normal files and programs.
(f) For a DIR, both the “dir-name” in parent dir, and the “.” dot-name in child dir are part of Link_Count,
(e) Link count on Dirs goes UP as sub-dirs are created, since “..” entry in sub-dirs is a link pointing to parent dir.
(f) So… if you see a DIR with Link_Count above 2, you can subtract 2, and know number of child sub-dirs
(g) Thus, in Question#2 above, the Link_Count=5 means that dir “Binary” contains three sub-dirs.
show only files and not directories
ls -F |grep -v ‘/’
I do like the contents of the post, as I learned new things. But if a company was interviewing me from man pages, I’d run screaming and never look back, no matter how good the pay they’d offer. I do value my sanity, you know.
I like this site my acknowledgement increased.
@ adri, perhaps you want to say your knowledge increased!
Keep connected for more such posts :)
Question 14 is either pointless or the answer and question is wrong. Maybe the English was wrong on the question and the answer was totally wrong.
ls -d will always display ‘.’ because the current directory is always ‘.’
-d needs something after it to be useful. If the question was “List the directories but not the files in the current directory.” then the answer would be ls -d */
@ John, you reached the conclusion too soon.
The Question was to list directory entries themselves, not their contents and in all the condition the current directory is ‘.’ and hence is the output of ‘ls -d’ same in every Situation.
very useful information :)
welcome @ Hemant Sethia…
Hi!
Thanks for that deep summary!
But, concerning question 5: Doesn’t the “number 5” concern the HARD links to this filesystem object, instead of, as it is written here, the symbolic links?
Regards! Martin
I am working as linux admin in IT company, Dear Avishek Kumar you need put some more commands and regarding shell scripting Q and commands, i have no clear LVM concept on Linux, is there any helpful links..?
in last want to say ..you guys are doing very gud job and well done.
@Balkae,
Here is the complete guide to LVM Series..
https://www.tecmint.com/create-lvm-storage-in-linux/
Useful info !!! Thanks :)
Welcome Ravi
nice
Thanks!
Welcome @ selim
I learn new things in linux ls commands
Thanks you very very much and be continue and share your wonderful knowledge
Welcome @ Mayank.
AWESOME!….thank you SO much for this!….I’ve been trying to get a handle on the Command Line for a VERY LONG time!…LOL!…..I’m going to refer to this page CONSTANTLY! Please…..please…….PLEASE don’t EVER stop this page…or these tutorials!
Cheers!
Tecmint.com is pleased to know it. Keep connected Eddie G.
Tecmint’s Prolific authors team will continue it.
Linux “ls” sorts the following files like so:
.camera
Creepy
curmudgeon
.danger
DoogieHowser
dragonpooh
How to I get Linux “ls” to sort things the BSD way, like so:
.camera
.danger
Creepy
DoogieHowser
curmudgeon
dragonpooh
I much prefer the BSD “ls” method of sorting, as it does not smack of DOS, the Linux “ls” does. How does one achieve *that*?
Dear Kountess Buggywhip,
Being an author of this post, i should have responded you earlier. Your question is very genuine and interesting and i was busy researching a solution for your’s this question.
Will let you know, as soon as i have done.