blob: 0028724ad6baf8011111373aaeb3dc4655755065 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
|
# bash(1)
## Expansion
### Generator
```bash
# generate sequence from n to m
{n..m}
# generate sequence from n to m step by s
{n..m..s}
# expand cartesian product
{a,b}{c,d}
```
### Parameter
```bash
# default param
# if $foo set, then bar=$foo else bar=some_val
bar=${foo:-some_val}
```
## I/O redirection
> Note: The trick with bash I/O redirection is to interpret from left-to-right.
```bash
# stdout & stderr to file
command >file 2>&1
# equivalent
command &>file
# stderr to stdout & stdout to file
command 2>&1 >file
```
### Explanation
```bash
j>&i
```
Duplicate `fd i` to `fd j`, making `j` a copy of `i`. See [dup2(2)][dup2].
Example:
```bash
command 2>&1 >file
```
1. duplicate `fd 1` to `fd 2`, effectively redirecting `stderr` to `stdout`
2. redirect `stdout` to `file`
[dup2]: http://man7.org/linux/man-pages/man2/dup.2.html
|