Skip to content

Instantly share code, notes, and snippets.

@hannic
Last active March 22, 2023 06:25
Show Gist options
  • Select an option

  • Save hannic/8eead58d9111f0642972 to your computer and use it in GitHub Desktop.

Select an option

Save hannic/8eead58d9111f0642972 to your computer and use it in GitHub Desktop.

Revisions

  1. hannic revised this gist Apr 30, 2020. No changes.
  2. hannic revised this gist Jun 8, 2014. No changes.
  3. hannic revised this gist Jun 8, 2014. No changes.
  4. hannic revised this gist Jun 8, 2014. No changes.
  5. hannic created this gist Jun 8, 2014.
    86 changes: 86 additions & 0 deletions cheat-sheet-bash.sh
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,86 @@
    !! - Last command
    !foo - Run most recent command starting with 'foo...' (ex. !ps, !mysqladmin)
    !foo:p - Print command that !foo would run, and add it as the latest to command history
    !$ - Last 'word' of last command ('/path/to/file' in the command 'ls -lAFh /path/to/file', '-uroot' in 'mysql -uroot')
    !$:p - Print word that !$ would substitute
    !* - All but first word of last command ('-lAFh /path/to/file' in the command 'ls -lAFh /path/to/file', '-uroot' in 'mysql -uroot')
    !*:p - Print words that !* would substitute

    ^foo^bar - Replace 'foo' in last command with 'bar', print the result, then run. ('mysqladmni -uroot', run '^ni^in', results in 'mysqladmin -uroot')

    {a,b,c} passes words to the command, substituting a, b, and c sequentially (`cp file{,.bk}` runs `cp file file.bk`)

    Ctrl + a - Jump to the start of the line
    Ctrl + b - Move back a char
    Ctrl + c - Terminate the command
    Ctrl + d - Delete from under the cursor
    Ctrl + e - Jump to the end of the line
    Ctrl + f - Move forward a char
    Ctrl + k - Delete to EOL
    Ctrl + l - Clear the screen
    Ctrl + r - Search the history backwards
    Ctrl + R - Search the history backwards with multi occurrence
    Ctrl + t - Transpose the current char with the previous
    Ctrl + u - Delete backward from cursor
    Ctrl + w - Delete backward a word
    Ctrl + xx - Move between EOL and current cursor position
    Ctrl + x @ - Show possible hostname completions
    Ctrl + z - Suspend/ Stop the command
    Ctrl + x; Ctrl + e - Edit line into your favorite editor

    Alt + < - Move to the first line in the history
    Alt + > - Move to the last line in the history
    Alt + ? - Show current completion list
    Alt + * - Insert all possible completions
    Alt + / - Attempt to complete filename
    Alt + . - Yank last argument to previous command
    Alt + b - Move backward
    Alt + c - Capitalize the word
    Alt + d - Delete word
    Alt + f - Move forward
    Alt + l - Make word lowercase
    Alt + n - Search the history forwards non-incremental
    Alt + p - Search the history backwards non-incremental
    Alt + r - Recall command
    Alt + t - Transpose the current word with the previous
    Alt + u - Make word uppercase
    Alt + back-space - Delete backward from cursor

    (Here "2T" means Press TAB twice)
    $ 2T - All available commands(common)
    $ (string)2T - All available commands starting with (string)
    $ /2T - Entire directory structure including Hidden one
    $ (dir)2T - Only Sub Dirs inside (dir) including Hidden one
    $ *2T - Only Sub Dirs inside without Hidden one
    $ ~2T - All Present Users on system from "/etc/passwd"
    $ $2T - All Sys variables
    $ @2T - Entries from "/etc/hosts"
    $ =2T - Output like ls or dir
    .bash_profile = sourced by login shell,
    .bashrc = sourced by all shells,
    .bash_aliases = should be sourced by .bashrc

    Run something:
    for i in a b c; do $i 'hello'; done

    Do something on a bunch of files:
    for i in *.rb; do echo "$i"; done

    If syntax:
    if [[ -e .ssh ]]; then echo "hi"; fi

    Numerical comparison:
    i=0; if (( i <= 1 )); then echo "smaller or equal"; else echo "bigger"; fi

    file check flags:
    -e: file exists
    -f: regular file (non directory)
    -d: directory
    -s: non-zero file
    -x: execute permission

    Avoid duplicates in your history:
    export HISTIGNORE="&:ls:ls *:[bf]g:exit"

    more here:
    http://www.linuxtopia.org/online_books/advanced_bash_scripting_guide/fto.html