ls --color:実行可能なハードリンクの色を指定するには?

ls --color:実行可能なハードリンクの色を指定するには?

NTFSドライブにいくつかのハードリンクを作成しましたが、これはハードリンク(複数のリンクを含む通常のファイル)ではなく、すべて実行可能で実行可能ファイルとして表示されます。

ext4ドライブでテストを実行しましたが、同じ問題が発生しました。 ls --colorを使用すると、複数のリンクが強調表示されているすべてのファイルがうまく強調されていますが、実行可能ビットがあれば「実行可能」色が表示されます(太字、強調表示されていません)。基本)。

さまざまなLS_COLOR設定を試しましたが、何も変更されません。

私の現在の〜/ .dir_colorsファイルは次のように単純化されています。

RESET 0
HARDLINK 44;37
#EXEC 01;32;41

私はこれをテストしました:

eval "$(dircolors ~/.dir_colors)"; ls -l --color

ファイルは色の変更、ハイライトなどで動作するようですが、HARDLINKの設定によっては、実行可能なハードリンクの色を指定することはできません。

更新:いくつかの調査の結果、「exeの色が優先されるようです」と言われています。 ls自体にハードコードされているようです。

もしそうなら、唯一の解決策は "ls"をカスタマイズすることです。そうですか?

ベストアンサー1

まあ、ソースコードを見るとずっと行くしかありませんでした。 :)

現在のカスタムバージョンを作成する以外に、ハードリンクされていない実行可能ファイルとは異なるハードリンクされた実行可能ファイルの色を指定する方法はありません。エルエス

Ubuntu 10.04.4で実行する方法は次のとおりです。

sudo apt-get build-dep coreutils
apt-get source coreutils
cd coreutils-7.4

src/ls.c を次のように修正します。

$ diff coreutils-7.4/src/ls.c coreutils-7.4.custom/src/ls.c
4107,4108c4107,4108
<         else if ((mode & S_IXUGO) != 0)
<           type = C_EXEC;
---
> //      else if ((mode & S_IXUGO) != 0)
> //        type = C_EXEC;

その後、すべてをコンパイルします。

debuild -us -uc -b

コマンドはエラーで終わりますが、新しいコマンドをコンパイルします。エルエス存在するソース/ls、期待どおりに動作します。 :)

代替ソリューション:

  • BashまたはPythonを使用してlsと同じスクリプトを作成します。
  • 以前はハードリンクを見つけるためにいくつかのエイリアスを使用しました。

    エイリアス findHardLinkedFiles_SortByInode='find. -type f -links +1 -printf "inode=%i %s=サイズ nlinks=%n ファイル=%p \n" |sort-n'

    エイリアス findHardLinkedFiles_SortBySize='find. -type f -links +1 -printf "%s=サイズ nlinks=%n inode=%i ファイル=%p \n" |sort-n'

ターミナル出力の色付け方法:

おすすめ記事