• ベストアンサー

Unix:ls-lRのリダイレクト

kshで、ls-lRのコマンドを使い表示したディレクトリの内容を、新規のディレクトリ内のファイルに下記のようにリダイレクトさせようとしましたが、ファイル作成できませんでした。 ls-lR >>$HOME/test/apple cat | ls-lR >> $HOME/test/apple どうすれば、ls-lRの内容をファイルに表示できますか?

質問者が選んだベストアンサー

  • ベストアンサー
  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.1

その「ファイルが作成できない」とは具体的にどのような状態なのでしょうか? 何かエラーメッセージは出ていないのでしょうか? ○ ls-lR とスペースの区切りの無いコマンドは、標準的なコマンドではありません。 エイリアス(別名)等で使えるようになっているのでしょうか? → 存在していなければ ls-lR : not found 等とエラーメッセージが出ます ○ $HOME/testディレクトリが無いと、その下にappleというファイルは作られません。 → cannot create , no such file or directory 等のエラーメッセージが出ます ○ $HOME/testディレクトリへの書き込み権限が無いと、その下にappleというファイルは作られません。 → permission denied になります cat | ls-lR >> $HOME/test/apple は cat の出力→ls-lR >> $HOME/test/apple となります。この状態では、catは標準入力からの入力→端末からの入力となるため、キーボードで何も入力しないと停止している状態になります また、lsは標準入力からの入力は必要としません。 どちらにしても無意味です。

lvndht
質問者

お礼

エラーの思い当たる原因を上げて頂きありがとうございます。 すべてチェックしましたが、問題なさそうです。 もう一度、問題を読み直してみます。

lvndht
質問者

補足

質問する際に区切りを入れずに書いてしまいました。 ご指摘の通り、ls -lRです。 エラーメッセージは、 ksh:$HOME/test/apple: cannot create 先に$HOME/testのディレクトリを作成しても、 cannot createが出ます。

その他の回答 (3)

回答No.4

No2ですが、 http://okwave.jp/qa/q4719739.html この投稿とよく似ている。同じテキストを使っているか、同じ命令者か、同じ人物。であろうと思料する。 KSH と言いながら、kshとはまったく関係ないところ。CAT コマンド。リダイレクト。ファイルへの出力。 発想元が同じであるか、同じ思考を持つ人間か、同一自分か?  ここまで似るには、双子とか、親兄弟か、それに近い力が働いている。他にも似たケースがある。結局何をしたいのか投稿者は明確にしないまま終了している。 などと、いろんなケースが考えられる。

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.3

> ksh:$HOME/test/apple: cannot create この後に [No such file or directory] といか言う感じに [] でかこまれたメッセージはありませんか? それが、 cannot create の理由です。 この理由を読んで、その原因を調べる必要があります。 > すべてチェックしましたが、問題なさそうです。 どんなチェックをしたのですか? 例えば、こんなチェックをしたらどうなるのでしょう? ○ $HOME/testディレクトリが無いと、その下にappleというファイルは作られません。 ○ $HOME/testディレクトリへの書き込み権限が無いと、その下にappleというファイルは作られません。 ↓ echo $HOME/test で $HOME/test が期待するディレクトリになっているか確認する。 →$HOMEが正しく設定されていない、$HOMEのつもりで作った testディレクトリが別の場所に作っていた、等 ls -ld $HOME/test で、 $HOME/test の存在と権限を確認する →所有ユーザー/グループが現在のユーザー/グループと一致するか、等 ls -l $HOME/test で、 $HOME/test の中身へのアクセスと、ファイル一覧を確認する touch $HOME/test/apple で、リダイレクトによらない方法でのファイル作成を試みる こういうところでうまく質問して早く回答をもらうコツは次のものです。 ・「うごかない」「うまくいかない」等と抽象的な表現をしない。具体的な内容を示す。 ・エラーメッセージを全文そのまま載せる(ユーザー名等、セキュリティに関係しそうなところは伏せ字にしてもいいですが)  意訳したり省略したりしない

回答No.2

>すべてチェックしましたが、問題なさそうです。 >もう一度、問題を読み直してみます。 はっ???? 何ていいました? 読み直す? 何それ? まあ、その辺はおいて置いて、No1さんの指摘がよくわかっていないようですね。と言うより理解できなかった? その辺が「問題を読み直す」と言う不可思議な発言のもとかもしれない。 >cat -h >cat -help >man cat で使いかを見て見ませんか? 見直すならそこからはじめてください。よくある、標準入力からの入力は "-" で置き換えることがあります。投稿内容の式だと、標準入力ではなくファイルからの入力が想定されています。 と言うより ”|” この文字が意味する事自体わかっていないのではないですか?  正直に、ちゃんと最初から説明しましょう。誰かさんに頼まれて書き込みしていると。まあ http://shellscript.sunone.me/input_output.html このあたりの、コピーか過去からの投稿だろうと。

関連するQ&A

専門家に質問してみよう