author | František Kučera <franta-hg@frantovo.cz> |
Mon, 21 Feb 2022 00:43:11 +0100 | |
branch | v_0 |
changeset 329 | 5bc2bb8b7946 |
parent 244 | d4f401b5f90c |
permissions | -rw-r--r-- |
23
0d2729ed16ed
zkouška interního odkazu
František Kučera <franta-hg@frantovo.cz>
parents:
18
diff
changeset
|
1 |
<stránka |
0d2729ed16ed
zkouška interního odkazu
František Kučera <franta-hg@frantovo.cz>
parents:
18
diff
changeset
|
2 |
xmlns="https://trac.frantovo.cz/xml-web-generator/wiki/xmlns/strana" |
0d2729ed16ed
zkouška interního odkazu
František Kučera <franta-hg@frantovo.cz>
parents:
18
diff
changeset
|
3 |
xmlns:m="https://trac.frantovo.cz/xml-web-generator/wiki/xmlns/makro"> |
0d2729ed16ed
zkouška interního odkazu
František Kučera <franta-hg@frantovo.cz>
parents:
18
diff
changeset
|
4 |
|
244
d4f401b5f90c
examples: move each example to a separate page + add generated list of examples
František Kučera <franta-hg@frantovo.cz>
parents:
241
diff
changeset
|
5 |
<nadpis>Reading STDIN</nadpis> |
d4f401b5f90c
examples: move each example to a separate page + add generated list of examples
František Kučera <franta-hg@frantovo.cz>
parents:
241
diff
changeset
|
6 |
<perex>generating relational data from values on standard input</perex> |
d4f401b5f90c
examples: move each example to a separate page + add generated list of examples
František Kučera <franta-hg@frantovo.cz>
parents:
241
diff
changeset
|
7 |
<m:pořadí-příkladu>00200</m:pořadí-příkladu> |
4
1bb39595a51c
genrování hlavní nabídky #1
František Kučera <franta-hg@frantovo.cz>
parents:
2
diff
changeset
|
8 |
|
2
ab9099ff88fa
vkládání zápatí, jmenné prostory, saxon
František Kučera <franta-hg@frantovo.cz>
parents:
1
diff
changeset
|
9 |
<text xmlns="http://www.w3.org/1999/xhtml"> |
176
46042297e0d6
relpipe-tr-validator: specification and examples
František Kučera <franta-hg@frantovo.cz>
parents:
140
diff
changeset
|
10 |
|
185
6cd2e54d90ea
examples: relpipe-in-cli
František Kučera <franta-hg@frantovo.cz>
parents:
184
diff
changeset
|
11 |
<p> |
214
63f31bf2697f
examples: Writing an output filter in Bash
František Kučera <franta-hg@frantovo.cz>
parents:
213
diff
changeset
|
12 |
The number of <abbr title="Command-line interface">CLI</abbr> arguments is limited and they are passed at once to the process. |
185
6cd2e54d90ea
examples: relpipe-in-cli
František Kučera <franta-hg@frantovo.cz>
parents:
184
diff
changeset
|
13 |
So there is option to pass the values from STDIN instead of CLI arguments. |
6cd2e54d90ea
examples: relpipe-in-cli
František Kučera <franta-hg@frantovo.cz>
parents:
184
diff
changeset
|
14 |
Values on STDIN are expected to be separated by the null-byte. |
6cd2e54d90ea
examples: relpipe-in-cli
František Kučera <franta-hg@frantovo.cz>
parents:
184
diff
changeset
|
15 |
We can generate such data e.g. using <code>echo</code> and <code>tr</code> (or using <code>printf</code> or other commands): |
6cd2e54d90ea
examples: relpipe-in-cli
František Kučera <franta-hg@frantovo.cz>
parents:
184
diff
changeset
|
16 |
</p> |
6cd2e54d90ea
examples: relpipe-in-cli
František Kučera <franta-hg@frantovo.cz>
parents:
184
diff
changeset
|
17 |
|
6cd2e54d90ea
examples: relpipe-in-cli
František Kučera <franta-hg@frantovo.cz>
parents:
184
diff
changeset
|
18 |
<m:pre jazyk="bash"><![CDATA[echo -e "1\nHello\ntrue\n2\nWorld\nfalse" \ |
6cd2e54d90ea
examples: relpipe-in-cli
František Kučera <franta-hg@frantovo.cz>
parents:
184
diff
changeset
|
19 |
| tr \\n \\0 \ |
6cd2e54d90ea
examples: relpipe-in-cli
František Kučera <franta-hg@frantovo.cz>
parents:
184
diff
changeset
|
20 |
| relpipe-in-cli generate-from-stdin relation_from_stdin 3 \ |
6cd2e54d90ea
examples: relpipe-in-cli
František Kučera <franta-hg@frantovo.cz>
parents:
184
diff
changeset
|
21 |
a integer \ |
6cd2e54d90ea
examples: relpipe-in-cli
František Kučera <franta-hg@frantovo.cz>
parents:
184
diff
changeset
|
22 |
b string \ |
6cd2e54d90ea
examples: relpipe-in-cli
František Kučera <franta-hg@frantovo.cz>
parents:
184
diff
changeset
|
23 |
c boolean \ |
6cd2e54d90ea
examples: relpipe-in-cli
František Kučera <franta-hg@frantovo.cz>
parents:
184
diff
changeset
|
24 |
| relpipe-out-tabular]]></m:pre> |
6cd2e54d90ea
examples: relpipe-in-cli
František Kučera <franta-hg@frantovo.cz>
parents:
184
diff
changeset
|
25 |
|
6cd2e54d90ea
examples: relpipe-in-cli
František Kučera <franta-hg@frantovo.cz>
parents:
184
diff
changeset
|
26 |
<p> |
6cd2e54d90ea
examples: relpipe-in-cli
František Kučera <franta-hg@frantovo.cz>
parents:
184
diff
changeset
|
27 |
The output is same as above. |
6cd2e54d90ea
examples: relpipe-in-cli
František Kučera <franta-hg@frantovo.cz>
parents:
184
diff
changeset
|
28 |
We can use this approach to convert various formats to relational data. |
6cd2e54d90ea
examples: relpipe-in-cli
František Kučera <franta-hg@frantovo.cz>
parents:
184
diff
changeset
|
29 |
There are lot of data already in the form of null-separated values e.g. the process arguments: |
6cd2e54d90ea
examples: relpipe-in-cli
František Kučera <franta-hg@frantovo.cz>
parents:
184
diff
changeset
|
30 |
</p> |
6cd2e54d90ea
examples: relpipe-in-cli
František Kučera <franta-hg@frantovo.cz>
parents:
184
diff
changeset
|
31 |
|
6cd2e54d90ea
examples: relpipe-in-cli
František Kučera <franta-hg@frantovo.cz>
parents:
184
diff
changeset
|
32 |
<m:pre jazyk="bash"><![CDATA[cat /proc/$(pidof mc)/cmdline \ |
6cd2e54d90ea
examples: relpipe-in-cli
František Kučera <franta-hg@frantovo.cz>
parents:
184
diff
changeset
|
33 |
| relpipe-in-cli generate-from-stdin mc_args 1 a string \ |
6cd2e54d90ea
examples: relpipe-in-cli
František Kučera <franta-hg@frantovo.cz>
parents:
184
diff
changeset
|
34 |
| relpipe-out-tabular |
6cd2e54d90ea
examples: relpipe-in-cli
František Kučera <franta-hg@frantovo.cz>
parents:
184
diff
changeset
|
35 |
]]></m:pre> |
6cd2e54d90ea
examples: relpipe-in-cli
František Kučera <franta-hg@frantovo.cz>
parents:
184
diff
changeset
|
36 |
|
6cd2e54d90ea
examples: relpipe-in-cli
František Kučera <franta-hg@frantovo.cz>
parents:
184
diff
changeset
|
37 |
<p>If we have <code>mc /etc/ /tmp/</code> running in some other terminal, the output will be:</p> |
6cd2e54d90ea
examples: relpipe-in-cli
František Kučera <franta-hg@frantovo.cz>
parents:
184
diff
changeset
|
38 |
|
6cd2e54d90ea
examples: relpipe-in-cli
František Kučera <franta-hg@frantovo.cz>
parents:
184
diff
changeset
|
39 |
<pre><![CDATA[mc_args: |
6cd2e54d90ea
examples: relpipe-in-cli
František Kučera <franta-hg@frantovo.cz>
parents:
184
diff
changeset
|
40 |
╭────────────╮ |
6cd2e54d90ea
examples: relpipe-in-cli
František Kučera <franta-hg@frantovo.cz>
parents:
184
diff
changeset
|
41 |
│ a (string) │ |
6cd2e54d90ea
examples: relpipe-in-cli
František Kučera <franta-hg@frantovo.cz>
parents:
184
diff
changeset
|
42 |
├────────────┤ |
6cd2e54d90ea
examples: relpipe-in-cli
František Kučera <franta-hg@frantovo.cz>
parents:
184
diff
changeset
|
43 |
│ mc │ |
6cd2e54d90ea
examples: relpipe-in-cli
František Kučera <franta-hg@frantovo.cz>
parents:
184
diff
changeset
|
44 |
│ /etc/ │ |
6cd2e54d90ea
examples: relpipe-in-cli
František Kučera <franta-hg@frantovo.cz>
parents:
184
diff
changeset
|
45 |
│ /tmp/ │ |
6cd2e54d90ea
examples: relpipe-in-cli
František Kučera <franta-hg@frantovo.cz>
parents:
184
diff
changeset
|
46 |
╰────────────╯ |
6cd2e54d90ea
examples: relpipe-in-cli
František Kučera <franta-hg@frantovo.cz>
parents:
184
diff
changeset
|
47 |
Record count: 3]]></pre> |
6cd2e54d90ea
examples: relpipe-in-cli
František Kučera <franta-hg@frantovo.cz>
parents:
184
diff
changeset
|
48 |
|
6cd2e54d90ea
examples: relpipe-in-cli
František Kučera <franta-hg@frantovo.cz>
parents:
184
diff
changeset
|
49 |
<p> |
6cd2e54d90ea
examples: relpipe-in-cli
František Kučera <franta-hg@frantovo.cz>
parents:
184
diff
changeset
|
50 |
Also the <code>find</code> command can produce data separated by the null-byte: |
6cd2e54d90ea
examples: relpipe-in-cli
František Kučera <franta-hg@frantovo.cz>
parents:
184
diff
changeset
|
51 |
</p> |
6cd2e54d90ea
examples: relpipe-in-cli
František Kučera <franta-hg@frantovo.cz>
parents:
184
diff
changeset
|
52 |
|
6cd2e54d90ea
examples: relpipe-in-cli
František Kučera <franta-hg@frantovo.cz>
parents:
184
diff
changeset
|
53 |
<m:pre jazyk="bash"><![CDATA[find /etc/ -name '*ssh*_*' -print0 \ |
6cd2e54d90ea
examples: relpipe-in-cli
František Kučera <franta-hg@frantovo.cz>
parents:
184
diff
changeset
|
54 |
| relpipe-in-cli generate-from-stdin files 1 file_name string \ |
6cd2e54d90ea
examples: relpipe-in-cli
František Kučera <franta-hg@frantovo.cz>
parents:
184
diff
changeset
|
55 |
| relpipe-out-tabular]]></m:pre> |
6cd2e54d90ea
examples: relpipe-in-cli
František Kučera <franta-hg@frantovo.cz>
parents:
184
diff
changeset
|
56 |
|
6cd2e54d90ea
examples: relpipe-in-cli
František Kučera <franta-hg@frantovo.cz>
parents:
184
diff
changeset
|
57 |
<p>Will display something like this:</p> |
6cd2e54d90ea
examples: relpipe-in-cli
František Kučera <franta-hg@frantovo.cz>
parents:
184
diff
changeset
|
58 |
|
6cd2e54d90ea
examples: relpipe-in-cli
František Kučera <franta-hg@frantovo.cz>
parents:
184
diff
changeset
|
59 |
<pre><![CDATA[files: |
6cd2e54d90ea
examples: relpipe-in-cli
František Kučera <franta-hg@frantovo.cz>
parents:
184
diff
changeset
|
60 |
╭───────────────────────────────────╮ |
6cd2e54d90ea
examples: relpipe-in-cli
František Kučera <franta-hg@frantovo.cz>
parents:
184
diff
changeset
|
61 |
│ file_name (string) │ |
6cd2e54d90ea
examples: relpipe-in-cli
František Kučera <franta-hg@frantovo.cz>
parents:
184
diff
changeset
|
62 |
├───────────────────────────────────┤ |
6cd2e54d90ea
examples: relpipe-in-cli
František Kučera <franta-hg@frantovo.cz>
parents:
184
diff
changeset
|
63 |
│ /etc/ssh/ssh_host_ecdsa_key │ |
6cd2e54d90ea
examples: relpipe-in-cli
František Kučera <franta-hg@frantovo.cz>
parents:
184
diff
changeset
|
64 |
│ /etc/ssh/sshd_config │ |
6cd2e54d90ea
examples: relpipe-in-cli
František Kučera <franta-hg@frantovo.cz>
parents:
184
diff
changeset
|
65 |
│ /etc/ssh/ssh_host_ed25519_key.pub │ |
6cd2e54d90ea
examples: relpipe-in-cli
František Kučera <franta-hg@frantovo.cz>
parents:
184
diff
changeset
|
66 |
│ /etc/ssh/ssh_host_ecdsa_key.pub │ |
6cd2e54d90ea
examples: relpipe-in-cli
František Kučera <franta-hg@frantovo.cz>
parents:
184
diff
changeset
|
67 |
│ /etc/ssh/ssh_host_rsa_key │ |
6cd2e54d90ea
examples: relpipe-in-cli
František Kučera <franta-hg@frantovo.cz>
parents:
184
diff
changeset
|
68 |
│ /etc/ssh/ssh_config │ |
6cd2e54d90ea
examples: relpipe-in-cli
František Kučera <franta-hg@frantovo.cz>
parents:
184
diff
changeset
|
69 |
│ /etc/ssh/ssh_host_ed25519_key │ |
6cd2e54d90ea
examples: relpipe-in-cli
František Kučera <franta-hg@frantovo.cz>
parents:
184
diff
changeset
|
70 |
│ /etc/ssh/ssh_import_id │ |
6cd2e54d90ea
examples: relpipe-in-cli
František Kučera <franta-hg@frantovo.cz>
parents:
184
diff
changeset
|
71 |
│ /etc/ssh/ssh_host_rsa_key.pub │ |
6cd2e54d90ea
examples: relpipe-in-cli
František Kučera <franta-hg@frantovo.cz>
parents:
184
diff
changeset
|
72 |
╰───────────────────────────────────╯ |
6cd2e54d90ea
examples: relpipe-in-cli
František Kučera <franta-hg@frantovo.cz>
parents:
184
diff
changeset
|
73 |
Record count: 9]]></pre> |
6cd2e54d90ea
examples: relpipe-in-cli
František Kučera <franta-hg@frantovo.cz>
parents:
184
diff
changeset
|
74 |
|
87
25dec6931f18
Lepší odsazení, tabulátory.
František Kučera <franta-hg@frantovo.cz>
parents:
23
diff
changeset
|
75 |
</text> |
4
1bb39595a51c
genrování hlavní nabídky #1
František Kučera <franta-hg@frantovo.cz>
parents:
2
diff
changeset
|
76 |
|
1 | 77 |
</stránka> |