diff --git a/docs/bash.md b/docs/bash.md index b3dfd7a..2ea176c 100644 --- a/docs/bash.md +++ b/docs/bash.md @@ -1,6 +1,14 @@ # bash -## shortcut list +- [bash](#bash) + - [shortcuts](#shortcuts) + - [list of shortcuts](#list-of-shortcuts) + - [unbind shortcuts](#unbind-shortcuts) + - [tips and tricks](#tips-and-tricks) + - [multitarget paths](#multitarget-paths) + +## shortcuts +### list of shortcuts | Shortcut | Action | | :--------- | :----- | | ctrl+a | go to the start of the line | @@ -9,9 +17,9 @@ | ctrl+f | move one character forwards | | alt+b | move one word backwards | | alt+f | move one word forwards | -| **ctrl+w** | delete to last white space | +| **ctrl+w** | **delete to last white space** | | alt+? | show completion options | -| **ctrl+r** | search command history backwards | +| **ctrl+r** | **search command history backwards** | | ctrl+g | exit history search | | ctrl+p | previous command in history | | ctrl+n | next command in history | @@ -21,9 +29,9 @@ | ctrl+q | resume output to screen | | ctrl+c | terminate command | | ctrl+z | suspend current command (resume with `fg`) | -| **ctrl+d** | exit shell | +| **ctrl+d** | **exit shell** | -## unbind shortcuts +### unbind shortcuts bash shortcuts can be disabled with the following command in `.bashrc`/`.bash_profile`: ```bash bind -r "" @@ -33,3 +41,22 @@ Example: bind -r "\C-h" ``` `\C` is CTRL, `\M` is ALT + +## tips and tricks + +### multitarget paths + +Bash allows for variable expansion in paths. This can be useful, for example when copying multiple files from a directory. Instead of typing out the path multiple times, one can use '{<>,<>}' to specify multiple targets: +```bash +# without multitarget expansion +cp foo/bar/moo.wav foo/bar/bark.wav foo/ + +# with multitarget expansion +cp foo/bar/{moo.wav,bark.wav} foo/ + +# or even +cp foo/bar/{moo,bark}.wav foo/ +``` +Multitarget expansion also works in the middle of a path as seen in the third command example above. +> Use only ',' to separate targets and **no whitespace** as that would make a new argument. +> The expansion makes a new argument for each entry inside the braces, so **copy to several targets does not work.**