プロが教える店舗&オフィスのセキュリティ対策術

OSにCentOS5.7、シェルはtcshを利用しています。よろしくお願いします。

lsコマンドで表示されるファイルの色分けを変更するために、
ホームディレクトリに以下の設定ファイルを作り(~/.dir_colors)、
######## .dir_colorsの中身 ###################
NORMAL 32
FILE 32
DIR 34
OTHER_WRITABLE 32
.txt 31
###########################################

> eval `dircolors ~/.dir_colors -c`
として設定を反映させたつもりだったのですが、
実際にlsを実行してみると、いくつかの.txtファイルのうち、
ちゃんと赤色(31)で表示されるものと、緑色の太字(32;01)で表示されるものがありました。


>ls -l
として、実行権限を調べると、
実行権限のないテキストファイル(-rw-r--r--)が赤字で表示され、
実行権限つきのテキストファイル(-rwxr--r--)が緑太字で表示されていました。


================================================================================
実行権限の有無で、.dir_colors内の記述が反映される・されない、ということはあるのでしょうか?
(緑太字(32;01)はそもそも.dir_colors内に記述していないのですが、lsで表示されてしまいます。)
権限の有無に関わらず、同じ拡張子名に同じ色を当てたいのですが、良い方法があればご教授お願いします。
================================================================================

A 回答 (3件)

こちらで確認したところ、LS_COLORSにないものは、デフォルトの設定が使われるようです。


EXEC
と、EXECに空のものを追加すると、無効にできるようです
そのかわり、全ての実行属性ファイルが色無しになってしまいます。
    • good
    • 0
この回答へのお礼

ご回答いただきありがとうございます。
こちらの環境でもご指摘の点が確認できました。

実行権限のあるなしに関わらず、
拡張子で色分けすることはかないませんでしたが、
「EXECに指定しない ---> デフォルトの設定が反映される」
ということが確認できただけでも収穫になりました。

重ねてお礼申し上げます。

お礼日時:2011/11/16 02:35

LS_COLORSが無い、ということは、設定できていない、ということです。



> eval `dircolors ~/.dir_colors -c`
をどこに書きました?あるいは、どこで実行してますか?
dircolors自体は環境変数LS_COLORSを設定するためのシェルでのコマンドを出力するプログラム。それをevalで現在のシェルに適用することで、LS_COLORS環境変数を設定、lsはLS_COLORS環境変数の中身を見て色を決定します。

なので
・evalを実行したシェルと、それから呼び出されたシェルでのみ有効。
・ログアウトしたら 無効。設定のしなおし
となります。
常時使いたいときは、.loginとか.cshrcとかに記述します
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
eval以下の命令文は~/.tcshrcに書きこんでいます。
前回の補足で私の方に勘違いがありまして、環境変数LS_COLORSはどうやらちゃんと設定されているようでした。(setコマンドで変数を確認していました。申し訳ありません。)
以下がその内容です。

LS_COLORS=no=32:fi=32:di=34:ow=32:*.txt=31:

しかし、これでもなお問題が解決されず、実行権限つきのファイルが緑太字で表示されてしまいます。

お礼日時:2011/11/15 12:08

.dir_colorsの中身、それだけですか?


実行属性付きファイルの色は EXEC で指定します。
正しく設定できていれば、echo $LS_COLORSとしたときに
no=32:fi=32:di=34:ow=32:*.txt=31:
と表示されるはずです。そうではなくて、中に
ex=32;01
とかも混っていませんか?

この回答への補足

素早いご返答ありがとうございます。

.dir_colorsの中身は、上記したもののみで、
EXECでも指定していなかったのですが、
ご指摘いただいたとおりにechoしてみると

>echo $LS_COLORS
照合パターンに合いません.

となっており、$LS_COLORSという変数名が存在しませんでした。
正しく設定が反映されていないということでしょうか?

>eval `dircolors ~/.dir_colors -c`
で設定を反映したつもりだったのですが、
この方法が間違っているのでしょうか?

補足日時:2011/11/14 11:19
    • good
    • 0
この回答へのお礼

すいません、補足の記述の追加です。
LS_COLORSという変数名はないのですが、
COLORSという変数名で以下のような設定がありました。

>echo $COLORS
/etc/DIR_COLORS.xterm

お礼日時:2011/11/14 11:34

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!