需要有关 $current_dir、$user_host 等变量的帮助

需要有关 $current_dir、$user_host 等变量的帮助

我对 Linux 还很陌生,所以请耐心等待 :)

我想自定义我的 shell 提示符(在 中zsh)。现在它看起来像这样(不是我写的):

PROMPT="${user_host} ${current_dir} ${rvm_ruby} 
%B$%b "

现在这些变量等被称为什么${user_host},在哪里可以看到它们的列表,以便我可以在提示中包含诸如当前时间之类的内容?

答案1

可以将诸如此类的变量${user_host}设置为.zshrc文件内的所需值。

例如在您的中添加以下几行.zshrc

local USER_HOST="${_prompt_colors[4]}%n@%m"
local CURRENT_DIR="${_prompt_colors[5]}%~"
PROMPT="${USER_HOST} ${CURRENT_DIR}$ "

会给出如下提示:

ron@ron ~$

以上代码中以 开头的字符%是特殊的“转义”序列,用于指定不同类型的信息。在 PROMPT 变量中,这些%序列的任何出现都会被它们所代表的信息替换。在上述代码中:

  • %n表示用户名,相当于$USERNAME
  • %m表示第一个主机名.
  • %~代表$PWD,但会进行两种类型的替换。如果命名目录X是当前目录的前缀,则~X显示 。如果当前目录是您的主目录,$HOME则只~显示 。

现在,您有多种选项来显示数据/时间:

  • %t- 当前时间,采用 12 小时制,上午/下午格式。
  • %T- 当前时间,采用 24 小时格式。
  • %*- 当前时间采用 24 小时格式,带秒。
  • %w- 日-日格式的日期。
  • %W- 日期格式为 mm/dd/yy。
  • %D- 日期格式为 yy-mm-dd。

所以,

PROMPT="${USER_HOST} ${CURRENT_DIR}%t$ "

会给出如下提示:

ron@ron ~9:11AM$

请参阅“提示序列的扩展”man zshmisc或查看或者以了解更多可用选项。

相关内容