- PR -

ls -alコマンドの属性表示について

投稿者投稿内容
山ぱっぱ
常連さん
会議室デビュー日: 2005/06/04
投稿数: 21
投稿日時: 2005-06-11 14:34
ls -alコマンドですが表示上、下記になります。

-r-sr-xr-x 1 root bin 7196 10月 18日 2002年 /usr/lib/utmp_update
drwxr-xr-x 3 root bin 1024 2月 17日 2003年 .
lrwxrwxrwx 1 root root 14 2月 17日 2003年 /usr/lib/lpmove -> ../sbin/lpmove

ファイルの場合は最後の項目がファイル名称になりますが、
d:ディレクトリ時は.となってしまいます。
ディレクトリ名称自体を表示させたい場合は、どうすべきでしょうか?

また、同様ですが、l:シンボリックファイル時はシンボリックファイル名のみ
表示させたい場合もどうすべきでしょうか?

ご教示頂ければ幸いです。


[ メッセージ編集済み 編集者: 山ぱっぱ 編集日時 2005-06-11 14:46 ]
angel
ぬし
会議室デビュー日: 2005/03/17
投稿数: 711
投稿日時: 2005-06-11 15:18
こんにちは。

えーと、こちらに返信で良いのかな…。

さて、当方の ls では、山ぱっぱさんのような出力にならないのですが、どのような環境で実行されてますか ?
具体的には、当方で“ls -al”もしくは“ls -al ディレクトリ”というコマンドを実行した場合、右端のカラムは、上位のディレクトリを含まないファイル名 ( basename と言うべきか… ) が表示されます。

当方の環境は、Fedora Core 1、ls (coreutils) 5.0 です。
alias は設定されてますが、せいぜい“ls=ls --color=tty”なので、大勢には影響ないかと思います。

また、“-l”オプションでは、シンボリックリンクはリンク先ファイル名の情報がどうしても出るようです。( 抑止するようなオプションは見当たりませんでした )
目的によっては、別の手法が取れるかもしれません ( 例えば“-F”オプションとか ) ので、最終的な目的も教えていただけると、コメントしやすいかと思います。

以上、ご参考まで。

追記:一応 alias なしの ls も試してみましたが、出力は変わらずです。こんな感じ。

$ ls -al /usr/lib
合計 129676
drwxr-xr-x 72 root root 32768 5月 12 04:03 .
drwxr-xr-x 16 root root 4096 4月 25 2004 ..
drwxr-xr-x 4 root root 4096 3月 14 2004 GConf
drwxr-xr-x 3 root root 4096 3月 14 2004 ImageMagick-5.5.6-Q16
-rw-r--r-- 1 root root 436 1月 7 2004 Mcrt1.o
drwxr-xr-x 2 root root 65536 3月 14 2004 Omni
-rw-r--r-- 1 root root 1240 1月 7 2004 Scrt1.o
lrwxrwxrwx 1 root root 16 3月 14 2004 X11 -> ../X11R6/lib/X11
…(以下略)

[ メッセージ編集済み 編集者: angel 編集日時 2005-06-11 15:31 ]
山ぱっぱ
常連さん
会議室デビュー日: 2005/06/04
投稿数: 21
投稿日時: 2005-06-11 15:35
どうも早急なご返信ありがとうございます。
最終的には、業務でファイル&ディレクトリー&シンボリックの
各パラミッション情報を調査(設計書上で付き合わせ)します。

しかし、サーバ数も数百とあるので、dosバッチで簡易的なPGを
作成したのですが、ls -alコマンドですと下記のようにがディレクトリー
&シンボリックが表示されない状況です。
理想は、ls -alコマンドで、ファイル時の表示(ファイル名が表示)
に1度でしたいのですが。。

10数年、ホスト系業務だったんですが、ここ1年でクラサバ系の担当となり
日々悪戦苦闘する毎日です。

お手数ですが、ご教示頂ければ幸いです。

angel
ぬし
会議室デビュー日: 2005/03/17
投稿数: 711
投稿日時: 2005-06-11 17:29
えーと、環境は…(^^;

さて、ファイル種・パーミッション・ファイル名を純粋に列挙するのであれば、ls が向いているかどうかは微妙です。perl等でスクリプトを組んだ方が早いようにも思います。

ただ、代わりに -printf オプション付の find を使う手はあるかもしれません。

・find /usr/lib -printf '%m %p\n'

とか。
ファイルの種類を表示するオプションは無いようですが、次のような対処もできるでしょう。

・find /usr/lib \( -type f -printf '- %m %p\n' \) -o \( -type d -printf 'd %m %p\n' \)

いずれにしても、パーミッションが 8進 3〜4桁表示にはなりますが。

以上、ご参考まで。

[ メッセージ編集済み 編集者: angel 編集日時 2005-06-11 17:31 ]
ぽんす
ぬし
会議室デビュー日: 2003/05/21
投稿数: 1023
投稿日時: 2005-06-11 20:07
環境もそうなんですが、何をやりたいのか分からないんですが...
・シンボリックリンクそのものを見たいのか、シンボリックリンクを
 辿った先を見たいのか?
・ファイル名だけでよいのか?シンボリックリンク先のファイルの
 情報は必要ないのか?
といったあたり。
シンボリックリンクを辿るなら ls -alL とか。

数百台もあるサーバの情報をチェックしてつきあわせる必要があるなら、
そこでまたやらなきゃならないことがあるわけだし、それなら最初から
Unixプログラマに専用のプログラムを書いてもらったほうが結局は
ずっと少ない工数で済みそうな気がします。
# readdir()してstat()なりlstat()なりして、S_ISDIRマクロと
# S_ISLNKマクロを使ってゆく感じ。

[ メッセージ編集済み 編集者: ぽんす 編集日時 2005-06-11 20:09 ]
山ぱっぱ
常連さん
会議室デビュー日: 2005/06/04
投稿数: 21
投稿日時: 2005-06-12 01:42
angelさん、ぽんすさん、色々ありがとうございます。
超初心者の私目に教示頂きありがとうございます。

如何せん、触ってまだ数週間ですので、どう質問していいのかわからない私への
質問に際し、ご丁寧にありがとうございます。

ただ、調査する上で色々本、並びにインターネットを莫大に調べても良くわからなかったので、掲示させて頂いております。

>・シンボリックリンクそのものを見たいのか、シンボリックリンクを辿った先を見たい
>のか?
 →シンボリックリンクそのものです。
>・ファイル名だけでよいのか?シンボリックリンク先のファイルの情報は必要ないの
>か?
  →ファイル名そのものです。

>ただ、代わりに -printf オプション付の find を使う手はあるかもしれません。
>・find /usr/lib -printf '%m %p\n'
 →このコマンドで大方目処がつきました。ユーザ名とグループ名もほしいので。。
  find /usr/lib -printf '%m %u %g %p\n' とするとほしい情報はgetできそうで  す。
  ちなみに%a〜%z迄、全部実行してみましたが、この説明一覧(例:%mはパラミッショ  ン情報等々)みたいなものは、ないのでしょうか

  ほんと、ご面倒おかけします。
  ご近所(私は東京)であれば、一杯おごりたい気分です。





angel
ぬし
会議室デビュー日: 2005/03/17
投稿数: 711
投稿日時: 2005-06-12 02:28
こんばんは。
引用:
ご近所(私は東京)であれば、一杯おごりたい気分です。


ありがたく、ご好意だけ頂戴致します。
引用:
ちなみに%a〜%z迄、全部実行してみましたが、この説明一覧(例:%mはパラミッション情報等々)みたいなものは、ないのでしょうか


おっと、マジで全部試したのですか…。それはなんというか、お疲れ様です。
そんな山ぱっぱさんに、man(1)と、Linux日本語マニュアル検索のJMを。

ただ、なんと言うか、このことを業務に応用するというのは、正直今のままではお勧めしません。
引用:
如何せん、触ってまだ数週間ですので、どう質問していいのかわからない私への
質問に際し、ご丁寧にありがとうございます。


この状態で何かあっても、山ぱっぱさんご自身では責任が取りきれないでしょう。
少なくとも、上司や同僚やベンダのサポートを先に取り付けるべき段階と思います。
※個人や趣味でやってるなら良いのですが。

それと、できれば環境を…。
コマンド等の挙動も、ソフトのバージョン等によってどうなるかは分からないので、憶測交じりでコメントせざるを得なくなるのです。折角のネタ、もとい情報がボヤけますし、コメントが付き難くなって勿体無いと思います。
OS が Linux なのかどうか ( この会議室では、Solaris等の話もたまに出ますから )、ディストリビューションやバージョンはどうなのか、といった事が分かるだけでも、大分違うのです。

以上、ご参考まで。
ぽんす
ぬし
会議室デビュー日: 2003/05/21
投稿数: 1023
投稿日時: 2005-06-12 02:38
上でもかかれていますが
man 1 find
で分かります。インストールされていればほとんどのコマンド、
API、設定ファイル等については man で説明が得られます。
# man の使い方は man man で。

あと、前回書き忘れましたが、ディレクトリがなんでも . と
表示されるということはまず無いので...
どんなディレクトリにも . と .. というエントリがありますが、
その表示でしょう。

[ メッセージ編集済み 編集者: ぽんす 編集日時 2005-06-12 02:40 ]

スキルアップ/キャリアアップ(JOB@IT)