J
Jarret W. Buse
Guest
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:
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.
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.