Difference between revisions of "Bash Shell"
(→Misc) |
|||
| (4 intermediate revisions by the same user not shown) | |||
| Line 24: | Line 24: | ||
<code>CTRL + r</code> backward search</br> | <code>CTRL + r</code> backward search</br> | ||
<code>CTRL + g</code> leave search without running a command | <code>CTRL + g</code> leave search without running a command</br> | ||
<code>CTRL + j</code> copy current matched command to cli without running it | <code>CTRL + j</code> copy current matched command to cli without running it</br> | ||
<code>CTRL + s</code> stop output</br> | <code>CTRL + s</code> stop output</br> | ||
<code>CTRL + q</code> resume output</br> | <code>CTRL + q</code> resume output</br> | ||
<code>CTRL + d</code> escape current shell or delete character under cursor</br> | <code>CTRL + d</code> escape current shell or delete character under cursor</br> | ||
<code>CTRL + t</code> switch character before cursor with cursor</br> | <code>CTRL + t</code> switch character before cursor with cursor</br> | ||
</br> | |||
<code>$_</code> repeat last argument. Risky in scripts, best use case after &&. | |||
== Functions == | == Functions == | ||
Change to the directory of the script | Single Parenthesis <code>( ... )</code> is creating a subshell for nested commands</br> | ||
Double Parenthesis <code>(( ... ))</code> is for arithmetic operation</br> | |||
Single Square Bracket <code>[ ... ]</code> is the syntax for the POSIX ''test''</br> | |||
Double Square Brackets <code>[[ ... ]]</code> is the syntax for conditional expressions (similar to ''test'' but more powerful)</br> | |||
Single Ampersand <code>command1 & command2</code> run command1 in the background</br> | |||
Double Ampersand <code>command1 && command2</code> run command2 only if command1 succeeded</br> | |||
Single Pipe <code>command1 | command2</code> use output of command1 as input for command2</br> | |||
Double Pipe <code>command1 || command2</code> run command2 only if command1 failed</br> | |||
=== Change to the directory of the script === | |||
<code>cd "$(dirname "$(readlink -f "$0")")"</code></br> | <code>cd "$(dirname "$(readlink -f "$0")")"</code></br> | ||
1. ''readlink -f "$0"'' determines the path of the current script ($0)</br> | 1. ''readlink -f "$0"'' determines the path of the current script ($0)</br> | ||
2. ''dirname'' converts the path of the script to its directory</br> | 2. ''dirname'' converts the path of the script to its directory</br> | ||
3. ''cd'' changes the working directory to the directory it receives from ''dirname''</br> | 3. ''cd'' changes the working directory to the directory it receives from ''dirname''</br> | ||
Latest revision as of 17:28, 18 December 2025
Hotkeys
CTRL + a move to beginning
CTRL + e move to end
ALT + f move forward by one word
ALT + b move backward by one word
CTRL + n down arrow
CTRL + p up arrow
Text Control
CTRL + k cut after cursor
CTRL + l clear
CTRL + u cut before cursor
CTRL + w cut word before cursor
CTRL + y paste
CTRL + _ undo typing
ALT + r undo changes made to command from history
Misc
CTRL + r backward search
CTRL + g leave search without running a command
CTRL + j copy current matched command to cli without running it
CTRL + s stop output
CTRL + q resume output
CTRL + d escape current shell or delete character under cursor
CTRL + t switch character before cursor with cursor
$_ repeat last argument. Risky in scripts, best use case after &&.
Functions
Single Parenthesis ( ... ) is creating a subshell for nested commands
Double Parenthesis (( ... )) is for arithmetic operation
Single Square Bracket [ ... ] is the syntax for the POSIX test
Double Square Brackets [[ ... ]] is the syntax for conditional expressions (similar to test but more powerful)
Single Ampersand command1 & command2 run command1 in the background
Double Ampersand command1 && command2 run command2 only if command1 succeeded
Single Pipe command1 | command2 use output of command1 as input for command2
Double Pipe command1 || command2 run command2 only if command1 failed
Change to the directory of the script
cd "$(dirname "$(readlink -f "$0")")"
1. readlink -f "$0" determines the path of the current script ($0)
2. dirname converts the path of the script to its directory
3. cd changes the working directory to the directory it receives from dirname