🍃 缘起
日常开发中,终端是最常使用的工具,每次打开都会看到如下这样的对话框,提示符显示了用户名、主机名、当前路径这样长长的一大串,如下图所示:
如果只是单独使用终端来执行一点简单的命令,这样的提示符没什么问题,但是如果是在vscode的内置中终端中使用就会有这样的问题:
一般我们的项目都是有层层文件夹嵌套的,而且可能会存在不同目录下的相同名称的项目文件夹,并且会经常存在多项目同时运行的情况,所以对于项目名相同但是目录不相同的项目,我需要在终端的显示上知道项目的完整路径,以区分他是哪个项目。
举例来说,我有 project 和 project1 两个目录,两个目录下都有 test 这样的子项目,如果我同时运行两个 test 项目,我是无法一眼从终端显示上看出这两个项目是归属哪个目录下的,如图所示:
通过pwd命令我们可以查看文件所在的绝对路径,但是终端提示符只会显示当前项目名称,所以无法直观的区分。
第二个问题是,终端提示符的组成部分中用户名和主机名并没有什么用处,如果频繁执行终端命令,每次都输出前面那么一大串,完全是自己视觉的一种干扰。
那么有没有办法让终端的提示符变的精简,并且显示出当前文件所在的路径呢?答案是有的,终端提供了配置文件来实现自定义的配置,对于macos默认的终端是 zsh,我们只需要修改这个文件就可以了。
🛠️ 实操
macOS中 shell配文件中提供了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分支,支持命令提示等等,但是我追求的就是最朴素的实现,我不喜欢额外的第三方工具,不喜欢花里胡哨的界面,越简单越纯粹越好,所以各位可以仁者见仁的选择使用。