パイプされたpwdとechoが機能しないのはなぜですか? [コピー]

パイプされたpwdとechoが機能しないのはなぜですか? [コピー]

私はUnixを初めて使用します。 Ubuntu端末に次のコマンドを入力しました。

pwd | echo

pwdターミナル()から出力が出ると予想しましたが、/home/fatemeh/Documents/Code/test出力は次のようになります。空行

なぜこれが起こるのですか?

答え1

echo標準入力に対しては何も行いません。引数だけを解析します。そのためecho、実際に空行を出力して標準入力が削除されるのを効果的に実行しています。

達成したい動作を確認するには、標準入力を解析するように設計されたツールを使用してくださいcat。たとえば、次のようになります。

$ pwd | cat
/home/username

echoこれを使用して現在の作業ディレクトリ(または他のコマンドの出力)を表示するには、コマンド置換を使用してこれを実行できます。

$ echo "Your shell is currently working in '$(pwd)'."
Your shell is currently working in '/home/username'.

答え2

他の回答で述べたように、echo標準入力から読み取らないため、出力を印刷しませんpwd。まだわからない場合に備えて、pwd出力を直接印刷して単独で実行して、目的の結果を得ることができます。

$ pwd
/current/working/dir

実際にechoを使用したい場合は、次のものを使用できます。コマンドの置き換え。これはpwdcommand() の出力をecho引数として渡します。この例では、pwd独自の出力を標準出力に出力するため、これは必要ありません。

$ echo "$(pwd)"
/current/working/dir

答え3

このechoコマンドは標準入力からは読み取られませんが、ユーザーが書き込みを指示した内容を書き込みます。この場合、何も書くように指示しなかったので、印刷されるのは改行文字だけです。 pwd | echoただ実行するのと同じですecho

パイプを使用するには、標準入力(たとえばcat)から読み取るいくつかのコマンドを使用する必要があります。

$ pwd | cat
/path/to/current/directory
$ 

関連情報