Book: LPI Linux Certification in a Nutshell
Section: Chapter 10.  Exam 101 Highlighter's Index



10.1 GNU and Unix Commands (Topic 1.3)

10.1.1 Objective 1: Work Effectively on the Unix Command Line

10.1.1.1 The interactive shell and shell variables
  • A shell provides the command prompt and interprets commands.

  • A shell variable holds a value that is accessible to shell programs.

  • PATH is a shell variable that contains a listing of directories that hold executable programs.

  • Commands must be bash built-ins, found in the PATH, or explicitly defined in order to succeed.

  • When shell variables are exported, they become part of the environment.

10.1.1.2 Entering commands
  • Commands are comprised of a valid command, with or without one or more options and arguments, followed by a carriage return.

  • Interactive commands can include looping structures more often used in shell scripts.

10.1.1.3 Command history, editing, and substitution
  • Shell sessions can be viewed as a conversation. History, expansion, and editing make that dialogue more productive.

  • Commands can be reissued, modified, and edited. Examples are shown in Table 10-1.

  • Command substitution allows the result of a command to be placed into a shell variable.

Table 10-1. Shell Expansion, Editing, and Substitution Examples

History Type

Examples

Expansion

!!
!n
^string1^string2

Editing

Ctrl-P, previous line

Ctrl-K, kill to end of line

Ctrl-Y, paste (yank) text

Substitution

VAR=$(command)

10.1.1.4 Recursive execution
  • Many commands contain either a -r or -R option for recursive execution through a directory hierarchy.

  • The find command is inherently recursive, and is intended to descend through directories looking for files with certain attributes or executing commands.

10.1.2 Objective 2: Process Text Streams Using Text Processing Filters

The following programs modify or manipulate text from files and standard input:

cut [files]

Cut out selected columns or fields from one or more files.

expand files

Convert tabs to spaces in files.

fmt [files]

Format text in files to a specified width by filling lines and removing newline characters.

head [files]

Print the first few lines of files.

join file1 file2

Print a line for each pair of input lines, one each from file1 and file2, that have identical join fields.

nl [files]

Number the lines of files, which are concatenated in the output.

od [files]

Dump files in octal, hexadecimal, ASCII, and other formats.

paste files

Paste together corresponding lines of one or more files into vertical columns.

pr [file]

Convert a text file into a paginated, columnar version, with headers and page fills.

split [infile] [outfile]

Split infile into a specified number of line groups; the output will go into a succession of files of outfileaa, outfileab, and so on.

tac [file]

Print file to standard output in reverse line order.

tail [files]

Print the last few lines of one or more files.

tr [string1 [string2]]

Translate characters by mapping from string1 to the corresponding character in string2.

wc [files]

Print counts of characters, words, and lines for files.

10.1.2.1 The stream editor, sed

sed is a popular text-filtering program found on nearly every Unix system; it has the following syntax:

sed command [files]

sed -e command1 [-e command2] [files]

sed -f script [files]

Execute sed commands, or those found in script, on standard input or files.

10.1.3 Objective 3: Perform Basic File Management

  • Filesystem creation is called formatting, which prepares a disk partition for use. Linux usually uses the native ext2 (second extended) filesystem.

  • The Linux filesystem is arranged into a hierarchical structure anchored at the root directory, or /. Beneath this is a tree of directories and files.

  • Identification information for a filesystem object is stored in its inode, which holds location, modification, and security information. Filesystems are created with a finite number of inodes.

10.1.3.1 File and directory management commands

The following commands are essential for the management of files and directories:

cp file1 file2

cp files directory

Copy file1 to file2, or copy files to directory.

mkdir directories

Create one or more directories.

mv source target

Move or rename files and directories.

rm files

Delete one or more files from the filesystem. When used recursively (with the -r option), rm also removes directories.

rmdir directories

Delete directories, which must be empty.

touch files

Change the access and/or modification times of files by default to the present time.

10.1.3.2 File-naming wildcards

Wildcards (also called file globs) allow the specification of many files at once. A list of commonly used wildcards can be found in Table 10-2.

Table 10-2. File-Naming Wildcards

Wildcard

Function

*

Match zero or more characters.

? 

Match exactly one character.

[characters]

Match any single character from among characters listed between brackets

[!characters] 

Match any single character other than characters listed between brackets.

[a-z]

Match any single character from among the range of characters listed between brackets.

[!a-z]

Match any single character from among the characters not in the range listed between brackets.

{frag1, frag2, frag3, ...}

Brace expansion: create strings frag1, frag2, and frag3, etc., such that {file_one,two,three} yields file_one, file_two, and file_three.

10.1.4 Objective 4: Use Unix Streams, Pipes, and Redirects

  • A central concept for Linux and Unix systems is that everything is a file.

  • Many system devices are represented in the filesystem using a device file, such as /dev/ttyS0 for a serial port.

10.1.4.1 Standard I/O
  • The shell provides the standard I/O capability, offering three default file descriptors to running programs.

  • Standard input (stdin) is a text input stream, by default attached to the keyboard.

  • Standard output (stdout) is an output stream for normal program output.

  • Standard error (stderr) is an additional output stream meant for error messages.

10.1.4.2 Pipes and redirection
  • It is possible to tie the output of one program to the input of another. This is known as a pipe and is created by joining commands using the pipe symbol (|).

  • Pipes are a special form of redirection, which allows you to manage the origin of input streams and the destination of output streams. Redirection syntax for various shells differs slightly. See Table 10-3 for examples of common redirection operators.

Table 10-3. Common Redirection Operators

Redirection Function

Syntax for bash

Send stdout to file.

$ cmd > file
$ cmd 1> file

Send stderr to file.

$ cmd 2> file

Send both stdout and stderr to file.

$ cmd > file 2>&1

Receive stdin from fil.e

$ cmd < file

Append stdout to fil.e

$ cmd >> file
$ cmd 1>> file

Append stderr to file.

$ cmd 2>> file

Append both stdout and stderr to file.

$ cmd >> file 2>&1

Pipe stdout from cmd1 to cmd2.

$ cmd1 | cmd2

Pipe stdout and stderr from cmd1 to cmd2.

$ cmd1 2>&1 | cmd2

Pipe stdout from cmd1 to cmd2 while simultaneously writing it to file1 using tee.

$ cmd1 tee file1 | cmd2

10.1.5 Objective 5: Create, Monitor, and Kill Processes

  • Processes have:

    • A lifetime.

    • A PID.

    • A UID.

    • A GID.

    • A parent process.

    • An environment.

    • A current working directory.

10.1.5.1 Monitoring commands
ps

Generate a one-time snapshot of the current processes on standard output.

pstree

Display a hierarchical list of processes in a tree format.

top

Generate a continuous, formatted, real-time process activity display on a terminal or in a terminal window.

10.1.5.2 Signaling processes
  • Processes listen for signals sent by the kernel or users using the kill command:

kill
-sigspec [pids]

Send sigspec to pids.

Table 10-4. Common Signals

Signal

Number

Meaning

HUP

1

Hangup, reread configuration.

INT

2

Interrupt, stop running.

KILL

9

Stop immediately.

TERM

15

Terminate nicely.

TSTP

18

Stop executing, ready to continue.

10.1.5.3 Shell job control

Shells can run processes in the background, where they execute on their own, or in the foreground, attached to a terminal. Each process handled in this way is known as a job. Jobs are manipulated using job control commands:

bg [jobspec]

Place jobspec in the background as if it had been started with &.

fg [jobspec]

Place jobspec in the foreground, making it the current job.

jobs [jobspecs]

List jobspecs on standard output.

10.1.6 Objective 6: Modify Process Execution Priorities

  • A process' execution priority is managed by the kernel.

  • You can bias the execution priority by specifying a nice number in the range of -20 to +19 (default is 0).

  • Positive nice numbers reduce priority; negative nice numbers increase priority and are reserved for the superuser.

nice -adjustment [command]

Apply nice number adjustment to the process created to run command.

renice [+|-]nicenumber targets

Alter the nicenumber, and thus the scheduling priority, of one or more running target processes.

10.1.7 Objective 7: Perform Searches of Text Files Making Use of Regular Expressions

  • Regular expressions are used to match text. The term is used to describe the loosely defined text-matching language as well as the patterns themselves. A regular expression is often called a regex or a regexp.

  • Regular expressions are made up of metacharacters (with special meaning) and literals (everything that is not a metacharacter).

10.1.7.1 Position anchors

These operators match line position:

^

Match the beginning of a line.

$

Match the end of a line.

10.1.7.2 Character sets

These operators match text:

[abc]

[a-z]

Match any single character from among listed characters or from among the characters comprising a range.

[^abc]

[^a-z]

Match any single character not among listed characters or ranges.

\<word\>

Match words bounded by whitespace.

. (A single period, or dot)

Match any single character except a newline.

\

Turn off (escape) the special meaning of a metacharacter that follows.

10.1.7.3 Modifiers

These operators modify the way other operators are interpreted:

*

Match zero or more of the character that precedes it.

?

Match zero or one instance of the preceding regex.

+

Match one or more instances of the preceding regex.

\{ n,m\}

Match a range of occurrences of the single character or regex that precedes this construct.

|

Match the character or expression to the left or right of the vertical bar.