|
>> 4935 >> 4936 返事が遅くなってすみません。 分かり易く説明ありがとうございます。 勉強になります。 |
|
Cシェルでのリダイレクションについてなのですが コマンドの実行結果で、標準エラー出力を捨てて、標準出力 だけを見たいのですがどうすればよいのですか。 cat file.txt >& /dev/null では、標準出力、標準エラー共に捨てられますが、 標準エラーを捨てて、標準出力を表示したい。 cat file.txt 2 >& /dev/null cat file.txt >2& /dev/null cat file.txt >& 2 /dev/null cat file.txt > /dev/tty >2 /dev/null cat file.txt > /dev/tty >& /dev/null とやってみたのですが、どれも上手くいきません。 どうすればよいのでしょうか。 環境は、 Solaris8 Cシェル です。 |
|
>>4942 べた tty 宛でよいなら、サブシェルを使って ( cat file.txt > /dev/tty ) >& /dev/null です。 |
|
>> 4944 ありがとうございます。 > tty 宛でよいなら、サブシェルを使って > ( cat file.txt > /dev/tty ) >& /dev/null > です。 出来ました。 tty 宛でよいなら、サブシェルを使って tty を使わない方法もあるのですか。あるのでした教えてください。 サブシェルとは。 「( command )」とはどのよな使い方でしょうか。 良い案が思い浮かばなかったので、「cat file.txt > /dev/tty」で 表示ができたので、 /dev/tty を使えば上手くできるのではないかと。 |
|
>>4944 べた tty を使わないなら、 ( cat file.txt > out.txt ) >& /dev/null などとファイルに保存する。 あるいは mknod や mkfifo で名前付きパイプを作ってそこに 流すなど (さすがに標準エラー出力を捨てるためにここまで やるのはバカバカしいですが)。 mkfifo out cat out & ( cat file.txt > out ) >& /dev/null あるいは sh -c "ls cat file.txt 2>/dev/null" などと sh で逃げる手もあります。 csh でやるなら、これ以外の方法はおそらくないです。 > サブシェルとは。 > 「( command )」とはどのよな使い方でしょうか。 こちらをどうぞ。 http://x68000.q-e-d.net/~68user/unix/pickup?%A5%B5%A5%D6%A5%B7%A5%A7%A5%EB |
|
>> 4945 ご説明ありがとうございます。 Windows XPの別端末で書き込みをしたら 「エラー : 内部エラーが起こりました。」 の画面が表示されました。 何かあるのでしょうか。 |
|
こんにちは.linuxを使い始めたものです. パイプに関する質問です.環境はVine Linux のbashです. あるファイル名(ここではtestfile)のものを検索して, さらにその中身に"test"という文字列を含むかどうかを 知りたいと思っています. 対象のファイルがひとつとは限りません.例えば, ........... ../Data1/testfile ⇒(中身)This is test file. ........... ../Data2/testfile ⇒ (中身) This is hoge hoge. といった感じで同じ名前のファイルが別のディレクトリにあります. cat,find, grepを組み合わせれば出来そうな気はしているのですが, findしてリスト表示されたファイル名を引数としてcatコマンドに 渡すことができません. 自分なりにいろいろ検索しましたが,よくわかりませんでした.. よろしくご教授ください. |
|
>>4947 素人 親ディレクトリ以下の testfile というファイル名のファイル中に test という文字列があるものをリストアップ、であれば % find ../ -name testfile | xargs grep -l test でしょうか。それを cat するなら % find ../ -name testfile | xargs grep -l test | xargs cat ですかね。 |
|
>>4948 68user できました!答えはxargsでしたか. 勉強不足で恐縮です.ありがとうございました. |
|
RSA1のプログラムを実行するにあったってエラーが多くでます。これのヘッダファイルはどこにあるのでしょうか。 |
|
>>4950 佐藤丈師 OpenSSL に同梱されていますので、OpenSSL をインストール済みであれば /usr/include/openssl や /usr/local/openssl/include などにあるはずです。 コンパイル時に -I /usr/include/openssl などのオプションを付加してください。 |
|
初めて投稿します。 全くの初心者ですが、次のことをお尋ねします。 Debian4.0ですが、デスクトップにアイコンを作成し、クリックすると プログラムを起動するようにしたいのですがどのようにすればいいの でしょうか。 #su - abc ’abcでログインし、「sh /usr/lib/scripts/claim/ORC_CLAIM_SERVER.sh 5001 /var/tmp」 ktermに記述などお尋ねします。 |
|
>>4952 kawasaki やり方はインストールしたデスクトップ環境 (GNOME とか KDE とか) によると思います。 が、お使いのデスクトップ環境をお教えいただいたとしても、ここ数年は UNIX 系 デスクトップ環境をいじっていないので、わたしはさっぱりわかりません。 |
|
初めまして。 ちょっと気になったので言わせて下さい。 UNIXの部屋 コマンド検索: Machでの説明で、 発音は、普通なら [まっは] が正しいと思うが、アメリカ人は "ch" の発音ができないらしくて [まーく] [まっく] といっている (発音できないような名前を付けるなと言いたい)。 とありますが、発音できないんじゃなくて、そういうスペルだと、 英語的には、マークって呼ぶだけです。hの2つ前は、aつまりエイって発音し、 cは、基本的には、ックって発音になり、 何も考えずにつなげて読むと、マークって読みます。 で、でもなんで、マッハが正しいかと言うと、 これは、ヨーロッパ系の言語の多くが、 machって書いてまっはって読むからです。 発音できないわけじゃないですよ^^; |
|
>>4954 uccこーひー ご指摘ありがとうございます。が、正直なところを申しますと、学がないので 真偽のほどが判断できません。よって、該当コンテンツより、 >>4954 uccこーひー の発言にリンクを張らせていただきますので、あとはお読みいただいた方に ご判断いただくことでご了承ください。 |
|
いつも便利に参照しています。 lsコマンドの紹介ページ(http://x68000.q-e-d.net/~68user/unix/pickup?ls)で 「man Solaris10 ls(1)」のリンク先が間違えているのに気がついたのでご連絡です。 正しくは、 「http://docs.sun.com/app/docs/doc/819-1210/ls-1?l=ja&a=view&q=ls」かな? |
|
>>4957 たけ > 「man Solaris10 ls(1)」のリンク先が間違えているのに気がついたのでご連絡です。 ありがとうございます。Sun のページはたまに URL が変わるんですよね…。 最新情報で更新しておきました。 NetBSD の manpage へのリンクも表示されなくなっていますが、そのうち直します。 |
|
SE募集の件で書き込みさせていただきました。 大変興味がありますので、一度詳細を教えていただけないでしょうか。 ご連絡をお待ちしています。 |
|
ありがとうございます。メールを送ります。 |
|
Perlで、前日のAM9時以降に作成されたファイルを 取得したいのですが、どのようにPerlを書けばよい のでしょうか。 Perlのシェルスクリプトを起動する前日のAM9以降 から、実行日までの間に作成されたファイルを取得 したいのです。 実行日の前日の9時というのは以下の方法で取得できる のですが、取得した日付とファイル作成日付を比較し、 対象か否かを判断して、必要なものだけを取得する 方法が分かりません。 どのよに書けばよいのでしょうか。 「実行日の前日の9時」は、 -------------------------------- #!/usr/local/bin/perl $tm = time - (24 * 60 * 60 * 1); ($sec, $min, $hour, $day, $mon, $year) = (localtime($tm))[0..5]; $now = sprintf("%04d/%02d/%02d %02d:%02d:%02d",$year+1900,$mon+1,$day,$hour,$min,$sec); print $now, "\n"; -------------------------------- #!/usr/local/bin/perl use POSIX 'strftime'; $tm = time - (24 * 60 * 60 * 1); my $now = strftime "%Y/%m/%d %H:%M:%S", localtime($tm); print $now, "\n"; |
|
>> 4974 環境を書き忘れました。 環境は、 Solaris8 Perl v5.8.5 |
|
>>4974 べた >>4975 べた Solaris なら適当なファイルを作って、touch コマンドでタイムスタンプを 前日 08:59:59 にしておいて、find . -newer foo とするのが一番簡単かと 思います。 FreeBSD なら find -mtime -99h とか、Linux なら find -mmin -9999 とか できますが (99 や 9999 は計算して求める)、結局は -newer の方が簡単な 気がします。 モジュール使うなら File::Find http://perldoc.perl.org/File/Find.html File::Find::Rule http://search.cpan.org/~rclamp/File-Find-Rule-0.28/lib/File/Find/Rule.pm あたりかと思いますが、いずれも前日9時と比較する部分は手で書かないと いけないように見えますので、イマイチですね。 |
|
>>4976 68user ありがとうございます。 また、返事が遅くなって申し訳ありません。 > find . -newer foo ですか。 シェルで、findの結果を取得することも考えました。 > あたりかと思いますが、いずれも前日9時と比較する部分は手で書かないと > いけないように見えますので、イマイチですね。 Perlを使おうとしていたので、手で書かなくてはいけないと思っていました この部分の良い方法が実現できなくて。 環境上、教えて頂いたモジュールも入れることができません。 |
|
>>4977 べた find . -newer foo の方法を書いておきます。find を使わないなら、 昨日9時の日時 (20090323090000) を Time::Local で epoch time に 直しておき、stat() が返す最終更新時刻と比較すればよいでしょう。 ------ my ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = localtime(time()-60*60*24); my $timestamp = sprintf("%04d%02d%02d%02d%02d.%02d", $year+1900, $mon+1, $mday, 9, 0, 0); my $yeasterday_9am_file = "foo.txt"; system("touch -t $timestamp $yeasterday_9am_file"); open(IN, "find . -type f -newer $yeasterday_9am_file |"); while (<IN>){ chomp; print "$_\n"; } |
|
>> 4978 ありがとうございます。 教えていただいた方法ですと、前日9時のタイムスタンプの 取得をPerlでやればあとは、シェルスクリプトでもできます ね。 実のところ、findを使わない、Perlでの記述、遣り方を教えて ほしいのですが。 |