2016-10-31 4 views
0

そのようなファイルまたはディレクトリlsを入力として擬似シェルで実行する-bash:LS:私は、私がしようとすると<演算子を使用していますが、私のbashの目的がある</p> <p>にこのエラーが発生したシェルとしておよびテスト目的のために働き、プログラムを作った

具体的な理由がありますか?私のコードからこのエラーが出る可能性がありますか?

私のプログラムの名前はrshellです:

[[email protected] rshell]$ ./bin/rshell < ls 
bash: ls: No such file or directory 
+0

は 'ls'のouputをリダイレクトするためにパイプを使用する:' LSを| 。/ bin/rshell' –

+0

構文u showは、lsと呼ばれるファイルの内容を/ bin/rshellに送信することです。それらのうちの1つは持っていません。 xxx – pm100

答えて

1

入力リダイレクト演算子<の右側にはファイル名が必要です。したがって、シェルはあなたの例では "ls"をファイル名として解釈します。そのようなファイルがないため、エラーが発生します。

あなたはパイプを使用し、自分の殻にlsの出力を渡したい場合は、次の

ls | ./bin/rshell 

またはプロセス置換

./bin/rshell < <(ls) 

テキストの「lsを渡したい場合はシェルの標準入力では、here-stringを使用してください:

./bin/rshell <<< ls 
+0

私が引数としてlsを渡したいのであれば、私はちょうど./bin/rshell lsですか? – opera97

+0

はい、 './bin/rshell ls'は" ls "を引数 – janos

+0

として渡します。これはlsをコマンド引数にしますか? 私は自分で入力したようにlsと他の文字列を./bin/rshellに注入しようとしています – opera97

0

あなたが持っている構文は./bin/rshell < lsで、 "ls"という名前のファイルからの読み込みを意味します。

あなたは/ binに/ rshellにlsコマンドの出力を送信しようとしている場合は、パイプを持ついずれかのパイプラインにそれを行う必要があります。

ls | ./bin/rshell 

または匿名ファイルハンドルから読み:

./bin/rshell < <(ls) 

は基本的には、><は、ファイル(ファイルI/O)を扱うためのものであり、|は、1つのコマンドからの出力を渡すに対処するために何をしたいです別のもの(コマンドI/O)に転送する。しかし、<(command)構文を使用して、2つを匿名ファイルハンドルと組み合わせることができます。

シェルスクリプトの中では、コマンドの出力を文字列変数に格納し、その文字列を入力として使用して解析したり、あらゆる種類の楽しいものを扱うことができます。しかし、最初のものが最初です。

すべてのものはbashを学ぶための優れたリソースは、高度なバッシュ・スクリプトガイドです:http://www.tldp.org/LDP/abs/html/index.html

+0

ありがとう、今私は間違ったコンテキストでこれを使用していた参照してください、私はプログラムで入力したように私は自分自身を入力した文字列としてlsを渡そうとしていた – opera97

+0

入力リダイレクト後、キーボードから? – opera97

+0

@ opera97多くの良い情報については、[bash hackers wiki](http://wiki.bash-hackers.org/)もご覧ください –

関連する問題

 関連する問題