Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  • 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.

...

  1. 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"
  2. 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)
  3. Ask the Google, e.g. search for ls man pageCan ( can be easier to read)
    1. or ask ChatGPT or other chatbot
  4. 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.

...

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
  • To delete text after the cursor, use:
    • Ctrl-d or
      • Delete key on Windows
      • Function-Delete keys on Macintosh
  • 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

...

Code Block
languagebash
ls /st                     # press Tab key - expands to /stor/ which 
                           #   is the only match
ls /stor/w                 # press Tab key again: - expands to /stor/work/,
   again   the only match ls /stor/work/C            # press Tab once - nothing# happens because thereagain arethe multipleonly matchesmatch
ls /stor/work/C            # press Tab aonce 2nd- time - all matching directories listed
ls /stor/work/CB  you hear a "bell" sound,               # 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

...

   #   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
titleLine ending differences...

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
languagebash
titleMultiple command on a line
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
languagebash
titleSplit a command across multiple lines
student01@gsafcomp01:~$ ls haiku.txt \
> mobydick.txt

Notice that the shell indicates that it is not done with command-line input by displaying a greater than sign ( > ). You 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.

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

...