Mac优雅指南之简化终端提示符并显示文件路径

801 阅读3分钟

🍃 缘起

日常开发中,终端是最常使用的工具,每次打开都会看到如下这样的对话框,提示符显示了用户名、主机名、当前路径这样长长的一大串,如下图所示:

如果只是单独使用终端来执行一点简单的命令,这样的提示符没什么问题,但是如果是在vscode的内置中终端中使用就会有这样的问题:

一般我们的项目都是有层层文件夹嵌套的,而且可能会存在不同目录下的相同名称的项目文件夹,并且会经常存在多项目同时运行的情况,所以对于项目名相同但是目录不相同的项目,我需要在终端的显示上知道项目的完整路径,以区分他是哪个项目。

举例来说,我有 projectproject1 两个目录,两个目录下都有 test 这样的子项目,如果我同时运行两个 test 项目,我是无法一眼从终端显示上看出这两个项目是归属哪个目录下的,如图所示:

通过pwd命令我们可以查看文件所在的绝对路径,但是终端提示符只会显示当前项目名称,所以无法直观的区分。

第二个问题是,终端提示符的组成部分中用户名和主机名并没有什么用处,如果频繁执行终端命令,每次都输出前面那么一大串,完全是自己视觉的一种干扰。

那么有没有办法让终端的提示符变的精简,并且显示出当前文件所在的路径呢?答案是有的,终端提供了配置文件来实现自定义的配置,对于macos默认的终端是 zsh,我们只需要修改这个文件就可以了。

🛠️ 实操

macOSshell配文件中提供了PS1(提示符变量)值来供用户自定义提示符显示。

打开配置文件

open ~/.zshrc

自定义提示符

提示符提供了一些参数,来代表不同的显示项,具体如下:

  • %n:用户名
  • %m:主机名的前缀
  • %~:当前路径(相对路径,简化形式)
  • %d:完整当前路径
  • %#:用户权限符号(# 为 root,% 为普通用户)

举例来说,可以有这么些配置方式,以及他们的效果如下所示:

  • 仅显示用户名和当前路径:
export PS1='%n:%~ % '

  • 仅显示当前路径:
export PS1='%~ % '

  • 仅显示 $ 符号:
export PS1='$ '

  • 显示主机名简化版本(前缀):
export PS1='%m:%~ % '

而我所需要的就是第二种方式,隐藏掉用户名,主机名,同时显示项目的相对路径,在项目中的效果如下:

重载配置

配置好PS1命令后我们只需要重新载入载入zsh配置文件就可在终端中看到新的命令提示符效果了:

source ~/.zshrc

🎉 结语

以上就是简化macos终端提示符的全部内容,当然用流行的oh-my-zsh终端美化软件也可以解决这个问题,甚至更好,有更好看的终端主题,不同的颜色,显示所在git分支,支持命令提示等等,但是我追求的就是最朴素的实现,我不喜欢额外的第三方工具,不喜欢花里胡哨的界面,越简单越纯粹越好,所以各位可以仁者见仁的选择使用。