誰かが次の理由を説明できることを願っています。する働く:
# < /dev/urandom tr -dc 'a-zA-Z' | head -c 12
以前「|」なしティーしかし、次のような場合はそうではありません。
# < /dev/urandom | tr -dc 'a-zA-Z' | head -c 12
(これは単純なパスワードジェネレータです)
以下とどのように異なるかを説明することもできます。
# gunzip < HP-Fax4-hpcups.ppd.gz cat > ouT1
--- もちろんこれは失敗します。
gzip: cat.gz: No such file or directory
ただし、catの前に「|」を除外すると、(pipe)の前に「|」と一緒に使用できますcat
。
# gunzip < HP-Fax4-hpcups.ppd.gz | cat > ouT1
答え1
何ですか
<
?ファイルから読み取るためにコマンド入力をリダイレクトすることです。コマンドの前または後に置くことができます。
$ echo abcd > in $ cat in abcd $ cat <in abcd $ <in cat abcd
簡単に言えば、このコマンドはファイルを読み取ります。
cat in
との違いcat <in
は、<
プロセスに対して標準入力(STDIN)のリダイレクトを設定するのではなく、コマンドが内部的に操作を実行する必要があるパラメータであることcat
です。 (開いて読んでください。)cat in
in
cat
何ですか
|
?プロセスのリダイレクトです。次のコマンドのみに従うことができます。
$ | cat in bash: syntax error near unexpected token `|' $ cat in | cat abcd $ cat in | cat | >
(...入力を待っています...)
これは何をするか: か
< /dev/urandom tr -dc 'a-zA-Z' | head -c 12
。より小さな部分に分けてください(リダイレクトを含むコマンド)。
< /dev/urandom tr -dc 'a-zA-Z'
=tr -dc 'a-zA-Z'
と< /dev/urandom
意味: 読んだ内容の翻訳です
urandom
。|
- 匿名パイプを使用してプロセスにリダイレクトhead -c 12
- リダイレクトを受ける過程です。
この行全体が意味をなさないのですか?
これは何ですか:
< /dev/urandom | tr -dc 'a-zA-Z' | head -c 12
か。分解:
< /dev/urandom
-注文不可そしてからリダイレクト/dev/urandom
|
- 匿名パイプを使用してプロセスにリダイレクトtr -dc 'a-zA-Z'
- リダイレクトを受けるプロセス- など...
どうなりますか?最初の「文」にはコマンドはありません。
何ですか
>
?これにより、このコマンドの出力がファイルにリダイレクトされます。と同じで、
<
コマンドの前後に使用できます。$ >out echo abcd $ cat out abcd $ echo dcba >tuo $ cat tuo dcba
これは何をするか: か
gunzip < HP-Fax4-hpcups.ppd.gz | cat > ouT1
。分析する:
gunzip < HP-Fax4-hpcups.ppd.gz
=HP-Fax4-hpcups.ppd.gz
次にリダイレクト(このファイルを読みgunzip
ます)gunzip
|
- 出力をプロセスにリダイレクトcat > ouT1
=はcat
リダイレクトを受け取り、その出力をファイルにリダイレクトするプロセスです。ouT1
大丈夫です。すべての部分が意味があります。
だからこれは何ですか:
gunzip < HP-Fax4-hpcups.ppd.gz cat > ouT1
?関係するすべての当事者がこれについてどのように言うべきかを100%確信することはできませんが、推測してみましょう。エラーは次のとおりです。
gzip: cat.gz: No such file or directory
このエラーの最初の単語は、
gzip
gzipが実行されたことを知らせることです。我々はまた、注文を解釈する前に販売によってリダイレクトが確立されることを知っています(少なくとも私は知っています)。だから私はこのように分析します。< HP-Fax4-hpcups.ppd.gz
-shellはプロセス入力リダイレクトをHP-Fax4-hpcups.ppd.gz
ieに設定します。実行するコマンドはこのファイルから読み込まれます。> ouT1
- コマンドの出力は次にリダイレクトされます。ouT1
今まではそんなに良くなった。今テーブルに残ったのはです
gunzip cat
。これの標準的な説明は、これがコマンドであり引数であるというgunzip
ことcat
です。gunzip
IN と OUT リダイレクトが設定された状態で実行され、最初の引数としてcat
文字列を取得します。何とかエラーが発生します。gzip: cat.gz: No such file or directory
またどういう意味ですか?
gzip
見つかりませんでしたcat.gz
。そのファイルで何かをしたいのですが(開く可能性が高い)、そのようなファイルやディレクトリはありません。したがって、それを引数としてcat.gz
使用する理由は内部的な問題であるに違いありません。cat
簡単な実験では、gzip形式の引数が必要であることを示しています。$ echo asdf > cat.gz $ gunzip < in cat > ouT1 gzip: cat.gz: not in gzip format
ここのファイルは
in
単純なテキストファイルなので、空行があるとします。