.---------------------------------------------------------------------------.
| |
| Bash History Cheat Sheet |
| |
‘---------------------------------------------------------------------v1.12-‘
| Created by Peter Krumins (peter@catonmat.net, @pkrumins on twitter) |
| www.catonmat.net -- good coders code, great coders reuse |
| |
| Released under the GNU Free Document License |
‘---------------------------------------------------------------------------‘
===================== Emacs Keyboard Shortcut Summary =====================
.--------------.------------------------------------------------------------.
| | |
| Shortcut | Description |
| | |
‘--------------+------------------------------------------------------------‘
| C-p | Fetch the previous command from the history list. |
‘--------------+------------------------------------------------------------‘
| C-n | Fetch the next command from the history list. |
‘--------------+------------------------------------------------------------‘
| M-<| Move to the first line in the history. |
‘--------------+------------------------------------------------------------‘
| M-> | Move to the end of the input history. |
‘--------------+------------------------------------------------------------‘
| C-r | Search backward starting at the current line (incremental) |
‘--------------+------------------------------------------------------------‘
| C-s | Search forward starting at the current line (incremental). |
‘--------------+------------------------------------------------------------‘
| M-p | Search backward using non-incremental search. |
‘--------------+------------------------------------------------------------‘
| M-n | Search forward using non-incremental search |
‘--------------‘------------------------------------------------------------‘
======================= Vi Keyboard Shortcut Summary ======================
.--------------.------------------------------------------------------------.
| | |
| Shortcut | Description |
| | |
‘--------------+------------------------------------------------------------‘
| k | Fetch the previous command from the history list. |
‘--------------+------------------------------------------------------------‘
| j | Fetch the next command from the history list. |
‘--------------+------------------------------------------------------------‘
| /string or | Search history backward for a command matching string. |
| CTRL-r | |
‘--------------+------------------------------------------------------------‘
| ?string or | Search history forward for a command matching string. |
| CTRL-s | (Note that on most machines Ctrl-s STOPS the terminal |
| | output, change it with `stty‘ (Ctrl-q to resume)). |
‘--------------+------------------------------------------------------------‘
| n | Repeat search in the same direction as previous. |
‘--------------+------------------------------------------------------------‘
| N | Repeat search in the opposite direction as previous. |
‘--------------+------------------------------------------------------------‘
| G | Move to history line N (for example, 15G). |
‘--------------‘------------------------------------------------------------‘
======================== History Expansion Summary ========================
Event Designators:
.--------------.------------------------------------------------------------.
| | |
| Designator | Description |
| | |
‘--------------+------------------------------------------------------------‘
| ! | Start a history substitution. |
‘--------------+------------------------------------------------------------‘
| !! | Refer to the last command. |
‘--------------+------------------------------------------------------------‘
| !n | Refer to the n-th command line (try `history‘ command). |
‘--------------+------------------------------------------------------------‘
| !-n | Refer to the current command line minus n. |
‘--------------+------------------------------------------------------------‘
| !string | Refer to the most recent command starting with ‘string‘. |
‘--------------+------------------------------------------------------------‘
| !?string? | Refer to the most recent command containing ‘string‘. |
‘--------------+------------------------------------------------------------‘
| ^str1^str2^ | Quick substitution. Repeat the last command, replacing |
| | ‘str1‘ with ‘str2‘. |
‘--------------+------------------------------------------------------------‘
| !# | Refer to the entire command line typed so far. |
‘--------------‘------------------------------------------------------------‘
Word Designators:
(Word designators follow the event designators, separated by a collon ‘:‘)
.--------------.------------------------------------------------------------.
| | |
| Designator | Description |
| | |
‘--------------+------------------------------------------------------------‘
| 0 | The zeroth (first) word in a line (usually command name). |
‘--------------+------------------------------------------------------------‘
| n | The n-th word in a line. |
‘--------------+------------------------------------------------------------‘
| ^ | The first argument (the second word) in a line. |
‘--------------+------------------------------------------------------------‘
| $ | The last argument in a line. |
‘--------------+------------------------------------------------------------‘
| % | The word matched by the most recent string search. |
‘--------------+------------------------------------------------------------‘
| x-y | A range of words from x to y (-y is synonymous with 0-y). |
‘--------------+------------------------------------------------------------‘
| * | All words but the zeroth (synonymous with 1-$). |
‘--------------+------------------------------------------------------------‘
| x* | Synonymous with x-$ |
‘--------------+------------------------------------------------------------‘
| x- | The words from x to the second to last word. |
‘--------------‘------------------------------------------------------------‘
Modifiers (modifiers follow word designators, separated by a colon):
.--------------.------------------------------------------------------------.
| | |
| Modifier | Description |
| | |
‘--------------+------------------------------------------------------------‘
| h | Remove a trailing pathname component, leaving the head. |
‘--------------+------------------------------------------------------------‘
| t | Remove all leading pathname component, leaving the tail. |
‘--------------+------------------------------------------------------------‘
| r | Remove a trailing suffix of the form .xxx, leaving the |
| | basename. |
‘--------------+------------------------------------------------------------‘
| e | Remove all but the trailing suffix. |
‘--------------+------------------------------------------------------------‘
| p | Print the resulting command but do not execute it. |
‘--------------+------------------------------------------------------------‘
| q | Quotes the substituted words, escaping further |
| | substitutions. |
‘--------------+------------------------------------------------------------‘
| x | Quotes the substituted words, breaking them into words at |
| | blanks and newlines. |
‘--------------+------------------------------------------------------------‘
| s/old/new/ | Substitutes ‘new‘ for ‘old‘. |
‘--------------+------------------------------------------------------------‘
| & | Repeats the previous substitution. |
‘--------------+------------------------------------------------------------‘
| g | Causes s/old/new/ or & to be applied over the entire |
| | event line. |
‘--------------‘------------------------------------------------------------‘
============ History Behavior Modification via Shell Variables ============
.----------------.----------------------------------------------------------.
| | |
| Shell Variable | Description |
| | |
‘----------------+----------------------------------------------------------‘
| HISTFILE | Controls where the history file gets saved. |
| | Set to /dev/null not to save the history. |
| | Default: ~/.bash_history |
‘----------------+----------------------------------------------------------‘
| HISTFILESIZE | Controls how many history commands to keep in HISTFILE |
| | Default: 500 |
‘----------------+----------------------------------------------------------‘
| HISTSIZE | Controls how many history commands to keep in the |
| | history list of current session. |
| | Default: 500 |
‘----------------+----------------------------------------------------------‘
| HISTIGNORE | Controls which commands to ignore and not save to the |
| | history list. The variable takes a list of |
| | colon separated values. Pattern & matches the previous |
| | history command. |
‘----------------‘----------------------------------------------------------‘
============ History Behavior Modification via `shopt‘ Command ============
.----------------.----------------------------------------------------------.
| | |
| shopt Option | Description |
| | |
‘----------------+----------------------------------------------------------‘
| histappend | Setting the variable appends current session history to |
| | HISTFILE. Unsetting overwrites the file each time. |
‘----------------+----------------------------------------------------------‘
| histreedit | If set, puts a failed history substitution back on the |
| | command line for re-editing. |
‘----------------+----------------------------------------------------------‘
| histverify | If set, puts the command to be executed after a |
| | substitution on command line as if you had typed it. |
‘----------------‘----------------------------------------------------------‘
shopt options can be set by a `shopt -s option‘ and
can be unset by a `shopt -u option‘.
=============================== Examples ==================================
$ echo a b c d e (executes `echo ab c d e`)
a b c d e
$ echo !!:3-$ (executes `echo c d e`)
c d e
$ echo !-2:*:q (executes `echo ‘a b c d e‘`)
a b c d e
$ echo !-3:1:2:4:x (executes `echo ‘a‘ ‘b‘ ‘d‘`)
a b d
$ echo !-4:1-3:s/a/foo/:s/b/bar/:s/c/baz/ (executes `echo foo bar baz`)
foo bar baz
$ tar -xzf package-x.y.z.tgz
...
$ cd !-1:$:r (executes `cd package-x.y.z`)
package-x.y.z $
$ ls -a /tmp
file1 file2 file3 ...
$ ^-a^-l^ (executes `ls -l /tmp`)
-rw------- 1 user user file1
...
===========================================================================
.---------------------------------------------------------------------------.
| Created by Peter Krumins (peter@catonmat.net, @pkrumins on twitter) |
| www.catonmat.net -- good coders code, great coders reuse |
‘---------------------------------------------------------------------------‘
LeetCode 1540. K 次操作转变字符串 哈希