Linux+: Linux Shell 07 – Shell Commands Part 4


Jarret W. Buse

Linux+: Linux Shell 07 – Shell Commands Part 4

In the previous Shell command articles I have discussed changing directories, copying directories and files and finding files. In this article, we will cover listing files and folders.

The main syntax for the 'ls' command is:

ls parameters pattern_to_find

The “pattern to find” is a whole or partial name of files or folders, which may include wildcards. With wildcards, an asterisk (*) is used to represent one or more characters while a question mark (?) represents one character.

The list of parameters for the ls command is as follows:

  • -a (--all) - displays all files and folders, including '.' and '..'. Use without a “pattern_to_find
  • -A (--almost-all) – same as -a but no '.' and '..'. Use without a “pattern_to_find”
  • --author – shows author of file (use -l as well)
  • -b (--escape) – displays C-style escape characters
  • --block-size=SIZE – prints the size of the file in blocks of set SIZE bytes
  • -c – use with -lt to sort by modification date and time, -l to sort by name
  • -C – use column display
  • --color=when – color the output at specified time:
    • always (default)
    • never
    • auto
  • -d (--directory) – list directories and not contents, do not follow soft links. Using the -d parameter requires the use of a directory name to list. To get all directories within the current folder, use the directory name '*/'
  • -D (--dired) – display in EMAC output mode
  • -f – do not sort output or show hidden files and folders
  • -F (--classify) – each file and folder has a symbol after it to show what it is. The symbols are as follows:
    • none - regular file
    • * - executable regular file
    • / - directory
    • @ - symbolic link
    • | - FIFO
    • = - socket
    • > - door
  • --file-type – same as -F, but does not signify executable files with an asterisk (*)
  • --format=WORD – specifies format for output and its parameter equivalent as follows:
    • verbose – shows extended file and folder information (-l) (this is the letter 'l' and not the number '1'
    • long – same as verbose (-l)
    • commas – files and folders are separated by commas (-m)
    • horizontal – lists files and folders horizontally with equal spacing to allow for a table type layout (-x)
    • across – same as horizontal (-x)
    • vertical – uses a column display (-C)
    • single-column – lists in a column (-1, this is a number one)
  • -g – same as -l, but does not list owner
  • --group-directories-first – places directories before files in listing
  • -h (--human-readable) – shows file sizes in a more readable format, eg.: 1K, 3.0M, etc.
  • -H (--dereference-command-line) – follows listed soft links
  • -hide=PATTERN – do not show listings matching the “PATTERN”
  • --indicator-style=TYPE – defines the style for file indication as follows:
    • none – no indication
    • slash (-p) – adds '/' to directories
    • file-type (--file-type) – does not add asterisk (*) to executables
    • classify (-F) – see the -F parameter
  • -i (--inode) – display inode number for each file
  • -I (--ignore=PATTERN) – specifies a pattern to ignore specified files and folders
  • -k – same as “–block-size=1k
  • -l – uses a long listing format
  • -L (--derefernce) – when a soft link is found, the linked file is used and not the link itself
  • -m – fills width of screen with a comma delimited list
  • -n (--numeric-uid-gid) – same as -l, but also lists file/folder UID and GID
  • -N (--literal) – displays raw entry names
  • -o – same as -l, but without group information
  • -p – add a slash to folder names
  • -q (--hide-control-chars) – a '?' is used for non-graphic characters
  • -Q (--quote-name) – place entries within double quotes
  • -r (--reverse) – reverses sorting order
  • -R (--recursive) – list subdirectories
  • -s – shows size of files in blocks
  • -S – sorts by file size
  • --show-control-chars – show non-graphic characters
  • --si – same as -h, but uses 1,000 and not 1,024 as Kilobyte size
  • --sort=TYPE - sorts the list in a specified way
    • none (-U) – no sorting
    • extension (-X) – sort by the file extensions
    • size (-S) sort by file size
    • time (-t) – sort by time
    • version (-v) – sort by version number
  • --time=TYPE – sorts by time using specific time TYPE
    • atime (-u) – sort by access time
    • access (-u) – sort by access time
    • ctime (-c) – sort by modification time
    • status (-c) – sort by modification time
  • -t – sort list by modification time with newest first
  • -T (--tabsize=COLUMNS) - places tab stops at the specified column count and not at the default of 8
  • -u – sort by and show access time when used with -lt; show access time and sort by name with -l; with neither, sort by access time
  • -U – do not sort but use directory order
  • -w (--width=COLUMN) – assume screen width is COLUMN size
  • -x – lists entries in lines and not columns
  • -X – sort by file extensions
  • -Z (--context) – prints security context of files, only if SELinux is enabled
  • -1 - lists one file per line (this is a numeric 'one')
  • --help – displays 'ls' help information
  • --version – shows 'ls' version

Most of these are straightforward, but I will discuss the '-d' parameter since it is a unique case. Each parameter does not require a “pattern_to_find”, as listed in the syntax. Some parameters only work properly if the “pattern_to_find” is not included. However, the '-d' option requires the use of '*/' as a pattern_to_find to make it work. The command is as follows:

ls -d */

Keep in mind that the parameters can be used together as follows:

ls -X -l

Also, be aware that single lettered parameters can be joined into one. The idea is applied to the previous example:

ls -Xl

NOTE: Since many single letter parameters can be joined, be aware of the case-sensitivity of each letter.

For the certification exam, I would suggest to try each of these parameters and be comfortable with them.


  • slide.jpg
    49.4 KB · Views: 311,731



I've never realize the –F option. Thanks a lot.