Skip to content

Commit 9abe7ae

Browse files
committed
add pipeline examples
1 parent e686771 commit 9abe7ae

File tree

1 file changed

+146
-0
lines changed

1 file changed

+146
-0
lines changed

lang-guide/chapters/pipelines.md

Lines changed: 146 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,3 +81,149 @@ nu demo.nu o> file.txt o+e>| str upcase
8181
```
8282

8383
Also note that `complete` is special, it doesn't work with `e>|`, `o+e>|`.
84+
85+
## Stdio and redirection behavior examples
86+
87+
Pipeline and redirection behavior can be hard to follow when they are used with subexpression, or custom commands. Here are some examples to show stdio behavior
88+
89+
### Examples for subexpression
90+
91+
- (^cmd1 | ^cmd2; ^cmd3 | ^cmd4)
92+
93+
| Command | Stdout | Stderr |
94+
| ------- | -------- | ---------- |
95+
| cmd1 | Piped | Terminal |
96+
| cmd2 | *Terminal* | Terminal |
97+
| cmd3 | Piped | Terminal |
98+
| cmd4 | Terminal | Terminal |
99+
100+
- (^cmd1 | ^cmd2; ^cmd3 | ^cmd4) | ^cmd5
101+
102+
| Command | Stdout | Stderr |
103+
| ------- | -------- | ---------- |
104+
| cmd1 | Piped | Terminal |
105+
| cmd2 | *Terminal* | Terminal |
106+
| cmd3 | Piped | Terminal |
107+
| cmd4 | Piped | Terminal |
108+
109+
- (^cmd1 | ^cmd2; ^cmd3 | ^cmd4) e>| ^cmd5
110+
111+
| Command | Stdout | Stderr |
112+
| ------- | -------- | -------- |
113+
| cmd1 | Piped | Terminal |
114+
| cmd2 | Terminal | Terminal |
115+
| cmd3 | Piped | Terminal |
116+
| cmd4 | Terminal | Piped |
117+
118+
- (^cmd1 | ^cmd2; ^cmd3 | ^cmd4) o+e>| ^cmd5
119+
120+
| Command | Stdout | Stderr |
121+
| ------- | -------- | -------- |
122+
| cmd1 | Piped | Terminal |
123+
| cmd2 | Terminal | Terminal |
124+
| cmd3 | Piped | Terminal |
125+
| cmd4 | Piped | Piped |
126+
127+
- (^cmd1 | ^cmd2; ^cmd3 | ^cmd4) o> test.out
128+
129+
| Command | Stdout | Stderr |
130+
| ------- | -------- | -------- |
131+
| cmd1 | Piped | Terminal |
132+
| cmd2 | File | Terminal |
133+
| cmd3 | Piped | Terminal |
134+
| cmd4 | File | Terminal |
135+
136+
- (^cmd1 | ^cmd2; ^cmd3 | ^cmd4) e> test.out
137+
138+
| Command | Stdout | Stderr |
139+
| ------- | -------- | -------- |
140+
| cmd1 | Piped | File |
141+
| cmd2 | Terminal | File |
142+
| cmd3 | Piped | File |
143+
| cmd4 | Terminal | File |
144+
145+
- (^cmd1 | ^cmd2; ^cmd3 | ^cmd4) o+e> test.out
146+
147+
| Command | Stdout | Stderr |
148+
| ------- | -------- | -------- |
149+
| cmd1 | Piped | File |
150+
| cmd2 | File | File |
151+
| cmd3 | Piped | File |
152+
| cmd4 | File | File |
153+
154+
### Examples for custom command
155+
Given the following custom commands
156+
157+
```nushell
158+
def custom-cmd [] {
159+
^cmd1 | ^cmd2
160+
^cmd3 | ^cmd4
161+
}
162+
```
163+
164+
Here are some examples to show stdio behavior. Actually the stio behavior will be the same to previous session.
165+
166+
You can think the body of `custom-cmd` like `(^cmd1 | ^cmd2; ^cmd3 | ^cmd4).
167+
168+
- custom-cmd
169+
170+
| Command | Stdout | Stderr |
171+
| ------- | -------- | ---------- |
172+
| cmd1 | Piped | Terminal |
173+
| cmd2 | *Terminal* | Terminal |
174+
| cmd3 | Piped | Terminal |
175+
| cmd4 | Terminal | Terminal |
176+
177+
- custom-cmd | ^cmd5
178+
179+
| Command | Stdout | Stderr |
180+
| ------- | -------- | ---------- |
181+
| cmd1 | Piped | Terminal |
182+
| cmd2 | *Terminal* | Terminal |
183+
| cmd3 | Piped | Terminal |
184+
| cmd4 | Piped | Terminal |
185+
186+
- custom-cmd e>| ^cmd5
187+
188+
| Command | Stdout | Stderr |
189+
| ------- | -------- | -------- |
190+
| cmd1 | Piped | Terminal |
191+
| cmd2 | Terminal | Terminal |
192+
| cmd3 | Piped | Terminal |
193+
| cmd4 | Terminal | Piped |
194+
195+
- custom-cmd o+e>| ^cmd5
196+
197+
| Command | Stdout | Stderr |
198+
| ------- | -------- | -------- |
199+
| cmd1 | Piped | Terminal |
200+
| cmd2 | Terminal | Terminal |
201+
| cmd3 | Piped | Terminal |
202+
| cmd4 | Piped | Piped |
203+
204+
- custom-cmd o> test.out
205+
206+
| Command | Stdout | Stderr |
207+
| ------- | -------- | -------- |
208+
| cmd1 | Piped | Terminal |
209+
| cmd2 | File | Terminal |
210+
| cmd3 | Piped | Terminal |
211+
| cmd4 | File | Terminal |
212+
213+
- custom-cmd e> test.out
214+
215+
| Command | Stdout | Stderr |
216+
| ------- | -------- | -------- |
217+
| cmd1 | Piped | File |
218+
| cmd2 | Terminal | File |
219+
| cmd3 | Piped | File |
220+
| cmd4 | Terminal | File |
221+
222+
- custom-cmd o+e> test.out
223+
224+
| Command | Stdout | Stderr |
225+
| ------- | -------- | -------- |
226+
| cmd1 | Piped | File |
227+
| cmd2 | File | File |
228+
| cmd3 | Piped | File |
229+
| cmd4 | File | File |

0 commit comments

Comments
 (0)