• ベストアンサー

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

  • シェルのリダイレクトとパイプについて

    シェルのリダイレクトとパイプについての質問です. リダイレクトでコマンドの標準出力をファイルに指定した後に, パイプを置いて,もう一つコマンドを並べたとき, 後の方のコマンドの標準入力はどうなるのでしょうか? 例えば, ls >outfile |cat ならば, catの標準入力には,何も入ってこないと思うのですが, これを実行すると,lsの結果がoutfileに書き込まれ, 次のプロンプトが表示されます. 普通,catを引数なしで実行すると, EOFが入力されるまで,入力待ちになると思うのですが, こうならないのは,シェルがcatの標準入力にEOFを入力したからだと 考えていいのでしょうか. よろしくお願いします. (質問の意味が分かりにくければご指摘下さい.)

  • 出力のリダイレクトコマンド「>」で 日本語をリダイレクトする方法?

    Redhat Linux 9の環境で、「ls」、「less」のコマンドで日本語ファイル名をうまく表示しましたが、「>」で日本語をリダイレクトすることはなかなかできなかった。 下記のコマンドを試したら、、バイナリファイルになったらしいです。 echo "日本語" > test.log 誰かご教授いただければ、大変助かります。 よろしくお願いします。

  • Kシェルのリダイレクト

    Kシェルのリダイレクト シェル初心者で申し訳ございませんが、ご教授いただけたら幸いです。 やりたいこと  xxx.kshの実行ログを出力したい。 出力したいログは、以下コマンド実行時に標準出力されるログをファイルへ落としたい。 尚、実際の実行コマンドは、ksh -xは入力しません。 $ ksh -x ./xxx.ksh 上記コマンドを実行すると、詳細なログが表示されるのですが、ファイルへ落としたいと思います。 分かりづらいかも知れませんが、宜しくお願い致します。

  • UNIX:シェルをshからkshへ替えられない

    下記の方法で、shからkshへ切り替えるという設問ですが、shのままkshになりません。 1)echoコマンドで、export ENV=$HOME/Env/ksh_envを.profileへ追加 2)Envディレクトリ作成後、ksh_envへ下記を追加   Set –o noclobber, set-o ignoreeof, set –o vi 3) chmodコマンドで、ksh_envを777変更 4)echoコマンドで、$SHELL=/bin/ksh 5) echoコマンドで、$SHELLを呼ぶと、kshになっている。 何を間違えているか教えて頂けますか? 宜しくお願いします。

  • DUとLSの表示の差

    ファイルのパーミッション等が下記の場合が関係しているのか不明ですがDUコマンドとLSコマンドで示されるDiskの使用量が一致しないのですが、理由を教えていただけませんか? % cd test001 % ls -l total 944 -rw-r-lr-- 1 own grp 524288000 Oct 15 09:12 File0 -rw-r-lr-- 1 own grp 524288000 Oct 15 09:11 File1 % % du 946 . % cd ../test002 % ls -l total 2049056 -rw-r-lr-- 1 own grp 524288000 Oct 17 14:12 File0 -rw-r-lr-- 1 own grp 524288000 Oct 12 21:16 File1 % % du 2049056 . DUの結果とLS -l で示される結果は一致しているのですが、ファイルサイズ(ls -lで示される値)の合計と一致しないのです。 OSはSolaris8です、よろしくお願いします。

  • lsの4096とディレクトリ容量計測方法について

    ls -la を実行すると サイズが4096というディレクトリ(test1とする)が多々見つかります。 またディレクトリによっては、0(test2とする)というのもありました。 ただ、test2ディレクトリの下に、file1というファイルがありサイズが10kでした。 【環境】 /root/test1(4096) /root/test2(0)   →file1(10K) /root/test3(4096) 【質問1】 ls -la で表示される4096とは何のことなのでしょうか? 【質問2】 ウインドウズのフォルダのように、ファイルサイズがディレクトリサイズに反映されてtest2に、 ディレクトリサイズが10kではなく、0と表示される理由は、なぜなのでしょうか? 【質問3】 各ディレクトリのサイズをlsで見れないとすれば、duコマンドで調べるしかないのでしょうか? 以上3点、 ご教授お願いします。

  • .htaccessによる301リダイレクト

    www.hoge.jp/test_hoge/ このディレクトリ以下を www.piyo.com に、リダイレクトしたいです。 下記のように.htaccessを記載したのですが、 RewriteEngine On RewriteRule ^test_hoge(.*)$ http://piyo.com$1 [R=301,L] そのファイルはどこへ格納すればいいのでしょうか。 現在ルートディレクトリは /www/test_hoge/ となっています。 .htaccessを/www/の中にいれても /test_hoge/の中にいれてもエラーがおきてしまいます。 ただ、macのテキストエディットで作成しているからかなと思うのですが、そういうことはありえますか? どなたかご回答お願いします。

    • ベストアンサー
    • CSS
  • ターミナルのls コマンドについて

    macbook OS X 10.5.6 を使っています. PC初心者です. Terminal で,あるディレクトリの中身を調べる時に,サブディレクトリの中身まで含めて全て表示させるためにはどうすればよいのでしょうか. 例えば,ディレクトリAの中に「テキストファイルB,ディレクトリC」があり,さらに,ディレクトリCの中に「テキストファイルD」があるとします. このとき,ls コマンドでディレクトリA の内容を表示させようとすると, テキストファイルB とディレクトリC が表示され,ディレクトリCの中身(ここではテキストファイルD)までは表示されません. 私はディレクトリCの中身まで含めて一括で表示させたいのですが,その方法が分かりません. このようなやり方をご存じの方がいらっしゃったら,お教え下さい. 何かやり方があるならば,ls コマンドにこだわる必要は全くありません.

    • ベストアンサー
    • Mac
  • ls * で表示可能なファイル数はいくつ?

    lsコマンドでディレクトリのファイルをリスト化するのに ls *ではファイル数が多すぎてエラーになります。 lsコマンドで表示可能なファイル数はいくつでしょうか。

  • .htaccessによりリダイレクトされるサイトの一部だけリダイレクト

    .htaccessによりリダイレクトされるサイトの一部だけリダイレクトされないようにできませんか? ドキュメントルートhome/直下の.htaccessには、下記の記述がされています。 RewriteEngine on RewriteRule .html$ http://www.sample.com/index.php ↑これは、拡張子が.htmlのページを表示しようとしたらwww.sample.com/index.php(TOPページ)へリダイレクトさせるという意味かと思うのですが、 home/webalizer 直下には、自動的に○○○.htmlファイルが生成されるようになっており、 このファイルを開こうとしても、TOPページにリダイレクトされてしまい、 FTP等でダウンロードしてからでないと内容を確認できません。 ルート直下の.htaccess は手を加えたくないので、 home/webalizer直下に、何らかの記述の.htaccessファイルを置くことにより、webalizer内の.htmlファイルだけはリダイレクトせずに開けるようにできないものでしょうか?

    • ベストアンサー
    • PHP