【问题标题】:Unix shell - How to have a prompt that change randomlyUnix shell - 如何让提示随机变化
【发布时间】:2014-04-15 11:27:09
【问题描述】:

我想知道是否有任何方法可以在每次按 Enter 时更改提示,例如:

[jtouzea - such prompt]  $>
[jtouzea - much style]   $> ls -l
total 0
drwx------+  5 jtouzea  2013  170 Mar 11 16:50 Desktop
drwx------+  2 jtouzea  2013   68 Mar 11 16:49 Documents
drwx------+  2 jtouzea  2013   68 Mar 11 16:58 Downloads
drwxr-xr-x@ 26 jtouzea  2013  884 Mar 11 17:20 Library
drwx------+  2 jtouzea  2013   68 Mar 11 16:50 Movies
drwx------+  2 jtouzea  2013   68 Mar 11 16:50 Music
drwx------+  2 jtouzea  2013   68 Mar 11 16:50 Pictures
drwxr-xr-x+  2 jtouzea  2013   68 Mar 11 16:50 Public
[jtouzea - wow]          $> echo "test"
test
[jtouzea - 10/10]        $>

我已经找到了允许这样做的 $RANDOM 命令,但我需要这样做:

source ~/.zshrc

否则我不会改变我的提示。

有什么想法吗?

编辑: 目前我有:

PROMPT="[jtouzea - $RANDOM] $> "

在我的 .zshrc 中

编辑2: 我用的是 zsh,所以很遗憾,PROMPT_COMMAND 似乎不起作用

编辑3: 现在问题已经解决,这是我的最终代码:

function precmd()
{
    sentence[1]="much prompt";
    sentence[2]="such style";
    sentence[3]="wow";
    nb=$[$RANDOM % 3 + 1];
    PROMPT="[jtouzea - ${sentence[$nb]}] $> ";
}

【问题讨论】:

  • 你能上传你的.zshrc文件内容,或者至少是相关的代码摘录吗?

标签: shell unix random zsh prompt


【解决方案1】:

尝试使用PROMPT_COMMAND 钩子:

PROMPT_COMMAND() { randPromptNum=$[ $RANDOM % 3 ]; PS1=${POSSIBLE_PROMPTS[$randPromptNum]};}

对于 zsh,您必须使用 precmd 而不是 PROMPT_COMMAND

在你使用它之前,你必须设置一个包含所有可能提示的变量:

POSSIBLE_PROMPTS[0]="such prompt: "
POSSIBLE_PROMPTS[1]="much style: "
POSSIBLE_PROMPTS[2]="wow: "

如果您想调整可能的提示数,请记住编辑% 3

EDIT - cygwin 上的结果

much style: echo hi
hi
such prompt: echo blah
blah
much style: pwd
/usr/bin
such prompt: yes y | head
y
y
y
y
y
y
y
y
y
y
wow: echo foo
foo
such prompt: 

【讨论】:

  • 我无法让它在 zsh 中工作,但它在 bash 中工作...... zsh 的任何钩子?
  • 对于 zsh 将 PROMPT_COMMAND 更改为 precmd
【解决方案2】:

它和你的不一样,但你可以试试这个:

我像这样编辑了我的 .kshrc 文件:

PS1="Look, it's random: \$RANDOM  \$ "

然后source文件,按回车几次:

/home/user  $ . .kshrc
Look, it's random: 2155  $
Look, it's random: 6032  $
Look, it's random: 13065  $

将所有短语放入文本文件或数组中,然后使用 $RANDOM 进行查看。

注意:记得转义$

【讨论】:

  • PROMPT="看,它是随机的:\$RANDOM \$" 确实:“看,它是随机的:$RANDOM”并且没有转义 $,它每次都会执行“看,它是随机的:21349 $”
  • @BusyBeingDelicious hm,应该与zsh有关......每次打印新行时我都会得到一个不同的数字 - 也就是说,每次我按下Enter键。我的测试是使用 ksh 完成的。
猜你喜欢
  • 2015-07-10
  • 2015-05-16
  • 1970-01-01
  • 2022-08-03
  • 1970-01-01
  • 2011-02-17
  • 2010-12-14
  • 1970-01-01
  • 2015-10-16
相关资源
最近更新 更多