...
- The command name – any built-in Linux/Unix commands, utilities that performs a specific function
- or the name of a 3rd party program or user-written script
- One or more (optional) options, usually noted with a leading dash ( - ) or double-dash ( -- ).
- options affect how a command performs its processing
- One or more command-line arguments, which are often (but not always) file names
- arguments specify what data the command works on
The shell executes its REPL when it sees a linefeed (a.k.a newline), which happens when you press Enter after typing the command.
...
- In the Terminal, type in the command name then the --help long option (e.g. ls --help)
- Works for most Linux commands
- 3rd party tools may use -h or -? or even /? instead
- May produce a lot of output, so you may need to scroll up quite a bit or pipe the output to a pager
- e.g. ls --help | more; type Ctrl-c or q to quit or space for the next "page"
- e.g. ls --help | more; type Ctrl-c or q to quit or space for the next "page"
- Works for most Linux commands
- Use the built-in manual system (e.g. type man ls)
- This system uses the less pager (space advances the output by one screen/"page"; typing q exits will quit/exit the display)
- Ask the Google, e.g. search for ls man pageCan ( can be easier to read)
- or ask ChatGPT or other chatbot
- Consult our Intro Unix: Some Linux commands wiki page
- It lists many useful Linux commands along with some of their commonly used options
...
Literal characters and metacharacters
In the bash shell, and in most tools and programming environment, there are two kinds of input:
...
- e.g. alphanumeric characters A-Z, a-z, 0-9
...
- e.g. the Enter key that ends the current line
There are many metacharacters in bash: # \ $ | ~ [ ] " ` ' { } to name a few.
We'll be emphasizing the different metacharacters and their usages – which can depend on the context where they're used – both in the bash command line and in commands/programs called from bash.
More at:
Command line history and editing
Sometimes you want to repeat a command you've entered before, possibly with some changes.
- The built-in history command lists the commands you've entered, each with a number.
- You can re-execute any command in the history by typing an exclamation point ( ! ) then the number
- e.g. !15 re-executes the 15th command in your history.
- Only commands in your current bash session are in the history, but you can always save them for future reference, e.g. history > ~/history.2024-11-08.
- Use Up arrow to retrieve any of the last 50+ commands you've typed, going backwards through your history.
- You can then edit the retrieved line, and hit Enter (even in the middle of the command), and the shell will use that command.
- The Down arrow "scrolls" forward from where you are in the command history.
For how to edit text on the command line, see: Intro Unix: The Bash shell and commands: Command line history and editing
Tab key completion
Hitting Tab when entering command line text invokes shell completion, instructing the shell to try to guess what you're doing and finish the typing for you. It's almost magic!
On most modern Linux shells you use Tab completion by pressing:
- single Tab – completes file or directory name up to any ambiguous part
- if nothing shows up, there is no unambiguous match
- Tab twice – display all possible completions
- you then decide where to go next
Let's have some fun with our friend the Tab key. Follow along if you can, as we use the Tab key to see the /stor/work/CBRS_unix/fastq path.
...
| language | bash |
|---|
...
Command line history and editing
Sometimes you want to repeat a command you've entered before, possibly with some changes.
- The built-in history command lists the commands you've entered, each with a number.
- You can re-execute any command in the history by typing an exclamation point ( ! ) then the number
- e.g. !15 re-executes the 15th command in your history.
- Only commands in your current bash session are in the history, but you can always save them for future reference, e.g. history > ~/history.2025-04-25.
- Use Up arrow to retrieve any of the last 50+ commands you've typed, going backwards through your history.
- You can then edit the retrieved line, and hit Enter (even in the middle of the command), and the shell will use that command.
- The Down arrow "scrolls" forward from where you are in the command history.
To affect the cursor (small thick bar on the command line) that marks where you are on the command line.
- Right arrow and Left arrow move the cursor forward or backward on the current command line.
- Use Ctrl-a to jump the cursor to the beginning of the line.
- Use Ctrl-e to jump the cursor to the end of the line.
- Arrow keys are also modified by Ctrl- (Windows) or Option- (Mac)
- Ctrl-right-arrow (Windows) or Option-right-arrow (Mac) will skip by "words" forward
- Ctrl-left-arrow (Windows) or Option-left-arrow (Mac) will skip by "words" backward
Once the cursor is positioned where you want it:
- Just type in any additional text you want
- To delete text before the cursor, use:
- Ctrl-h or
- Backspace key on Windows
- Delete key on Mac
- Ctrl-h or
- To delete text after the cursor, use:
- Ctrl-d or
- Delete key on Windows
- Function-Delete keys on Macintosh
- Ctrl-d or
- Use Ctrl-k (kill) to delete everything on the line after the cursor
For more on how to edit text on the command line, see: Intro Unix: The Bash shell and commands: Command line history and editing
Tab key completion
Hitting Tab when entering command line text invokes shell completion, instructing the shell to try to guess what you're doing and finish the typing for you. It's almost magic!
On most modern Linux shells you use Tab completion by pressing:
- single Tab – completes file or directory name up to any ambiguous part
- if nothing shows up, there is no unambiguous match
- Tab twice – display all possible completions
- you then decide where to go next
Let's have some fun with our friend the Tab key. Follow along if you can, as we use the Tab key to see the /stor/work/CBRS_unix/fastq path.
| Code Block | ||
|---|---|---|
| ||
ls /st # press Tab key again - expands to /stor/work/, againwhich the only match ls /stor/work/C # press Tab once - nothing# happens because thereis arethe multipleonly matchesmatch ls /stor/work/Cw # press Tab a 2nd time# -press allTab matchingkey directoriesagain: listedexpands lsto /stor/work/CB, # press Tab key - expands to /stor/work/CBRS_unix ls /stor/work/CBRS_unix # press Tab twice toagain seethe allonly completionsmatch ls /stor/work/CBRS_unix/fC # press Tab once - expandsyou to /stor/work/CBRS_unix/fastq |
Tab key completion also works on commands! Type "bowtie" and Tab twice to see all the programs in the bowtie2 and bowtie tool suites.
Basic text manipulation
Standard streams and piping
A key to text manipulation is understanding Unix streams, which represent flows of characters. Every Unix program has three "built-in" streams: standard input, standard output and standard error.
Most programs/commands read input data from some source, then write output to some destination. A data source can be a file, but can also be standard input. Similarly, a data destination can be a file but can also be a stream such as standard output.
The power of the Linux command line is due in no small part to the power of piping. The pipe operator ( | ) connects one program's standard output to the next program's standard input.
The key to the power of piping is that most Unix commands can accept input from standard input instead of from files. So, for example, these two expressions appear equivalent:
| Code Block | ||
|---|---|---|
| ||
more jabberwocky.txt
cat jabberwocky.txt | more |
The main differences between these two commands:
- In more jaberwocky.txt, it is the more command that reads the file and performs its operations
- displays some data on standard output, waits for a space on standard input, repeat until no more file data
- since more is reading the file, it can display progress information about how much data has been read
- In cat jabberwocky.txt | more, the cat program reads the file data and writes it to its standard output.
- the pipe operator ( | ) then connects the standard output from cat to standard input of the more command
- the more command then reads its input from standard input, instead of from a file
- and causes the cat program to block – stop writing data to its standard output until requested
- more displays some data on standard output, waits for a space on standard input, then requests more input
- repeat until no more data from cat.
- since the data coming in to more is from an anonymous pipe, more cannot display progress information
More at: Intro Unix: Viewing text in files: Standard streams and piping
echo, head, tail, cat -n, wc
The head and tail commands can be used to view/extract specific parts of large files.
- With no options, head shows the first 10 lines of its input and tail shows the last 10 lines.
- You can use the -n option to specify how many lines to view, or just put the number you want after a dash (e.g. head -5 for 5 lines or head -1 for 1 line).
- To start viewing lines at a particular line number, use tail and put a plus sign (+) in front of the number (with or without the -n option).
- The cat -n option adds line numbers to the text it displays, which can help orient you when dealing with large files
Use the wc (word count) command to count text lines (wc -l) or characters (wc -c).
echo is the bash command to output text.
- echo -e says to enable interpretation of backslash escapes
- so, for example, \n is interpreted as a linefeed, and \t as a tab character
- echo -n says don't output the trailing newline (linefeed) character
Examples:
| Code Block | ||
|---|---|---|
| ||
head -n 5 haiku.txthear a "bell" sound, # and nothing is displayed because # there are multiple matches ls /stor/work/C # press Tab a 2nd time - all matching # entries are listed ls /stor/work/CB # press Tab key - expands to # /stor/work/CBRS_unix ls /stor/work/CBRS_unix/ # press Tab twice to see all completions ls /stor/work/CBRS_unix/f # press Tab once - expands to # /stor/work/CBRS_unix/fastq |
Tab key completion also works on commands! Type "bowtie" and Tab twice to see all the programs in the bowtie2 and bowtie tool suites.
Multiple commands/lines
Like everything in Unix, the command line has similarities to a text file. And in Unix, all text file "lines" are terminated by a linefeed character (\n, also called a newline).
| Expand | ||
|---|---|---|
| ||
Note: The Unix linefeed (\n) line delimiter is different from Windows, where the default line ending is carriage-return + linefeed (\r\n), and some Mac text editors that just use a carriage return (\r). |
The shell executes command line input when it sees a linefeed, which happens when you press Enter after entering the command. But you can enter more than one command on a single line – just separate the commands with a semi-colon ( ; ).
| Code Block | ||||
|---|---|---|---|---|
| ||||
ls -l haiku.txt; cat haiku.txt |
You can also split a single command across multiple lines by adding a backslash ( \ ) at the end of the line you want to continue, before pressing Enter. Just make sure there are no characters after the backslash.
| Code Block | ||||
|---|---|---|---|---|
| ||||
student01@gsafcomp01:~$ ls haiku.txt \
> mobydick.txt |
The shell indicates that it is not done with command-line input by displaying a greater than sign ( > ). You can just enter more text then Enter when done. At any time during command input you can press Ctrl-c to get back to the command prompt. This is true whether you're entering a single command line prompt or at a > continuation.
For more information, see: Intro Unix: About command line input
Literal characters and metacharacters
In the bash shell, and in most tools and programming environment, there are two kinds of input:
- literal characters, that just represent (and print as) themselves
- e.g. alphanumeric characters A-Z, a-z, 0-9
- metacharacters- these are special characters that are associated with an operation in the environment
- e.g. the Enter key that ends the current line
There are many metacharacters in bash: # \ $ | ~ [ ] " ` ' { } to name a few.
We'll be emphasizing the different metacharacters and their usages – which can depend on the context where they're used – both in the bash command line and in commands/programs called from bash.
More at:
Basic text manipulation
Standard streams and piping
A key to text manipulation is understanding Unix streams, which represent flows of characters. Every Unix program has three "built-in" streams: standard input, standard output and standard error.
Most programs/commands read input data from some source, then write output to some destination.
- A data source can be a file, but can also be the standard input stream.
- Similarly, a data destination can be a file but can also be a stream such as standard output.
The pipe operator ( | ) connects one program's standard output to the next program's standard input. The power of the Linux command line is due in no small part to the power of piping.
The key to the power of piping is that most Unix commands can accept input from standard input instead of from files. So, for example, these two expressions appear equivalent:
| Code Block | ||
|---|---|---|
| ||
more jabberwocky.txt
cat jabberwocky.txt | more |
The main differences between these two commands:
- In more jaberwocky.txt, it is more that reads the file and performs its operations
- displays some data on standard output, waits for a space on standard input, repeat until no more file data
- since more is reading the file, it can display progress information about how much data has been read
- In cat jabberwocky.txt | more, cat reads file data and writes it to its standard output.
- the pipe operator ( | ) connects cat's standard output to more's standard input
- the more command reads its input from standard input, instead of from a file
- and causes the cat program to block – stop writing data to its standard output – until requested
- more displays some data on standard output, waits for a space on standard input, then requests more input; repeat until no more data from cat.
- since data coming in to more is from an anonymous pipe, more cannot display progress information
More at: Intro Unix: Viewing text in files: Standard streams and piping
echo, head, tail, cat -n, wc
The head and tail commands can be used to view/extract specific parts of large files.
- With no options, head shows the first 10 lines of its input and tail shows the last 10 lines.
- You can use the -n option to specify how many lines to view, or just put the number you want after a dash (e.g. head -5 for 5 lines or head -1 for 1 line).
- To start viewing lines at a particular line number, use tail and put a plus sign (+) in front of the number (with or without the -n option).
- The cat -n option adds line numbers to the text it displays, which can help orient you when dealing with large files (head and tail do not have options to show line numbers)
Use the wc (word count) command to count text lines (wc -l) or characters (wc -c).
echo is the bash command to output text.
- echo -e says to enable interpretation of backslash escapes
- so, for example, \n is interpreted as a linefeed, and \t as a tab character
- echo -n says don't output the trailing newline (linefeed) character
Examples:
| Code Block | ||
|---|---|---|
| ||
head -n 5 haiku.txt # display the 1st 5 lines of # "haiku.txt" cat -n haiku.txt # display "haiku.txt" contents # with line numbers cat -n haiku.txt | tail -n 7 # display the last 7 lines of # "haiku.txt" cat -n haiku.txt | tail -n +7 # display text in "haiku.txt" # starting at line 7 cat -n haiku.txt | tail +5 | head -3 # display the middle stanza of # "haiku.txt" (lines 5-7) wc -l haiku.txt # count lines in "haiku.txt" file cat haiku.txt | wc -l # use wc -l to count lines of # piped-in text echo 'Hello world!' | wc -c # count characters output by echo, # display including the 1sttrailing 5newline linesecho of "haiku.txt" cat -n haiku.txt-n 'Hello world' ! wc -c # count characters output by echo, # display "haiku.txt" contents with line numbers cat -n haiku.txt | tail -n 7 # without the # display the last 7 lines of "haiku.txt" cat -n haiku.txt | tail -n +7 # display text in "haiku.txt" starting at line 7 cat -n haiku.txt | tail -n +5 | head -3 # display the middle stanza of "haiku.txt" wc -l haiku.txt # count lines in "haiku.txt" file cat haiku.txt | wc -l # use wc -l to count lines of piped-in text echo 'Hello world!' | wc -c # count characters output by echo, including the trailing newline echo -n 'Hello world' ! wc -c # count characters output by echo, without the trailing newline echo -e "aa\nbb\ncc"trailing newline |
More at:
- Intro Unix: Viewing text in files: head and tail
- Intro Unix: Viewing text in files: Text lines and the terminal
- Intro Unix: Writing text: echo - the bash print function
basic grep
The word grep stands for general regular expression parser.
In Unix, the grep program performs regular-expression text searching, and displays lines where the pattern text is found.
Basic usage: grep <pattern> [file] where <pattern> describes what to search for. grep can also take its input on standard input.
There are many grep regular expression metacharacters that control how the search is performed. We'll see more in Part 4: Advanced text manipulation, and at the grep command.
- C-i will perform a case-insensitive search
- grep -n will display line numbers where the pattern was matched
| Tip |
|---|
Because grep's metacharacters are different from metacharacters in bash, it is always a good idea to enclose the <pattern> in single quotes so that the shell treats it as literal text and passes it through as-is to grep. |
More at Intro Unix: Introducing grep
What is text?
So what exactly is text? Inside of files, text isn't characters at all – it is all numbers (0's and 1's), because that's all computers know.
On standard Unix systems, each text character is stored as one byte – eight binary bits – in a format called ASCII (American Standard Code for Information Interchange). Eight bits can store 2^8 = 256 values, numbered 0 - 255. In its original form values 0 - 127 were used for standard ASCII characters. Now values 128 - 255 comprise an Extended set. See https://www.asciitable.com/
The non-printable ASCII characters we care most about are:
- Tab (decimal 9, hexadecimal 0x9, octal 0o011)
- backslash escape: \t
- Linefeed/Newline (decimal 10, hexadecimal 0xA, octal 0o012)
- backslash escape: \n
- Carriage Return (decimal 13, hexadecimal 0xD, octal 0o015)
- backslash escape: \r
- backslash escape: \r
| Code Block | ||
|---|---|---|
| ||
# display 2 lines of text using \n for newline and \t for Tab echo -e "aa z\nbb\tcc" # use the hexdump alias to view the hex values for the alphabetic # outputand 3special linescharacters ofecho text-e using"aa z\n to represent newlinesnbb\tcc" | hexdump |
More at:
- Intro Unix: Viewing text in files: head and tail
- Intro Unix: Viewing text in files: Text lines and the terminal
- Intro Unix: Writing text: echo - the bash print functionWhat is text?
- Decimal and Hexadecimal
Other shell concepts
Environment variables
...
An environment variable can be referenced by putting the dollar sign ( $ ) metacharacter in front of the variable name (e.g $varname) or the slightly longer syntax: ${varname}.
Examples:
| Code Block | ||
|---|---|---|
| ||
foo="My USER name is $USER"; echo $foo # The variable "$USER" is evaluated and its value substituted
foo="My USER name is ${USER}; echo $foo # Same as above using longer evaluation syntax
# Undefined environment variables just appear as empty text
bar='chess'; echo "Today's game is: $bar"
unset bar; echo "Today's game is: $bar"
# Evaluating an environment variable that contains an underscore
# may need to use the longer evaluation syntax, if the literal text
# before or after it is an underscore.
my_var="middle"
echo "File name is: foo_${my_var}_bar.txt"
|
Your built-in environment variables (e.g. $USER, $MY_GROUP, $PATH) and their values can be viewed with the env command.
More at: Intro Unix: Writing text: Environment variables
Quoting in the shell
When the shell processes a command line, it first parses the text into tokens ("words"), which are groups of characters separated by whitespace (one or more space characters). Quoting affects how this parsing happens, including how metacharacters are treated and how text is grouped.
There are three types of quoting in the shell:
- single quoting (e.g. 'some text') – serves two purposes
- it groups together all text inside the quotes into a single token
- it tells the shell not to "look inside" the quotes to perform any evaluation
- all metacharacters inside the single quotes are ignored
- in particular, any environment variables in single-quoted text are not evaluated
- double quoting (e.g. "some text") – also serves two purposes
- it groups together all text inside the quotes into a single token
- it allows environment variable evaluation, but inhibits some metacharcters
- e.g. asterisk ( * ) pathname globbing and some other metacharacters
- e.g. asterisk ( * ) pathname globbing and some other metacharacters
- double quoting also preserves any special characters present in the text
- e.g. newlines (\n) or Tabs (\t)
- backtick quoting (e.g. `date`)
- evaluates the expression inside the backtick marks ( ` )
- the standard output of the expression replaces the text inside the backtick marks ( ` )
- note that the syntax $(<expression>) is equivalent to `<expression>`
Note that the quote characters themselves ( ' " ` ) are metacharacters that tell the shell to "start a quoting process" then "end a quoting process" when the matching quote is found. Since they are part of the processing, the enclosing quotes are not included in the output.
| Tip |
|---|
Always use single ( ' ) or double ( " ) quotes when you define an environment variable whose value contains spaces so that the shell sees the quoted text as one item. |
Single vs double quotes examples:
...
| language | bash |
|---|
...
of the variable name (e.g $varname) or the slightly longer syntax: ${varname}.
Examples:
| Code Block | ||
|---|---|---|
| ||
# The variable "$USER" is evaluated and its value substituted
foo="My USER name is $USER"; echo $foo
# Same as above using longer evaluation syntax
foo="My USER name is ${USER}; echo $foo
# Undefined environment variables just appear as empty text
bar='chess'; echo "Today's game is: $bar"
unset bar; echo "Today's game is: $bar"
# Evaluating an environment variable that contains an underscore
# may need to use the longer evaluation syntax, if the literal text
# before or after it is an underscore.
my_var="middle"
echo "File name is: foo_${my_var}_bar.txt"
|
Your built-in environment variables (e.g. $USER, $MY_GROUP, $PATH) and their values can be viewed with the env command.
More at: Intro Unix: Writing text: Environment variables
Quoting in the shell
When the shell processes a command line, it first parses the text into tokens ("words"), which are groups of characters separated by whitespace (one or more space characters). Quoting affects how this parsing happens, including how metacharacters are treated and how text is grouped.
There are three types of quoting in the shell:
- single quoting (e.g. 'some text') – serves two purposes
- it groups together all text inside the quotes into a single token
- it tells the shell not to "look inside" the quotes to perform any evaluation
- all metacharacters inside the single quotes are ignored
- in particular, any environment variables in single-quoted text are not evaluated
- single quoting preserves any whitespace present in the text (spaces or newlines)
- double quoting (e.g. "some text") – also serves two purposes
- it groups together all text inside the quotes into a single token
- it allows environment variable evaluation, but inhibits some metacharcters
- e.g. asterisk ( * ) pathname globbing and some other metacharacters
- e.g. asterisk ( * ) pathname globbing and some other metacharacters
- double quoting also preserves whitespace in the text
- e.g. spaces, newlines (\n) , and Tabs (\t)
- backtick quoting (e.g. `date`)
- evaluates the expression inside the backtick marks ( ` )
- the standard output of the expression replaces the text inside the backtick marks ( ` )
- note that the syntax $(<expression>) is equivalent to `<expression>`
Note that the quote characters themselves ( ' " ` ) are metacharacters that tell the shell to "start a quoting process" then "end a quoting process" when the matching quote is found. Since they are part of the processing, the enclosing quotes are not included in the output.
| Tip |
|---|
Always use single ( ' ) or double ( " ) quotes when you define an environment variable whose value contains spaces so that the shell sees the quoted text as one item. |
Examples:
| Code Block | ||
|---|---|---|
| ||
echo "My Unix group is $MY_GROUP" # The text "$MY_GROUP" is evaluated
# and its value substituted
echo 'My Unix group is $MY_GROUP' # The text "$MY_GROUP" is left as-is
foo="My USER name is $USER"; echo $foo # The text "$USER" is evaluated
# and its value substituted
foo='My USER name is $USER'; echo $foo # The text "$USER" is left as-is
FOO="Hello world!"
echo "The value of variable 'FOO' is \"$FOO\"" # Escape the double quotes
# inside double quotes
# Same output - the shell removes whitespace
echo Hello world!; echo Hello world!
# Echo a multi-line text variable without quotes, and the
# shell removes whitespace (here the newline)
foo='aa
bb'; echo $foo
# But enclose the multi-line variable in double quotes and whitespace
# is preserved
echo "$foo" |
| Tip |
|---|
If you see the greater than ( > ) character after pressing Enter, it can mean that your quotes are not paired, and the shell is waiting for more input to contain the missing quote of the pair (either single or double). Just use Ctrl-c to get back to the command prompt. |
...
| Code Block | ||
|---|---|---|
| ||
date # Calling the date command just displays # date/time information echo date # Here "date" is treated as a literal word, and # written to output echo `date` # The date command is evaluated and its output replaces the command today=$( date ); # replaces echothe $todaycommand # environmentAssign variablea "today" is assignedstring including today's date to variable "today" today="Today is: `date`"; echo $today # "today" is assigned a string including today's date |
More at: Intro Unix: Writing text: Quoting in the shell
...
- standard output is stream 1
- redirect standard output to a file with a the > or 1> operator
- a single > or 1> or 1> overwrites any existing data in the target file
- a double >> or 1>> appends to any existing data in the target file
- redirect standard output to a file with a the > or 1> operator
- standard error is stream 2
- redirect standard error to a file with a the 2> operator
- a single 2> overwrites any existing data in the target file
- a double 2>>
or 1>> - redirect standard error to a file with a the 2> operator
- appends to any existing data in the target file
If you want output to go to both the Terminal and a file, you can use the tee command (or tee -a to append).
...
- redirect standard error to a file with a the 2> operator
- a single 2> overwrites any existing data in the target file
- a double 2>> appends to any existing data in the target file
If you want output to go to both the Terminal and a file, you can use the tee command (or tee -a to append).
Note that the > redirection metacharacter sends its output to a file, not to another program's standard input stream as with the | pipe metacharacter. (There are some cases where redirection involves something other than a file, but that's a topic for the Advanced Bash scripting class.)
More at: Intro Unix: Writing text: Redirection
Errors, output and their streams
Any time a bash command encounters an error, diagnostic error information is written to standard error, not to standard output!
When executing commands you will want to manipulate standard output and standard error appropriately – especially for 3rd party programs.
You can see that error and output streams are different by directing one or the other to the /dev/null "global trash can"
...
| language | bash |
|---|
...
Note that the > redirection metacharacter sends its output to a file, not to another program's standard input stream as with the | pipe metacharacter. (There are some cases where redirection involves something other than a file, but that's a topic for the Advanced Bash scripting class.)
More at: Intro Unix: Writing text: Redirection
Errors, output and their streams
Any time a bash command encounters an error, diagnostic error information is written to standard error, not to standard output!
When executing commands you will want to manipulate standard output and standard error appropriately – especially for 3rd party programs.
You can see that error and output streams are different by directing one or the other to the /dev/null "global trash can"
| Code Block | ||
|---|---|---|
| ||
ls haiku.txt xxx.txt # displays both output and error text # on the Terminal ls haiku.txt xxx.txt 2>/dev/null # displays only output text on the # displays both output and error text# on the Terminal ls haiku.txt xxx.txt 2>/dev/nulltxt 1>/dev/null # displays only error text on the # displays only output text on the Terminal ls haiku.txt xxx.txt 1>/dev/null # displays only error text# on the Terminal # And this syntax (2>&1) sends both standard output to outerr.log and standard error # to the # same place as standard out. So data from both standard output and standard error # will be written to outerr.log ls haiku.txt xxx.txt 1>outerr.log 2>&1 |
...
- Understanding the tree-like structure of directories and files in the file system hierarchy
- Absolute paths start with a slash ( / ), the root of the file system hierarchy
- More at: Intro Unix: Files and File Systems: The file system hierarchy
- Absolute paths start with a slash ( / ), the root of the file system hierarchy
- Knowing how to navigate the file system using the cd (change directory) command, Tab key completion, and relative path syntax:
- use the dot ( . ) metacharacter for the current directory
- use the dot-dot ( .. ) metacharacters for the parent directory
- More at:
- Selecting multiple files using pathname wildcards (a.k.a. "globbing")
- asterisk ( * ) to match any length of characters
- brackets ( [ ] ) match any character between the brackets, including hyphen ( - ) delimited character ranges such as [A-G]
- braces ( { } ) enclose a list of comma-separated strings to match (e.g. {dog,pony})
- More at: Intro Unix: Files and File Systems: Pathname wildcards
- A basic understanding of file attributes such as
- file type (file, directory)
- owner and group
- permissions (read, write, execute) for the owner, group and everyone
- More at: Intro Unix: Files and File Systems: File attributes
- Familiarly with basic file manipulation commands (mkdir, cp, mv, rm)
