lsコマンドでディレクトリとファイルの色を変更する方法

公開: 2022-01-29

Bashでlsコマンドを実行した場合、表示されるディレクトリとファイルはタイプに応じて色分けされていることがわかります。 独自の配色をカスタマイズして、さまざまなテキストの色、背景色、および太字や下線などの書式を選択できます。

これがどのように機能するか

配色はLS_COLORS変数に保存されます。 現在の配色を表示するには、変数の内容を出力するようにBashに指示できます。

 エコー$ LS_COLORS

ファイルタイプと番号コードの長いリストが表示されます。 このようなリストを自分で作成する方法を説明します。

これを試す前に、LS_COLORS変数の現在の内容を別の変数に保存することをお勧めします。 これにより、シェルからサインアウトして再度サインインしたり、ターミナルウィンドウを閉じて再度開いたりすることなく、デフォルト設定をすばやく復元できます。 LS_COLORS変数の現在の内容をORIGINALという名前の新しい変数に保存するには、次のコマンドを実行します。

 ORIGINAL = $ LS_COLORS 

いつでも次のコマンドを実行して、変更を元に戻し、デフォルトの色に戻すことができます。

 LS_COLORS = $ ORIGINAL
広告

ファイルを編集して新しいデフォルトにするまで、変更は常に一時的なものです。 いつでもサインアウトして再度サインインするか、ターミナルウィンドウを閉じてから再度開いて、色をデフォルト設定に戻すことができます。 ただし、これにより、1つのクイックコマンドで簡単に実行できます。

カスタムカラーを設定する方法

LS_COLORS変数には、関連するカラーコードとともにファイルタイプのリストが含まれています。 デフォルトのリストは、さまざまなファイルタイプに対してさまざまな色を指定しているため、長くなります。

これがどのように機能するかを示すために、基本的な例を始めましょう。 ディレクトリの色をデフォルトの太字の青から太字の赤に変更するとします。 これを行うには、次のコマンドを実行できます。

 LS_COLORS = "di = 1; 31"

di=1;31ビットは、ディレクトリ( di )が( = )太字( 1; )赤( 31 )であることをlsに通知します。

ただし、これは非常に単純なLS_COLORS変数であり、ディレクトリを1つの色として定義し、他のすべてのタイプのファイルをデフォルトの色のままにします。 .desktopファイル拡張子が付いたファイルにも下線付きのシアン色を作成するとします。 これを行うには、次のコマンドを実行できます。

 LS_COLORS = "di = 1:31:*。desktop = 4; 36"
広告

これは、ディレクトリ( di )が( = )太字( 1; )赤( 31 )であり、( :で終わるファイルはすべて( = )下線付き( 4; )シアン( 36 )であることをlsに通知し*.desktop

これは、ファイルの種類と色のリストを作成するためのプロセスです。 filetype = colorの形式で、それぞれをコロン(:)文字で区切って、好きなだけ指定します。

関連: Bashプロンプトをカスタマイズ(および色付け)する方法

独自のリストを作成するには、カラーコードとファイルタイプコードのリストを知っている必要があります。 これは、Bashプロンプトで色を変更するときに使用するのと同じ数値のカラーコードを使用します。

前景テキストのカラーコードのリストは次のとおりです。

  • 黒:30
  • 青:34
  • シアン:36
  • 緑:32
  • 紫:35
  • 赤:31
  • 白:37
  • 黄色:33

たとえば、黄色のテキストはカラーコード33であるため、 di=33を使用してディレクトリを黄色にします。

テキストの色属性のリストは次のとおりです。

  • 通常のテキスト:0
  • 太字または細いテキスト:1(ターミナルエミュレータによって異なります。)
  • 薄暗いテキスト:2
  • 下線付きのテキスト:4
  • テキストの点滅:5(これはほとんどのターミナルエミュレータでは機能しません。)
  • 反転テキスト:7(これにより、前景色と背景色が反転するため、現在のテキストが黒の背景に白のテキストである場合、白の背景に黒のテキストが表示されます。)
  • 隠しテキスト:8

属性または複数のカラーコードを指定する場合は、コードのリストをセミコロン(;)文字で区切ります。 ここで属性を指定しない場合は通常のテキストが使用されるため、通常のテキストに0を指定する必要はありません。

たとえば、太字のテキストはカラーコード1で、黄色のテキストはカラーコード33であるため、 di=1;33を使用してディレクトリを太字の黄色にします。 複数の属性を指定することもできます。 たとえば、 di=1;4;33を使用して、ディレクトリを太字で下線付きの黄色にすることができます。

背景色コードのリストは次のとおりです。

  • 黒の背景:40
  • 青い背景:44
  • シアンの背景:46
  • 緑の背景:42
  • 紫の背景:45
  • 赤い背景:41
  • 白い背景:47
  • 黄色の背景:43

たとえば、青色の背景はカラーコード44であるため、ディレクトリに青色の背景を使用するにはdi=44を使用します。 背景色コード、前景色コード、および必要な数の属性を組み合わせることもできます。 たとえば、 di=1;4;33;44は、青色の背景に太字で下線付きの黄色のテキストを表示します。

ファイルタイプコードのリストは次のとおりです。

  • ディレクトリ:di
  • ファイル:fi
  • シンボリックリンク:ln
  • 名前付きパイプ(FIFO):pi
  • ソケット:そう
  • ブロックデバイス:bd
  • キャラクターデバイス:cd
  • 孤立したシンボリックリンク(存在しなくなったファイルを指す):または
  • 欠落しているファイル(孤立したシンボリックリンクが指す欠落しているファイル):mi
  • 実行可能ファイル(「x」権限があります):ex
  • * .extension:指定した拡張子で終わるファイル。 たとえば、.txtで終わるファイルには* .txt、.mp3で終わるファイルには* .mp3、.desktopで終わるファイルには* .desktopなどを使用します。 必要な数の異なるファイル拡張子を指定できます。
広告

:文字で区切って、好きなだけ色を変えて、さまざまな種類のファイルタイプコードを指定します。 このプロセスを繰り返して、LS_COLORS変数をアセンブルします。

たとえば、ディレクトリに太字の紫色のテキスト、実行可能ファイルに下線付きの赤いテキスト、.mp3ファイルに赤い背景に太字の緑色のテキストを使用するとします。 上記のリストのファイルタイプコードとカラーコードを組み合わせると、次のようになります。

 LS_COLORS = "di = 1; 35:ex = 4; 31:*。mp3 = 1; 32; 41" 

新しいデフォルトの色を設定する方法

これで、現在のBashセッションで機能するカスタムLS_COLORS変数ができました。 ただし、これを永続的にしたいと思うかもしれません。そうすれば、これを覚えていなくても、新しいBashセッションを開始するたびに自動的に使用されます。

カスタムLS_COLORS変数(およびその他の任意のBash変数)をユーザーアカウントの.bashrcファイルに追加することで設定できます。 このファイルは〜/ .bashrcにあります。 したがって、ユーザー名がbobの場合は、/ home / bob /.bashrcにあります。 環境変数を設定する方法は他にもありますが、これは単純な方法です。

まず、お好みのテキストエディタでこのファイルを開きます。 ここでは例としてnanoを使用しますが、vi、emacs、またはその他の好きなものを使用できます。

 nano〜 / .bashrc 

次のように、カスタムLS_COLORS変数をファイルの最後の新しい行に追加します。

 LS_COLORS = "di = 1; 35:ex = 4; 31:*。mp3 = 1; 32; 41"
広告

ファイルを保存して終了します。 nanoでは、Ctrl + Oを押してからEnterキーを押して保存し、Ctrl + Xを押して終了します。

新しいBashセッションを開始するたびに、Bashは.bashrcファイルを読み取り、LS_COLORS変数を自動的に設定します。 将来色を変更するには、.bashrcファイルに戻って、LS_COLORS行を編集します。

.bashrcファイルに追加したLS_COLORS=行を削除して、デフォルトの色を再度使用することもできます。 LS_COLORS値を設定しない場合、Bashはデフォルトの色を使用します。