diff --git a/bash.md b/bash.md index 8a69e962b..c62e46080 100644 --- a/bash.md +++ b/bash.md @@ -138,6 +138,7 @@ See: [Parameter expansion](http://wiki.bash-hackers.org/syntax/pe) STR="/path/to/foo.cpp" echo ${STR%.cpp} # /path/to/foo echo ${STR%.cpp}.o # /path/to/foo.o +echo ${STR%/*} # /path/to echo ${STR##*.} # cpp (extension) echo ${STR##*/} # foo.cpp (basepath) @@ -571,21 +572,25 @@ History ### Operations -| `!!` | Execute last command again | -| `!!:s///` | Replace first occurrence of `` to `` in most recent command | -| `!!:gs///` | Replace all occurrences of `` to `` in most recent command | -| `!$:t` | Expand only basename from last parameter of most recent command | -| `!$:h` | Expand only directory from last parameter of most recent command | +| Code | Description | +| -------------------- | --------------------------------------------------------------------- | +| `!!` | Execute last command again | +| `!!:s///` | Replace first occurrence of `` to `` in most recent command | +| `!!:gs///` | Replace all occurrences of `` to `` in most recent command | +| `!$:t` | Expand only basename from last parameter of most recent command | +| `!$:h` | Expand only directory from last parameter of most recent command | `!!` and `!$` can be replaced with any valid expansion. ### Slices -| `!!:n` | Expand only `n`th token from most recent command (command is `0`; first argument is `1`) | -| `!^` | Expand first argument from most recent command | -| `!$` | Expand last token from most recent command | -| `!!:n-m` | Expand range of tokens from most recent command | -| `!!:n-$` | Expand `n`th token to last from most recent command | +| Code | Description | +| -------- | ---------------------------------------------------------------------------------------- | +| `!!:n` | Expand only `n`th token from most recent command (command is `0`; first argument is `1`) | +| `!^` | Expand first argument from most recent command | +| `!$` | Expand last token from most recent command | +| `!!:n-m` | Expand range of tokens from most recent command | +| `!!:n-$` | Expand `n`th token to last from most recent command | `!!` can be replaced with any valid expansion i.e. `!cat`, `!-2`, `!42`, etc.