跳转到内容

为macOS配置ll命令及终端颜色

macOS系统默认只有ls命令,而没有ll命令,但后者在Linux中特别常用,所以本文简要介绍如何为macOS的终端配置ll命令。本文基于macOS Ventura 13.3系统默认的zsh终端。如果读者用的是bash终端(如老版本的macOS),可以将.zshrc配置文件替换为.bashrc.bash_profile

配置alias别名

打开终端(Terminal),在home路径(即~)下使用vim .zshrc命令编辑zsh的配置文件,在其中添加一行:

Terminal window
alias ll='ls -lhD "%Y-%m-%d %H:%M:%S"'

其中alias的作用是设置一个别名,将等号左边的ll映射为等号右边的'ls -lhD "%Y-%m-%d %H:%M:%S"'。这样当输入ll时,实际执行的就是右边的定制化ls命令。因为右边是包含空格的,所以用单引号引起来。

使用man ls命令可以查询ls命令的所有参数说明。其中-l代表使用长(详细)格式;-h代表使用B、K、M、G等单位;-D代表自定义日期时间格式,即后面的字符串模板。因为当前已经在单引号中了,所以日期时间格式字符串包含空格,就用双引号引起来。格式大小写敏感,%Y代表4位的年,%m代表2位的月,%d代表2位的天,%H代表2位的小时,%M代表2位的分钟,%S代表2位的秒。完整的日期时间格式,可以参考strftime(3)标准C函数的说明

使用source .zshrc命令使该配置文件生效,之后在终端输入ll命令后打印的内容即为:

Terminal window
zhanghuan@MacBook-Pro ~ % ll
total 0
drwx------@ 5 zhanghuan staff 160B 2022-07-30 21:00:02 Applications
drwxr-xr-x@ 32 zhanghuan staff 1.0K 2023-04-01 12:17:46 Desktop
drwxr-xr-x 32 zhanghuan staff 1.0K 2023-03-19 21:01:24 Documents
drwxr-xr-x@ 14 zhanghuan staff 448B 2023-04-03 10:34:59 Downloads
drwx------@ 86 zhanghuan staff 2.7K 2023-04-02 01:10:18 Library
drwxr-xr-x 6 zhanghuan staff 192B 2023-01-01 18:23:44 Movies
drwxr-xr-x 7 zhanghuan staff 224B 2022-07-31 12:58:43 Music
drwxr-xr-x@ 2 zhanghuan staff 64B 2023-04-03 10:56:49 Parallels
drwx------+ 17 zhanghuan staff 544B 2023-03-05 09:49:17 Pictures
drwxr-xr-x+ 5 zhanghuan staff 160B 2022-07-24 22:27:43 Public
drwxr-xr-x@ 6 zhanghuan staff 192B 2023-04-03 12:08:56 Virtual Machines.localized
drwxr-xr-x@ 12 zhanghuan staff 384B 2023-03-24 12:51:01 Workspace

ll命令结果格式说明

基于上例,ll命令输出的信息共有7列(其中日期和时间视为同一列)。从左侧开始,以第1行为例:

  1. 类型和权限信息,如drwx------@,共有10或11个字符。
    • 第1个字符代表类型,-代表文件,d代表文件夹,l代表软链接,c代表字符设备文件。
    • 第2-4共3个字符代表所有者(u)权限。权限r代表可读,w代表可写,x代表可执行。使用顺次连续3位代表是否拥有rwx权限,如果没有权限则使用-表示。
    • 第5-7共3个字符代表所属组(g)权限,具体同上。
    • 第8-10共3个字符代表其他人(o)权限,具体同上。
    • 第11位字符可选,是权限的说明信息。@代表继承父文件夹,.代表使用SELinux,+代表使用ACL。
  2. 硬链接的引用次数,如数字5
  3. 拥有者(owner)的用户名,如zhanghuan
  4. 拥有者所在的组名称,如staff
  5. 文件(或文件夹,但不含其内容)所占用的字节大小,如160B
  6. 最新修改时间,如2022-07-30 21:00:02
  7. 文件(或文件夹)的名称,如Applications

配置终端颜色

默认情况下的macOS终端并不具有彩色效果,无论是文件还是文件夹,它们的颜色都是一样的。但在Linux中则默认可以通过不同的颜色来区分文件类型。可以在.zshrc文件中添加2行配置:

Terminal window
export CLICOLOR=1
export LSCOLORS=ExGxFxdaCxDaDahbadeche

其中CLICOLOR=1代表开启自定义客户端颜色。LSCOLORS代表具体的颜色方案,共有22个字符,每2个字符为一组,共有11组。从左向右每一组的含义为:

  1. directory.
  2. symbolic link.
  3. socket.
  4. pipe.
  5. executable.
  6. block special.
  7. character special.
  8. executable with setuid bit set.
  9. executable without setgid bit set.
  10. directory writable to others, with sticky bit.
  11. directory writable to others, without sticky bit.

每一组的前后2个字符中,第1个代表前景色,第2个代表背景色。具体的颜色使用大小写敏感的8*2+1=17种字符来表示,大写代表加粗,小写代表不加粗:

  • a代表黑色,A代表黑色加粗。
  • b代表红色,B代表红色加粗。
  • c代表绿色,C代表绿色加粗。
  • d代表棕色,D代表棕色加粗。
  • e代表蓝色,E代表蓝色加粗。
  • f代表洋红色,F代表洋红色加粗。
  • g代表青色,G代表青色加粗。
  • h代表浅灰色,H代表浅灰色加粗。
  • x代表系统默认颜色。

例如,想要用蓝色加粗表示文件夹,则LSCOLORS的前2个字符可配置为Ex。如果想要更加复杂的配置,例如根据文件的扩展名来使用对应的颜色,可实现如使用红色来表示压缩文件等功能,可参考Linux系统的/etc/DIR_COLORS文件,也有第三方终端配置工具提供。