|
perlの使い方なのですが、 日付と時間を表示する簡単なものを作りました。 実行したら動いたのですが、ところが、下記のような メッセージが出ました。 ------------------------------------------------------------ perl: warning: Setting locale failed. perl: warning: Please check that your locale settings: LC_ALL = (unset), LANG = "ja_JP.PCK" are supported and installed on your system. perl: warning: Falling back to the standard locale ("C"). ------------------------------------------------------------ このメッセージを表示させないようにするには、どうしたらよいか 教えてください。 環境は、Solari8 以下、perlのシェルスクリプト ------------------------------------------------------------ #!/usr/local/bin/perl # ($day, $mon, $year) = (localtime(time))[3..5]; printf("Today : %04d/%02d/%02d\n",$year+1900,$mon +1,$day); ($sec, $min, $hour) = (localtime(time))[0..2]; printf("Time : %02d:%02d:%02d\n",$hour,$min,$sec); ------------------------------------------------------------ |
|
>>4889 68user なるほど。ここらへんはzipやrarなどと比べると不便ですね。 ありがとうございました。 |
|
>>4891 べた 「perl: warning: Setting locale failed」で検索すれば出てきますが、 環境変数 PERL_BADLANG を設定することで回避可能です。詳細は検索願います。 |
|
>4889 ありがとうございます。ヤフーのオークション で見てみます。 |
|
>>4893 68user ありがとうございます。 perlのスクリプトを実行時のみ有効にしたいのです。 perlのスクリプト内で記述する場合はどのように 定義すればよいのですか。 |
|
>>4895 べた perl コンパイルの際の Configure 時に設定する方法があります。 それが無理なら #!/bin/sh PERL_BADLANG=0 /foo/bar/baz.pl と wrapper を作るか、env コマンドで #!/usr/bin/env PERL_BADLANG=0 /usr/local/bin/perl とする手もあります。 |
|
>>4896 68user ありがとうございます。 #!/usr/bin/env PERL_BADLANG=0 /usr/local/bin/perl # とperlのスクリプト内に記述して、実行したのですが、 処理がとまったというか、何も応答が返ってきません。 |
|
>>4897 べた なるほど FreeBSD 5.2.1-RELEASE では動きますが、Linux では確かに 無限ループしてますねぇ。 > #!/usr/bin/env PERL_BADLANG=0 /usr/local/bin/perl これは FreeBSD 5.2.1-RELEASE では /usr/bin/env PERL_BADLANG=0 /usr/local/bin/perl ./hoge と解釈されますが、Linux や Solaris では /usr/bin/env "PERL_BADLANG=0 /usr/local/bin/perl" ./hoge となるため PERL_BADLANG="0 /usr/local/bin/perl" という環境変数が設定されつつ /usr/bin/env ./a が実行されるものの、./hoge のシェバング行にはまた同じ内容が 書かれているため、永遠に execve("./a"); が実行されるということですね。 参考: http://x68000.q-e-d.net/~68user/unix/pickup?%A5%B7%A5%A7%A5%D0%A5%F3%A5%B0 の Tips.2 というわけで env コマンドを使うやり方は移植性がありませんでしたが、 #!/bin/sh PERL_BADLANG=0 /foo/bar/baz.pl なら動くと思います。Linux では動きました。 |
|
>> 4898 > #!/bin/sh > PERL_BADLANG=0 /foo/bar/baz.pl >なら動くと思います。Linux では動きました。 で動きました。 色々とありがとうございました。 |
|
さきほどお問い合わせページよりご指摘いただきました、ジャンル一覧リンク切れの件、 修正しました。ご指摘ありがとうございます>連絡いただいた方 |
|
2年半ぶりの人材募集です。 http://x68000.q-e-d.net/~68user/tmp/job2.html |
|
こんにちわ。 findコマンドについて教えてください。 ■要件 カレントディレクトリに存在する31日以前のファイル&ディレクトリの削除を実施したい ■コマンド find ./ -mtime +31 -exec ls {} \; -exec rm -r {} \; >> test.log ■結果 ./20070101.trc find: ./aaa: No such file or directory ■質問1 カレントディレクトリに削除対象となる日付のファイル20070101.trcとディレクトリaaaを配置しています。 削除ファイルの一覧を取得したいため-exec ls {} \;を使用したのですが、 ログには./20070101.trcしか記載がありません。 ディレクトリも表示させるには何かオプションが必要なのでしょうか? ■質問2 実行結果としては削除は行われているのですが戻り値がエラーとなっています。 find: ./aaa: No such file or directoryの部分を指していると思うのですが、 削除後にfindしているように見受けられますがこのエラーの出力原因はなんでしょうか? 1と2の解決方法がありましたら教えてください。 宜しくお願いします。 |
|
>>4902 TKC まず、-exec の代わりに -ok を使って何が実行されているか確認しましょう。 > ディレクトリも表示させるには何かオプションが必要なのでしょうか? ./aaa/ の中身が空ではないですか? 空であれば ls ./aaa しても何も 表示されないと思います。 > 削除後にfindしているように見受けられますがこのエラーの出力原因は > なんでしょうか? find はディレクトリを下降してファイルを探しますが、おそらく ディレクトリを削除した後にそのディレクトリに下りようとしている のではないでしょうか。-prune を組み合わせれば下りないように できるかもしれません (試していません)。 |
|
>>4903 68userさん -okを使用して確認しました。 ご察しの通り./aaa配下が空のため< ls ... ./aaa >となり 結果的にログに./aaaが出力されていないことがわかりました。 findのエラー原因はやはり削除後に配下に移動しているものと思われます。 rmにデータが渡る前に-pruneを使い解消されました。 最終的には下記で行いたい処理ができました。 find ./ -mtime +31 -prune -exec ls -d {} \; -exec rm -r {} \; どうもありがとうございました。 |
|
いつもこちらにはお世話になってます。 flexについての指摘です。 http://x68000.q-e-d.net/~68user/unix/pickup?flex GNUでは作成・配布してないようです。 http://ftp.gnu.org/gnu/flex/flex.README |
|
>>4906 hoge > GNUでは作成・配布してないようです。 そうなんですか。知りませんでした。 ftp://ftp.gnu.org/non-gnu/flex/flex.README Flex is a free implementation of the well-known Lex program for lexical analysis. Since it is not (and never was) a GNU package, we don't distribute it here. Please see http://flex.sourceforge.net for the latest release and information. や flex-2.5.4 (1997年リリース) の README Note that flex is distributed under a copyright very similar to that of BSD Unix, and not under the GNU General Public License (GPL), except for the "configure" script, which is covered by the GPL. などを見るに、確かに flex が GNU ではないようですね。 しかしこの書籍 http://www.ascii.co.jp/books/books/detail/4-7561-3097-6.shtml Flex入門 シリーズ:GNUシリーズ GNUのツールの1つとして広く使用されているGNUのLexical Scanner Generatorで あるFlexの解説書。豊富な例とともに機能を詳細解説 はどうなんですかね。 wikipedia(en) には http://en.wikipedia.org/wiki/Flex_lexical_analyser Flex is a non-GNU project, but the GNU project developed the manual for Flex. とありますが、「GNU が作った flex のマニュアル」の翻訳が上記の「Flex 入門」 だったりするんでしょうか。 |
|
>>4907 68user うーん、やはり 2.5.3 以前は GNU だったのだろうか。 http://cocoa.2ch.net/unix/kako/970/970914036.html より ----- ここから ----- Flex はそもそも non-gnuに移動になって、 下の Flex 2.5.4の COPYING みたいなことになっている。 -=-=-=-=- Flex carries the copyright used for BSD software, slightly modified because it originated at the Lawrence Berkeley (not Livermore!) Laboratory, which operates under a contract with the Department of Energy: Copyright (c) 1990 The Regents of the University of California. All rights reserved. This code is derived from software contributed to Berkeley by Vern Paxson. The United States Government has rights in this work pursuant to contract no. DE-AC03-76SF00098 between the United States Department of Energy and the University of California. Redistribution and use in source and binary forms with or without modification are permitted provided that: (1) source distributions retain this entire copyright notice and comment, and (2) distributions including binaries display the following acknowledgement: ``This product includes software developed by the University of California, Berkeley and its contributors'' in the documentation or other materials provided with the distribution and in all advertising materials mentioning features or use of this software. Neither the name of the University nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. This basically says "do whatever you please with this software except remove this notice or take advantage of the University's (or the flex authors') name". Note that the "flex.skl" scanner skeleton carries no copyright notice. You are free to do whatever you please with scanners generated using flex; for them, you are not even bound by the above copyright. ----- ここまで ----- 「non-gnu に移動」という記述はいろんなところにあるが、それを根拠に 「以前は GNU だった」と言いきれない。古い tarball も見つからないし…。 |
|
>>4908 68user > うーん、やはり 2.5.3 以前は GNU だったのだろうか。 flex-2.5.2/COPYING を確認しましたが、 >> 下の Flex 2.5.4の COPYING みたいなことになっている。 とほぼ同じでした。よって、以前は flex は GNU であったが、 ある時点から GNU でなくなった、などという事実はないようです。 |
|
>>4907 68user > http://www.ascii.co.jp/books/books/detail/4-7561-3097-6.shtml > Flex入門 > シリーズ:GNUシリーズ 後はこれだけが気になってしょうがないので、アスキーに「なぜ GNU シリーズなのか」という 問い合わせを投げました。返事来るといいなぁ。 # その前に訳者と思われる方にメールを投げたものの、user unknown で返ってきました。 |
|
問題を投げっぱなしにしてすいません。 PHPのコンパイルに必要だったので探していただけで、 flexについては全く知らないんです^^; > 「GNU が作った flex のマニュアル」の翻訳が上記の「Flex 入門」 > だったりするんでしょうか。 http://www.gnupress.org/book11.html GNU Press「Flex: The Lexical Scanner Generator」 http://www.asahi-net.or.jp/~wg5k-ickw/html/online/flex-2.5.4/flex_1.html 訳者の方による、「Flex入門」と同内容のページだと思われます。 ISBNの記述から、ご推察のとおり 「GNU が作った flex のマニュアル」の翻訳が「Flex 入門」 だと考えますが、いかがでしょうか。 |
|
http://x68000.q-e-d.net/~68user/net/net-1.html の[ホスト名とは?]を読んでいましたら、http//133.8.2.24/でhttp//www.cs.gunma-u.ac.jp と同じページが表示されるはずですと なっていますがが、http//133.8.3.11/でないと表示されないように思います。参考にさせて頂いています。 |
|
>>4912 hoge flex については更新しております。ご指摘ありがとうございます。 http://x68000.q-e-d.net/~68user/unix/pickup?flex 「GNU シリーズ」についてはアスキーより回答をいただいたのですが、 残念ながら Web での公開は不可とのことなので、墓場まで持っていき たいと思います。 >>4913 BK ありがとうございます。取り急ぎ IP アドレスのみ更新しました。 |
|
shで、文字列から文字列を取り出そうとしています。 ”aaa.bbb@test.cojp” から「@」より前と後を、 ”aaa.bbb" と ”@test.co.jp” を取り出したいのです。 どのようにすれば良いか教えてください。 |
|
>>4915 べた 変数 $email にメールアドレスが入っているなら、こんな感じでしょうか。 $ echo $email | sed 's/\(.*\)@.*/\1/' aaa $ echo $email | sed 's/.*\(@.*\)/\1/' @bbb.com |
|
耶� 闔逅珥蓚�� 鰲鉗 闔頏琺, 褌辣�邇 聽 � 繝� 硴繿� � 驟痳 � 艢裨珞褂 � 鱚閻顫 袱聹�� 鞐� 癈糂 繝� 闔驟�瑩�. 吭鉗 闔頏琺 粮髓鉗迯�� 硴蓐琿�� � 辣 鴈譛褌 � �瑜鱶 褌迺纃鰰, 邇 � 關鉐鴈 � 矼驟謗竡 銓鉋跌纃��. �鞳粳珮珱 闔驟鱶鴾 <a href=http://www.find-business.ru>跪�</a> 闔頏琺 |
|
iconvについて教えてください。 Solaris8で、iconvコマンドを使用しています。 今、使用している環境に、iconvコマンドが2つ入っています。 1./usr/local/bin/iconv 2./usr/bin/iconv 1と2は日付、サイズが異なり、1の方が、日付が新しく、サイズも大きいです。 環境変数のパスも両方設定されていて「usr/local/bin」のパスが 先あるので、whichコマンドで調べると、1の方を表示します。 シェルから、iconvを実施したいのですが、どちらの方を使えば よいのですか。 iconvとしてどうちがうのでしょうか。機能的にも違うのでしょうか。 1./usr/local/bin/iconv の場合 コマンドがエラーとなった場合、statusに、”0”か”1”が返る。 # /usr/local/bin/iconv -f SJIS -t UTF8 sjis_file.txt > utf_file.txt iconv: conversion to UTF8 unsupported # echo $? 1 # 2./usr/bin/iconv の場合 コマンドがエラーとなった場合、statusが、”0”となる。 エラーも表示されない。 # /usr/bin/iconv -f SJIS -t UTF8 contact_SJIS.txt > uft_file.txt # echo $? 0 # シェルから、iconvを実施したいのですが、どちらの方を使えば よいのですか。 iconvとしてどうちがうのでしょうか。機能的にも違うのでしょうか。 環境は Solaris8 sh(Bシェル) |
|
>4916 ありがとうございます。 expr index "${email}" @ や echo ${email} | awk '{ print substr($0,1,index($0,"@")-1)}' や ANS=`echo ${email} | awk '{printf "%s",index($0,"@")}'` 「@」が最初に現れた位置を取得して、cut で取り出し echo ${email} | cut -c1-`expr ${ANS} - 1` echo ${email} | cut -c`expr ${ANS} + 1` awkや、1回で取り出したかったので、expr でやったのですが、 expr index の形式使えないので、awkでやったのですが、 sed で置換する方法は気が付きませんでした。 ためして見ます。 |
|
>>4918 べた /usr/local/bin/iconv は GNU の libconv 同梱の iconv コマンド、 /usr/bin/iconv は Solaris 標準の iconv コマンドではないかと 思います。 GNU 版であれば、--version オプションを使うことで % iconv --version iconv (GNU libc) 2.3.4 Copyright (C) 2005 Free Software Foundation, Inc. (略) といった表示が得られるかと思います。 以下は Solaris 版と GNU 版の違いであったとして、という前提ですが、 機能差で選ぶなら↓を比較 (昔の Solaris 版 iconv は、不正なバイト列が あった場合即終了だった気がするのですが、現在はスキップという選択肢も 選べるんですかね? であればそれほど機能差はないかも) http://docs.sun.com/app/docs/doc/819-1210/6n3j74jpk?a=view http://www.gnu.org/software/libiconv/documentation/libiconv/iconv.1.html エンコーディングの多さで選ぶなら、/usr/local/bin/iconv -l と /usr/lib/iconv/iconv_data を比較。特に CP932 や UTF-8 などが絡む 場合は、手持ちの全ファイルを変換して結果を調べるくらいはやった 方がよいかと思います。 後は GNU が好きか、Solaris の世界で固めるのが好きか、でしょうか。 |
|
>>4919 べた expr や cut でもできますよ。 (cut の場合は @ が付きませんが。) $ expr $email : '\(.*\)@.*' $ expr $email : '.*\(@.*\)$' $ echo $email | cut -d '@' -f 1 $ echo $email | cut -d '@' -f 2 >>4918 べた Solaris には標準で /usr/local というディレクトリがないので、 68user さんの仰るとおりだと思います。 |
|
>>4921 zsh ありがとうございます。 exprやcutでの使い方ありがとうございます。 勉強になります。 |
|
WindowsXP IE6.0 SP2 の別の端末から書き込みを おこなったら以下のエラー画面が表示されました。 何かインストールされていないものがあるのでしょうか。 エラー : 内部エラーが起こりました。 http://x68000.q-e-d.net/%7E68user/cgi-bin/wwwboard.cgi の実行ができませんで した。 おそらくCGIプログラムの不具合が原因です。 もし、こちらのファイル設定ミス・リンクミス・CGI の不具合などが原因であった場 合は早急に修正します。 の画面が表示されます。 |
|
>>4918 べた >>4921 zsh 説明ありがとうございます。 それでなのですが、ステータスが返ってくるということで、 「/usr/local/bin/iconv」を使っています。 Bシェルで実行しています。 iconvコマンドをパイプでつないで、連続で実行しています。 /usr/local/bin/iconv -f SJIS -t UTF-8 file_sjis.txt | /usr/local/bin/iconv -f UTF-8 -t UTF-16 > file_utf.txt 1回目のiconv(パイプの左側のiconv)がエラーとなったとき、 ステータスがエラーで返ってきません。 エラーを判断したいのですが、どのようにしたらエラーと判断 できるでしょうか。 /usr/local/bin/iconv -f SJIS -t UTF8 file_sjis.txt | /usr/local/bin/iconv -f UTF-8 -t UTF-16 > file_utf.txt echo $? iconv: conversion to UTF8 unsupported 0 ”0”が返却。 /usr/local/bin/iconv -f SJIS -t UTF-8 file_sjis.txt | /usr/local/bin/iconv -f UTF-8 -t UTF16 > file_utf.txt echo $? iconv: conversion to UTF16 unsupported 1 ”1”が返却。 |
|
>>4923 べた ありがとうございます。 $ expr $email : '\(.*\)@.*' $ expr $email : '.*\(@.*\)$' $ echo $email | cut -d '@' -f 1 $ echo $email | cut -d '@' -f 2 どれでも、取り出せました。 |
|
>>4925 べた > 1回目のiconv(パイプの左側のiconv)がエラーとなったとき、 > ステータスがエラーで返ってきません。 > エラーを判断したいのですが、どのようにしたらエラーと判断 > できるでしょうか。 bash なら PIPESTATUS を使えばよいですが、sh であれば 終了ステータスは取得できないと思います。しょぼいですが、 パイプを使うのをやめるのがよいかと思います。 >>4924 べた > WindowsXP IE6.0 SP2 の別の端末から書き込みを > おこなったら以下のエラー画面が表示されました。 IP アドレスや発言内容などから SPAM と判定されたのかもしれません。 特に判定精度の高いものではないので、頻発するようならご連絡ください。 |
|
>>4927 68user ありがとうございます。 sh できないんですね。 出力結果がなければ、出力結果をパイプで渡さなければ 「&&」でいけるのでないかと覆いますが。 パイプを使わず個々に行います。 |
|
Solaris8 なのですが、「/var/log/syslog」に、 TCPコネクションのログを出力させたいのです。 telnet、ftpなど、接続したログを出力したいの です。 どのようにすればよいのでしょうか。 「/etc/syslog.conf」には、以下の様な記述をしています。 user.notice /var/log/syslog syslogのデーモンも再起動したのですが、出力されません。 |