当你成功登陆进一个文字界面之后,大部分情形下,你会在屏幕上看到一个不断闪烁的方块或底线(视不同版本而别),我们称之为游标(cursor)。

游标的作用就是告诉你接下来你从键盘输入的按键所插入的位置,且每输入一键游标便向右边移动一个格子,若连续输入太多的话,则自动接在下一行输入。

假如你刚完成登陆还没有输入任何按键之前,你所看到的游标所在位置的同一行的左边部分,我们称之为*提示符号*(prompt)。

提示符号的格式或因不同系统版本而各有不同,在Linux上,只需留意最接近游标的一个可见的提示符号,通常是如下两者之一:

$:给一般使用者账号使用
#:给root(管理员)账号使用

事实上,shell prompt的意思很简单:

是shell告诉使用者:您现在可以输入命令行了。

我们可以说,使用者只有在得到shell prompt后才能输入命令行,而cursor是指示键盘在命令行所输入的位置,使用者每输入一个键,cursor就往后移动一格,直到碰到命令行读进CR(Carriage Return,由Enter键产生)字符为止。

CR的意思也很简单:

是使用者告诉shell:老兄,你可以执行我的命令行了

严格来说

所谓的命令行,就是在shell prompt与CR字符之间所输入的文字。

思考:为何我们这里坚持使用 CR 字符而不说 Enter 键呢?答案在后面的学习中揭晓。

不同的命令行可接受的命令行格式或有不同,一般情况下,一个标准的命令行格式为如下所列:

Command-name options argument

若从技术细节来看,shell会依据IFS(Internal Field Seperator)将command line所输入的文字给拆解为字段(word)。然后再针对特殊字符或者叫元字符(meta)先作处理,最后再重组整行command line

(注意:请务必理解上两句话的意思,我们日后的学习中会常回到这里思考。)

其中的IFS是shell预设使用的字段分隔符号,可以有一个及多个如下按键组成:

空格键(While Space)
表格键(Tab)
回车键(Enter)

系统可接受的命令名称(Command-name)可以从如下途径获得:

明确路径所指定的外部命令
命令别名(alias)
自定功能(function)
shell内建命令(built-in)
$PATH之下的外部命令

每一个命令行均必需含有命令名称,这是不能缺少的。

转载请注明:知识蚂蚁 » shell十三问?(简体中文版)第2问:Shell prompt(PS1)与Carriage Return(CR)的关系?

我来说说

(便于我们更好的交流)

有不明白的地方欢迎留言哦~
取消