ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
##shell十三问之2:shell prompt(PS1)与Carriage Return(CR)关系 _____________________________________________________________ 当你成功登陆一个shell终端的文字界面之后,大部分的情形下, 你会在屏幕上看到一个不断闪烁的方块或者底线(视不同的版本而别), 我们称之为`游标`(`cursor`). `cursor`作用就是告诉你接下来你从键盘输入的按键所插入的位置, 且每输入一个键,`cursor`便向右移动一个格子, 如果连续输入太多的话,则自动接在下一行输入。 假如你刚完成登陆,还没有输入任何按键之前, 你所看到的`cursor`所在的位置的同一行的左边部分,我们称之为`提示符`(`prompt`)。 `提示符`的格式或因不同的版本而各有不同, 在Linux上,只需留意最接近`游标`的一个提示符号,通常是如下两者之一: - $: 给一般用户账号使用; - \#: 给root(管理员)账号使用; 事实上,shell prompt的意思很简单: 告诉shell使用者,您现在可以输入命令行了。 我们可以说,使用者只有在得到shell prompt才能打命令行, 而`cursor`是指示键盘在命令行的输入位置,使用者每输入一个键, `cursor`就往后移动一个格,直到碰到命令行读进`CR`(`Carriage Return`, 由`Enter`键产生)字符为止。 `CR`的意思也很简单: 使用者告诉shell:老兄,你可以执行的我命令行了。 严格来说: 所谓的命令行, 就是在`shell prompt`与`CR`之间所输入的文字。 (**question:为何我们这里坚持使用`CR`字符而不说`Enter`按键呢? 答案在后面的学习中给出**)。 不同的命令可以接受的命令的格式各有不同, 一般情况下,一个标准的命令行格式为如下所列: ```shell command-name options argument ``` 若从技术的细节上来看, shell会依据`IFS`(`Internal Field Seperator`) 将 command line 所输入的文字给拆解为`字段`(`word`). 然后在针对特殊的字符(meta)先做处理,最后在重组整行command line。 (**注意:请务必理解以上两句的意思,我们日后的学习中常回到这里思考**。) 其中`IFS`是shell预设使用的字段位分隔符号,可以由一个及多个如下按键组成: - 空白键(White Space) - 表格键(Tab) - 回车键(Enter) 系统可以接受的命令的名称(command-name)可以从如下途径获得: - 确定的路径所指定的外部命令 - 命令的别名(alias) - shell内建命令(built-in) - $PATH之下的外部命令 每一个命令行均必须包含命令的名称,这是不能缺少的。