集册 Shell 十三问 shell and Carriage

shell and Carriage

—— shell and Carriage 关系

黑派客     最近更新时间:2020-08-04 05:37:59

154

当你成功登陆一个 shell 终端的文字界面之后,大部分的情形下, 你会在屏幕上看到一个不断闪烁的方块或者底线(视不同的版本而别), 我们称之为游标(cursor). cursor作用就是告诉你接下来你从键盘输入的按键所插入的位置, 且每输入一个键,cursor便向右移动一个格子, 如果连续输入太多的话,则自动接在下一行输入。

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

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

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

事实上,shell prompt 的意思很简单: 告诉 shell 使用者,您现在可以输入命令行了。

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

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

严格来说:

所谓的命令行, 就是在shell promptCR之间所输入的文字。

(question:为何我们这里坚持使用CR字符而不说Enter按键呢?答案在后面的学习中给出)。

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

command-name options argument

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

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

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

展开阅读全文