ls コマンドにおける日付の日本語表記 61
慣れ親しんだ表記が一番良いのだが… 部門より
kubota 曰く、 "GNU libc の国際化や libiconv など、Linux の国際化関連で活躍している Bruno Haible さんから、「GNU fileutils に含まれる ls コマンドの、-l オプション使用時の日付の表記だけど、日本語ロケールのときには日本語表記がデフォルトでも構わない?」とのメールをもらいました。それに対して日本語がいいけど、現状の「mm月 dd yyyy」というのは変だよ。正しくは「yyyy年 mm月 dd日」だよと答えたところ、Solaris 8 では「mm月 dd日 yyyy年」だぞ、Solaris はずっと前から日本語化されているというのに、それが訂正されないのはなぜだといった意味の回答をもらいました。
上記の Solaris の日付表記は、月日のカラム位置が「mm月 dd日 hh:mm」というタイプの表記と揃うことを優先したように思われます。が、単独だと「mm月 dd日 yyyy年」よりは「yyyy年 mm月 dd日」のほうが良いのも事実。私としては、「yyyy年 mm月 dd日」のほうがいいけど月日を揃える目的で「mm月 dd日 yyyy年」を採用した Solaris のでも十分すぎるほど許容範囲内。が、現状の GNU fileutils の「mm月 dd」はちょっといただけないです。
ls の日付の日本語表記は、どういうふうにするのが望ましいのでしょうか。あるいは、あなたが許容できる/できないのはどんな表記?
Solaris8 な表記方法でオレは十分だとは思う。でもこれはあくまでUNIX使いとしての話。実際にそれでシステムを組むという話になったら、「これは…」という意見が出てくるであろう。管理者/ユーザ/その他いろいろ立場はあるだろうが、それぞれの立場においてどんな表記方法が一番良いのだろう?
今、ftp が使えない場所 (職場) で... (スコア:2)
# さ、現実逃避してないで仕事しろ > 自分
日本語化されたlsに年号? (スコア:2)
#もちろんjapanese/japan/ja localeで。
通常、ls -lで、最近のファイルに年号なんて出ない場合もあると
思いますが。
ちょっと時間が経つ(数日かな?数週間?)までは mm年dd日 hh:mm じゃ
ないですか?
んで、時間が経つと、最後の時刻の部分が年号(2001とか)になると。
#ファイルシステムによるのか? ・・・でも一般的なUFS/NFSだがね。
しかし、Solarisを引き合いに出すなら、原典をあたりゃいいやん、と
思ってしまうのはわたしだけ?
#SunはLinux or GNUに非協力的なわけじゃないんだしさ。
---- redbrick
失礼(汗)、 (スコア:2)
mm月dd日 hh:mm ですね(汗)。
---- redbrick
日本ローカルなら (スコア:2, 興味深い)
皇紀とか。
SKKでは (スコア:2)
Re:日本ローカルなら (スコア:1)
元号表記なら, date ユーティリティなら +%EY なり +%Ex なりを指定すれば可能。(Solaris の場合。) その他のユーティリティについては,日付の形式を 外部から指定できるようになっているかどうかに依存。
皇紀表記は,そのためのロケールさえ作れば可能。
Re:日本ローカルなら (スコア:1)
> 皇紀とか。
年は元号、月は睦月とか師走とかの漢字表記。
当然日付は漢数字
#あ、朔日とか晦日とかもいいな…
「それがどうした、おれたちには関係ない」
いっそ (スコア:2)
-- wanna be the biggest dreamer
Re:いっそ (スコア:1)
>あれっ,llってコマンドが標準で既にありますよ:)
それって
alias ll ls -l
じゃないですか?
Re:いっそ (スコア:1)
HP-UXのmanをみると…
#ls には、次のような指定形式に対応する省略形式のコマンド名も
#用意されています。
#
# l は ls -m と等価です。
# ll は ls -l (英字Lの小文字) と等価です。
# lsf は ls -F と等価です。
# lsr は ls -R と等価です。
# lsx は ls -x と等価です。
となっています。
でもエイリアスで設定しているのかlsプログラムの中に
組み込まれているかは私は判りません。
Re:いっそ (スコア:2)
しかし標準でこの alias 群はぞっとするなぁ^^;
-- wanna be the biggest dreamer
Re:いっそ (スコア:2)
Re:いっそ (スコア:1)
おぉ、気がつかなかった(ヲイ!)
ってな事でさっそく確認!
#$ which ll
#/usr/bin/ll
ってな訳でエイリアスではないっすね。
やばい (スコア:2, 興味深い)
なんだか、ls の日付表現はロケール依存ではなくて ISO 形式で決め打ちにしようという方向へ話が進んでいる... これじゃいったい何のための議論かわからないよ~。議論に参加してもらったみなさんにも悪いし。
上記の Markus Kuhn さんの意見、彼の傲慢さがよく出ています。世界には実にさまざまな考え方の人がいるのだ、というふうには考えずに、数ヶ国からの出身者だけからの集まりであるメーリングリスト参加者だけで世界中の人々のニーズを推し量ることが正当であると考えています。
たしかに彼はよく勉強しているところもあるのだけど、本でいくら勉強したって、平均的な日本人 (××人) が何を知っていて何を知らなくてどんなことを考え、感じて、ということは絶対にわかりっこない。
ちなみに彼がよく勉強しているとは思えないところ。彼は、XFontSet が何かという、X Window System の国際化に携わる人なら基本中の基本と言えることさえ、知らなかった。たとえて言えば、日本語を勉強するのに、日本人でさえほとんど知らないような単語や故事成語は勉強したけどひらがなを勉強していないようなもの。
[gnu.org]Re:やばい (スコア:1)
Re:やばい (スコア:1)
POSIX.2 (ISO/IEC 9945-2) では "POSIX" 及び "C" の両ロケールにおいては,ls -l の形式が決まっていて,少なくともそれは ISO 8601 ではないのですが。
そもそも ls -l の日付・時刻の形式で,
という書き方ができて,それが不自然ではない,というのはアメリカ式表記だからで,ヨーロッパでも月と日とが入れ替わるだけなので,
になって,これもそれほど不自然ではない。 ところが,これが日本や中国や韓国だと
になるので,"月 日" の位置がずれて気持ち悪い。しかし,"月 日" の位置がずれないようにすると "月 日 年" という,自然言語として不自然な並び順になってしまうのです。
もともとが,欧米では (たまたま) うまくいくけれど, 東アジアに来たとたんに困ってしまうやり方だから, すっきりした解決はできないのではないでしょうか。 (ISO 8601 も実質は東アジア方式だから,同じ問題があるはずですけどね。)
strftime() (スコア:1)
皆で苦労して実装したんだよ。使ってやって。
--time-style=posix-iso形式 (スコア:1)
-rwxr-xr-x 1 username group 545 2001-03-16 script.sh
はいかが。
GNU fileutilsの
$ ls -l --time-style=posix-iso
のスタイルです。
慣れ親しんだ表記が一番 (スコア:1)
個人的にはhoge-tsuki,fuga-hi…がいいな、などと言ってると、日本のUni9lo^h^h^hx
人口1.2億人(希望)、表記の好みも千差万別だ。
とはいっても、好みの表記は何種類かにおさまるのでないかなぁ。。
であれば、環境変数使って as yuo like ..で選択できるようにしてしまえば良いのかと、、。
##どっかの /.-j みたいに、一部分にしか反映されないと困っちまうけど((^^;;。
−・・ ・ ・ −・−・ ・・・・ −−−
手垢で汚れた少年漫画とソースの香りがいい感じ
Emacs の dired だと... (スコア:1, 参考になる)
オフトピ気味ですんません。
実は、この日付表記のせいで LANG=japanese などの 環境だと Emacs の dired-mode がうまく動かなくなってしまう。 元はといえば dired-mode が日付のフォーマットを POSIX Locale だという前提で作られているのが悪いんだけど。
だからなんだけど、私は ~/.emacs の中に
とか書いてみています。
Re:Emacs の dired だと... (スコア:2)
Re:Emacs の dired だと... (スコア:2, 参考になる)
Re:Emacs の dired だと... (スコア:1)
Emacs の ange-ftp だと... (スコア:1)
-- cooper
日付表示は、並び順が大切 (スコア:1)
年月日の並び順を、適当な記号で区切ってもらえれば、よひと思っている。
灰色の脳細胞のによれば (スコア:1)
★田舎に生息する時代遅れのFortran&COBOLガイなオタク★
Re:灰色の脳細胞のによれば (スコア:1)
アメリカは mm/dd/yyyy でヨーロッパは dd/mm/yyyy なんて (逆だったっけ?)、変すぎ。ぼくは、02/03/2001 なんて表記を見たらそこで脳細胞が停止してしまいます。というわけで、ポワロも人のことは言えないはずだと思うぞ。
01/02/03さて何日でしょう? (スコア:1)
全ての表記で首尾一貫していれば問題は無いでしょう. ヨーロッパ圏では階層分類の小項目側から記述するのが普通ですから, 日付についてもdd/mm/yyなのは自然だと思います.
ただ, この小項目側からの表記が不自然で非論理的というのには私も賛成です. だってコンピュータ言語を見たってクラス/構造体→要素の順番で記述しますし, リンネによる生物の学名表示も属名→種名ですからね.
個人的に一番困ったのが日本人の私が英連邦のシンガポールからアメリカのサポートセンタに連絡した時のこと. どう記述しても誰かが間違えそうなので YyyMmmDdd として各数字の属性を明示的に指定しました.
Re:01/02/03さて何日でしょう? (スコア:1)
例えば[hogehoge.phys.sci.hoge-u.ac.jp]だと、「日本のhoge大学の理学部の物理学科のhogehogeという計算機」と小項目からの表記ですが、不自然でしょうか?
Re:01/02/03さて何日でしょう? (スコア:2)
# で、ここで出てくる定番が、
# YYYYMMDD *x;
# MMDD *y;
# の時、y で x をポイントできないが、
# DDMMYYYY *x;
# DDMM *y;
# ならポイントできる、
# という何が便利なんだか良く分からないへ理屈。:-)
Re:灰色の脳細胞のによれば (スコア:1)
というか,年のところが4桁なら,少なくともそれは年だとわかるのでいいのですが,たとえば "01/02/03" と書かれた場合,
わからなくて困ります.英語の文書の場合なんか, どこの人が書いたのかわからないと日付の解釈すらできないという….
私は ISO 8601 の形式で書きますけどね.2001-02-03 とか.
表記はascii文字だけが良い (スコア:1)
termが合わせられない場合に,localeが日本語になっていると"ls -l"の表記に表示されない文字(日本語の"月"とか"日"ね)が文字化けする訳ですが,remoteからアクセスしてメンテする場合に気になることがありますね.
いつでもascii文字だけの方が,他のエラーかと気にならなくてグーだと思います
kero
Re:表記はascii文字だけが良い (スコア:2)
Re:表記はascii文字だけが良い (スコア:3, すばらしい洞察)
ls を走らせてその出力を利用するソフトウェアは、ls 起動時に LC_TIME=C あるいは LC_ALL=C するなど、適切な処置を講じるべきです。
ls の出力形式に頼ったプログラミングをしていて誤動作を招くのは、日本ロケールだけではなく、世界中に共通する問題です。たとえ日本ロケールのみ、ls の時間表記を変えないことにしても、それを期待して作ったプログラムは日本以外で動かなくなってしまいます。また、IRIX や Solaris の動作を変更させるよう働きかけることはできないと思うので、やはり ls の時間表記に頼ったプログラミングは、するべきではありません。
また、問題は ls の時間表記だけにとどまらず、「not found」などのメッセージもその対象となります。もし ls の時間表記はロケールで不変であるべきとするなら、そういったメッセージも不変であるべきということになってしまいます。
Re:表記はascii文字だけが良い (スコア:1)
// kraymor
Re:表記はascii文字だけが良い (スコア:2)
-- wanna be the biggest dreamer
Re:表記はascii文字だけが良い (スコア:1)
Re:表記はascii文字だけが良い (スコア:1)
ただ,lsの出力を使うプログラム全部(ポータビリティの関係のないお気楽シェルプログラミングのようなものまで)を「ダサい」と否定しているような印象をうけたので,それは了見が狭いと思っただけ.
// kraymor
/区切りでよいのでは? (スコア:0)
無駄なく yyyy/mm/dd が良いと思いますけど。
この表現で年は間違わないだろうし、月と日の欄を誤解するかもしれないけど、/が入ってると日本人だったら間違わないと思うし日本語ローケルになっていない場合との区別もつきますし。
Re:/区切りでよいのでは? (スコア:1)
mm/dd HH:MM
という形でした(FreeBSD)。
日本語用なのに漢字が入ってないですが、シンプルで分かりやす
くとても良いです。
Re:/区切りでよいのでは? (スコア:1)
出力形式はなるべく統一してもらいたいです
ファイルのサイズや日付をコマンドで確かめるような人だったら
そんな親切にしてもらわなくても理解できると思うし
Re:/区切りでよいのでは? (スコア:3, 参考になる)
別スレッドでもありましたが、こういう場合は ls を呼び出す側が LC_ALL=C と設定してから呼び出すことが必要です。でないと、ls の日付形式だけならともかく、エラーメッセージとかもぜんぶ英語でないといけない、ということになってしまいますから。
漢字表記もいいけど、この形式も、けっこう気に入りました。古いファイルで年が後ろにいってしまう場合がちょっといやだけど。月日のカラムを合わせるのを放棄して年を前に持ってくるのでもいいけど...
yyyy/mm/ddって (スコア:1)
JISはyyyy-mm-ddだし。。。
mm/dd/yyを無理やり輸入したように思えないこともないんだけど、誰か知ってる人いますかね?
Re:yyyy/mm/ddって (スコア:3, 興味深い)
そのむかし,日本における locale's appropriate date format ってなんだろうと,調べたことがあります.
JIS では yyyy-mm-dd となっているけれど,これは ISO の翻訳規格で,標準化関係以外では殆ど使われていなかったし, mm/dd はよく使われていたけれど,年まで入れた形式になると, あまり標準といえるほどのものはなかったと思います.
最近よく目にするのは,食品の賞味期限などに使われる形式で, これらはたいてい yyyy.mm.dd. になっています.
yyyy/mm/dd は,Windows 日本語版のデフォルトが yy/mm/dd になっているのと関係があるのかな,という気はしますが,確乎としたものはありません.(ちなみに,日本語 MS-DOS の dir や date コマンドで使われる形式は yy-mm-dd でした.)
Re:yyyy/mm/ddって (スコア:1)
補足すると,賞味期限では yy.mm.dd 形式も少なからずあります。
でも,ややこしいことに JIS の日付形式規格では元号を使う日付表記には区切り文字としてピリオドを使うことになっているのです。 たとえば,"平成13.12.21" とか。もっとも,この表記は JIS 規格の 奥付くらいでしかお目にかかれませんが。
でも,こういう規格があると,たとえ全く使われていないような規格でも,「他規格との整合性が云々」とか言い出す人たちがいて,現実に使われている yyyy.mm.dd 形式を標準にすることには反対したりするわけです。
でも,ハイフン区切りにしろという JIS 規格があるのに,なんで食品関係の日付はピリオド区切りになっているのでしょうか。農林省と通産省との縄張り争いの結果? だとしたら,やだなあ。
年月日の順番は決まりとして、/以外の適当な文字がい (スコア:1)
数値化したときにソートできないのってナンセンス。
区切り文字は漢字もありだとは思うけど、
記号のほうが短くていいかな。
/は特集文字列なのでできれば避けたい。
Winは\だから/を使っているが。。。
無難なところで「-」かな
2001-01-01 01:01
ついでに日付と時間も10の位の0補完が理想
Re:年月日の順番は決まりとして、/以外の適当な文字が (スコア:1)
そういうあなたに,ISO 8601。
日付の形式は yyyy-mm-dd で,時刻は HH:MM:SS 。 日付・時刻をまとめて表示したければ yyyy-mm-ddTHH:MM:SS とかけばいいし, 秒の単位以下まで書きたければ, HH:MM:SS.ssssss と無限に続けられる。(秒以下を省略したければ,:SS 以降を省けばよい。)
さらに,timezone を指定したければ,例えば日本時間の場合, グリニッチ標準時から9時間進んでいるので最後に +09:00 を追加して,
と書けばよい。どうです,いいでしょう?
IRIXだとhh時mm分です (スコア:2)
drwx------ 6 user group 4096 10月 22日 12時19分 Mail
drwx------ 3 user group 24 4月 9日 2001年 News
drwxr-xr-x 2 user group 20 11月 21日 15時09分 bin
drwxr-xr-x 2 user group 4096 10月 22日 09時36分 document
drwxr-xr-x 2 user group 4096 9月 18日 08時31分 homework
drwx------ 2 user group 9 4月 9日 2001年 nsmail
drwxr-xr-x 2 user group 9 9月 9日 12時40分 public_html
drwxr-xr-x 2 user group 9 9月 5日 01時45分 tmp
というようにhh時mm分となるようです。
Re:IRIXだとhh時mm分です (スコア:1)
Re:文字数は増えてしまいますが (スコア:1)
>でも, やはり
>yyyy-mm-dd あるいは yyyy/mm/dd
>が一番いいと思う。
に一票です。本当に日本語の表記にしたいなら、 漢数字+縦書きにしなきゃらなんし(嘘)
というより、Solaris2.5.1で初めて日本語表記に接して、 なんだかなじめなかったのでわざわざ英語表記になるよう (当時の)GNU fileutilsを入れた記憶があるんですが…