什么是外壳中的百分号提示?


16

观看视频时,我看到了以下内容:

% more tinyUF.txt
10
4 3
3 8
6 5

命令%前这个符号是什么more



@RomanGräf,那是什么?
Maxim Koretskyi'5

1
您可以$使用替换export PS1=...位置来更改普通符号...
罗曼·格拉夫(RomanGräf)

@RomanGräf,我明白了,谢谢你的建议
Maxim Koretskyi

@RomanGräf:您实际上可以在提示上做更多的事情,而不仅仅是更改角色。我的计算机包括计算机名称(因为我经常有进入其他计算机的xterm窗口)和当前路径中的最后几个目录。如果我是root,它会变成鲜红色。
jamesqf

Answers:


29

那就是shell提示符,或者更确切地说,那是shell的主要提示符(有多个)。这是Shell所说的“ 继续,我现在准备输入 ”的方式。

%提示在csh-type shell中很常见,而sh-shell(如bashksh93)通常使用a $作为提示。

该提示通常更改#为root用户,因为应该通过使用备用提示(如POSIX标准所指出的)来提醒功能强大的用户该功能

主要的提示输入sh类型的shell由shell变量的值确定PS1


以下评论摘要,并附有:

#根提示(通过中都使用的字符shcsh弹)恰好与公共外壳注释字符一致。如果还复制了shell提示,则以root身份复制和粘贴命令将使粘贴的命令无法操作。请注意,#在shell具有注释约定之前,该命令被用作根提示符(参考:Doug McIlroy的电子邮件)。

计划9 的esrcshell使用该;字符作为默认提示。这样的结果是,复制和粘贴命令(包括提示)将仍然意味着粘贴的命令有效(并且将被执行)。

一种使用户拥有自定义但仍可复制的shell提示的方法是使用: something ;,其中something可以是当前目录,主机名或时间。


2
也在zsh(Bourne样式的shell中,但具有来自的许多功能tcsh)。请注意,类似Bourne和类似csh的shell通常#用于uid 0的用户。
StéphaneChazelas 17年

1
还要注意,rc类似shell ;在那里使用(一个人可以复制粘贴整个行,并且这是有效的shell代码,与root #提示符提示相同的想法)。
斯特凡Chazelas

2
对于root用户,#的一个非常重要的选择是,如果您复制包含该命令的命令,则不会造成损害(由于#会开始注释,因此也会注释您的命令(当然,它的第一行))。某些人使用“>”,并且如果您也复制它,则如果命令具有完整或相对路径,或者您在正确的目录中(并且具有足够的权限,例如,如果您在根)。我已经看到了这种情况。
奥利维尔·杜拉克

1
@StéphaneChazelas:根号约定不是在很容易进行整条粘贴的终端出现之前就已经存在了长时间吗?
hmakholm

@HenningMakholm,是的。它起源于csh在引入#作为注释领导者之前。尽管如此,#...复制粘贴时的行仍是注释,即使不是故意的。我不知道这是否是背后的意图;rc任,虽然我看到这是一个方便的后果。
斯特凡Chazelas
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.