User Tools

Site Tools


bash_cheatsheet

This is an old revision of the document!


Bash Cheatsheet

Special parameters

Source

  • $* : Positional parameters. Separated by IFS. | $1c$2c$3
  • $@ : Positional parameters. Separated by space. | $1 $2 $3
  • “$@” : Positional parameters. Separated by space. Separated words. | “$1” “$2” “$3”
  • $# : Number of positional parameters.
  • $? : Exit status of the most recently executed foreground pipeline.
  • $- : Current option flags as specified upon invocation, by the set builtin command, or those set by the shell itself (such as the -i option).
  • $$ : Process ID of the shell. In a () subshell, it expands to the process ID of the invoking shell, not the subshell.
  • $! : Process ID of the most recently executed background (asynchronous) command.
  • $0 : Name of the shell or shell script.
  • $_ : Last argument to the previous command, after expansion. (Or absolute shell pathname if first command).

Parameters expansion

Source

  • Simple usage
    • $PARAMETER
    • ${PARAMETER}
  • Indirection
    • ${!PARAMETER}
  • Case modification
    • ${PARAMETER^}
    • ${PARAMETER^^}
    • ${PARAMETER,}
    • ${PARAMETER,,}
    • ${PARAMETER~}
    • ${PARAMETER~~}
  • Variable name expansion
    • ${!PREFIX*}
    • ${!PREFIX@}
  • Substring removal (also for filename manipulation!)
    • ${PARAMETER#PATTERN}
    • ${PARAMETER##PATTERN}
    • ${PARAMETER%PATTERN}
    • ${PARAMETER%%PATTERN}
  • Search and replace
    • ${PARAMETER/PATTERN/STRING}
    • ${PARAMETER//PATTERN/STRING}
    • ${PARAMETER/PATTERN}
    • ${PARAMETER//PATTERN}
  • String length
    • ${#PARAMETER}
  • Substring expansion
    • ${PARAMETER:OFFSET}
    • ${PARAMETER:OFFSET:LENGTH}
  • Use a default value
    • ${PARAMETER:-WORD}
    • ${PARAMETER-WORD}
  • Assign a default value
    • ${PARAMETER:=WORD}
    • ${PARAMETER=WORD}
  • Use an alternate value
    • ${PARAMETER:+WORD}
    • ${PARAMETER+WORD}
  • Display error if null or unset
    • ${PARAMETER:?WORD}
    • ${PARAMETER?WORD}

Mastering history

Source

  • !! : expands to the last command and all arguments
  • !-3 : 3rd-to-last command and all arguments
  • !^ : first argument of the last command in history
  • !:2 : 2nd argument of the last command
  • !$ : last argument of the last command
  • !* : all arguments of the last command, but not the command itself
  • !42 : expands to the 42nd command in the history list
  • !foo : last command beginning with “foo”
  • !?baz : last command containing “baz”
  • ^foo^bar : last command with the first occurrence of “foo” replaced with “bar”
  • !:gs/foo/bar : last command with all occurrences of “foo” replaced with “bar”
  • <any_above>:p : prints command without executing
bash_cheatsheet.1401183296.txt.gz · Last modified: 2014/05/27 11:34 by ginko