我在 Ubuntu 中有一个可见的 Vista 共享,但我使目录/文件的 BASH 颜色突出显示与本地目录/文件相同。我该怎么做呢?
非常感谢!
这不是 bash,而是 ls。环境变量 LS_COLORS 决定了 ls 的着色行为。在我的机器上:
justin@information-density:~$ echo $LS_COLORS
no=00:fi=00:di=01;34:ln=01;36:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:su=37;41:sg=30;43:tw=30;42:ow=34;42:st=37;44:ex=01;32:.tar=01;31:.tgz=01;31:.svgz=01;31:.arj=01;31:.taz=01;31:.lzh=01;31:.lzma=01;31:.zip=01;31:.z=01;31:.Z=01;31:.dz=01;31:.gz=01;31:.bz2=01;31:.bz=01;31:.tbz2=01;31:.tz=01;31:.deb=01;31:.rpm=01;31:.jar=01;31:.rar=01;31:.ace=01;31:.zoo=01;31:.cpio=01;31:.7z=01;31:.rz=01;31:.jpg=01;35:.jpeg=01;35:.gif=01;35:.bmp=01;35:.pbm=01;35:.pgm=01;35:.ppm=01;35:.tga=01;35:.xbm=01;35:.xpm=01;35:.tif=01;35:.tiff=01;35:.png=01;35:.svg=01;35:.mng=01;35:.pcx=01;35:.mov=01;35:.mpg=01;35:.mpeg=01;35:.m2v=01;35:.mkv=01;35:.ogm=01;35:.mp4=01;35:.m4v=01;35:.mp4v=01;35:.vob=01;35:.qt=01;35:.nuv=01;35:.wmv=01;35:.asf=01;35:.rm=01;35:.rmvb=01;35:.flc=01;35:.avi=01;35:.fli=01;35:.gl=01;35:.dl=01;35:.xcf=01;35:.xwd=01;35:.yuv=01;35:.aac=00;36:.au=00;36:.flac=00;36:.mid=00;36:.midi=00;36:.mka=00;36:.mp3=00;36:.mpc=00;36:.ogg=00;36:.ra=00;36:.wav=00;36:
每个冒号分隔的说明符表示一种文件/目录,以及显示的颜色。这是 LS_COLORS 规范如何工作的一个很好的概要。
如果我没记错的话,这是因为ls
用于确定文件类型的特殊位(exec 位、dir 位等)特定于 Linux 风格的文件系统。为了验证这一点,在本地机器上挂载一个 NTFS 文件系统(或者你在 Samba 上挂载的任何类型),看看你是否从ls
.
当您挂载 Windows 共享时,它会赋予每个文件/目录相同的权限。Windows 没有与 un*x 相同的权限结构,因此默认情况下它会为每个文件添加执行权限。LS_COLOR的环境变量(由“ls”使用)为可执行文件提供绿色。
您可以更改挂载选项中的 umask 设置,以便不设置执行标志:
mount -t smbfs -o username=USER,password=PASS,umask=111 //server/share /mnt/share
然后,这些文件通常会从扩展名中获取下一个颜色优先级,这将带您以某种方式实现您想要的结果。