mirror of
https://github.com/jbranchaud/til
synced 2026-01-21 07:58:02 +00:00
Compare commits
1 Commits
273c35318d
...
957987e09f
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
957987e09f |
@@ -10,7 +10,7 @@ pairing with smart people at Hashrocket.
|
|||||||
|
|
||||||
For a steady stream of TILs, [sign up for my newsletter](https://crafty-builder-6996.ck.page/e169c61186).
|
For a steady stream of TILs, [sign up for my newsletter](https://crafty-builder-6996.ck.page/e169c61186).
|
||||||
|
|
||||||
_1518 TILs and counting..._
|
_1517 TILs and counting..._
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -1540,7 +1540,6 @@ _1518 TILs and counting..._
|
|||||||
- [Switch Versions of a Brew Formula](unix/switch-versions-of-a-brew-formula.md)
|
- [Switch Versions of a Brew Formula](unix/switch-versions-of-a-brew-formula.md)
|
||||||
- [Tell direnv To Load The Env File](unix/tell-direnv-to-load-the-env-file.md)
|
- [Tell direnv To Load The Env File](unix/tell-direnv-to-load-the-env-file.md)
|
||||||
- [Touch Access And Modify Times Individually](unix/touch-access-and-modify-times-individually.md)
|
- [Touch Access And Modify Times Individually](unix/touch-access-and-modify-times-individually.md)
|
||||||
- [Type Fewer Paths With Brace Expansion](unix/type-fewer-paths-with-brace-expansion.md)
|
|
||||||
- [Undo Changes Made To Current Terminal Prompt](unix/undo-changes-made-to-current-terminal-prompt.md)
|
- [Undo Changes Made To Current Terminal Prompt](unix/undo-changes-made-to-current-terminal-prompt.md)
|
||||||
- [Undo Some Command Line Editing](unix/undo-some-command-line-editing.md)
|
- [Undo Some Command Line Editing](unix/undo-some-command-line-editing.md)
|
||||||
- [Unrestrict Where ripgrep Searches](unix/unrestrict-where-ripgrep-searches.md)
|
- [Unrestrict Where ripgrep Searches](unix/unrestrict-where-ripgrep-searches.md)
|
||||||
|
|||||||
@@ -1,49 +0,0 @@
|
|||||||
# Type Fewer Paths With Brace Expansion
|
|
||||||
|
|
||||||
Bash has a feature called _brace expansion_ that allows us to do a kind of
|
|
||||||
shorthand when writing out file paths. We can specify multiple variants
|
|
||||||
comma-separated between curly braces and they'll each be expanded into separate
|
|
||||||
arguments.
|
|
||||||
|
|
||||||
It's easier to understand this by seeing it. If we type the following (don't
|
|
||||||
hit `Enter` yet):
|
|
||||||
|
|
||||||
```bash
|
|
||||||
$ mkdir src/{one,two,three}
|
|
||||||
```
|
|
||||||
|
|
||||||
And then hit _Tab_:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
$ mkdir src/one src/two src/three
|
|
||||||
```
|
|
||||||
|
|
||||||
Bash uses the portion in braces to expand into separate arguments. The part
|
|
||||||
outside the braces gets reused for each. That's where we get some savings from
|
|
||||||
typing out the same path each time.
|
|
||||||
|
|
||||||
Here is another example where we use `mv` to rename a file deeply nested in our
|
|
||||||
project:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
$ mv projects/project1/src/app/utils/{names,constants}.js
|
|
||||||
```
|
|
||||||
|
|
||||||
We don't even have to _Tab_ it out. We can hit _Enter_ directly and `mv` gets
|
|
||||||
both arguments.
|
|
||||||
|
|
||||||
Similarly, how about we change the extension of our renamed file:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
$ mv projects/project1/src/app/utils/constants.{js,ts}
|
|
||||||
```
|
|
||||||
|
|
||||||
I've always found this feature most useful with paths and filenames, but you
|
|
||||||
can do brace expansion with any arguments.
|
|
||||||
|
|
||||||
```bash
|
|
||||||
$ echo 1{3,1,6,4,9,2,7,5}
|
|
||||||
13 11 16 14 19 12 17 15
|
|
||||||
```
|
|
||||||
|
|
||||||
[source](https://www.gnu.org/software/bash/manual/html_node/Brace-Expansion.html)
|
|
||||||
Reference in New Issue
Block a user