Bash

如何在 .bashrc 上為文件副檔名進行模式匹配

  • August 12, 2022

我正在修改我的.bashrc: 我想讓它.zip,.tar並且.tar.gz文件(也許以後會更多)以紅色顯示。問題是,我想為所有這些文件匹配一次。所以在.bashrc我的文件上:

LS_COLORS='*.hs=35:*.py=93:*.[zip|tar.*]=31'
export LS_COLORS

如果可能的話,我想避免

LS_COLORS='*.hs=35:*.py=93:*.zip=31:*.tar=31:*.tar.gz=31'
export LS_COLORS

但是,我的方法不起作用。我應該修改什麼?

我不確定,但我懷疑這是不可能的,因為這完全是關於它ls本身處理你儲存的任何值的方式LS_COLORS。因此,除非他們選擇實施您所描述的內容,否則這是不可能的,您需要硬著頭皮把它全部寫出來。至少你可以在一行而不是兩行上做到這一點:

export LS_COLORS='*.hs=35:*.py=93:*.zip=31:*.tar=31:*.tar.gz=31'

您還可以使用以下技巧避免將其全部輸入:

$ printf '*.%s=31:' {zip,tar,tar.gz,tgz,Z,xz,7z}
*.zip=31:*.tar=31:*.tar.gz=31:*.tgz=31:*.Z=31:*.xz=31:*.7z=31:

然後你只需要複製/粘貼一次。

引用自:https://unix.stackexchange.com/questions/713428