私は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を使用したい場合は、次のものを使用できます。コマンドの置き換え。これはpwd
command() の出力をecho
引数として渡します。この例では、pwd
独自の出力を標準出力に出力するため、これは必要ありません。
$ echo "$(pwd)"
/current/working/dir
答え3
このecho
コマンドは標準入力からは読み取られませんが、ユーザーが書き込みを指示した内容を書き込みます。この場合、何も書くように指示しなかったので、印刷されるのは改行文字だけです。 pwd | echo
ただ実行するのと同じですecho
。
パイプを使用するには、標準入力(たとえばcat
)から読み取るいくつかのコマンドを使用する必要があります。
$ pwd | cat
/path/to/current/directory
$