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 promptCR之间所输入的文字。

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

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

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之下的外部命令

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

如何查看docker镜像里的文件

发布于:1年以前  |  2220次阅读  |  详细内容 »

Shell脚本编程30分钟入门

发布于:1年以前  |  617次阅读  |  详细内容 »

Bash脚本15分钟进阶教程

这里的技术技巧最初是来自谷歌的“Testing on the Toilet” (TOTT)。这里是一个修订和扩增版本。

发布于:1年以前  |  527次阅读  |  详细内容 »

shell十三问之16:学习总结与原帖目录

发布于:1年以前  |  603次阅读  |  详细内容 »

shell十三问之9:$@与$*差在哪?

在shell script中,我们可用$0, $1, $2, $3 ...这样的变量分别提取命令行中的参数部分

发布于:1年以前  |  329次阅读  |  详细内容 »

shell十三问之8: $(())与$()还有${}差在哪?

我们上一章介绍了()与{}的不同,这次让我们扩展一下,看看更多的变化:$()与${}又是啥玩意儿呢?

发布于:1年以前  |  295次阅读  |  详细内容 »

shell十三问之7:()与{}差在哪?

许多时候,我们在shell操作上,需要在一定的条件下执行多个命令,也就是说,要么不执行,要么就全执行,而不是每次依序的判断是否要执行下一个命令。

发布于:1年以前  |  305次阅读  |  详细内容 »

shell十三问之6:exec跟source差在哪?

发布于:1年以前  |  304次阅读  |  详细内容 »

shell十三问之5:问var=value 在export前后的差在哪?

发布于:1年以前  |  299次阅读  |  详细内容 »

shell十三问之4:""(双引号)与''(单引号)差在哪?

发布于:1年以前  |  315次阅读  |  详细内容 »

shell十三问之3:别人echo、你也echo,是问echo知多少?

发布于:1年以前  |  312次阅读  |  详细内容 »

shell十三问之2:shell prompt(PS1)与Carriage Return(CR)关系

发布于:1年以前  |  284次阅读  |  详细内容 »

shell十三问之15: [^ ] 跟[! ]差在哪? (RE: Regular Expression)

发布于:1年以前  |  532次阅读  |  详细内容 »

shell十三问之14: [^ ] 跟[! ]差在哪? (wildcard)

发布于:1年以前  |  582次阅读  |  详细内容 »

shell十三问之13: for what? while与until差在哪?

发布于:1年以前  |  326次阅读  |  详细内容 »

shell十三问之12:你要if还是case呢?

发布于:1年以前  |  534次阅读  |  详细内容 »

shell十三问之11:>与< 差在哪?

发布于:1年以前  |  490次阅读  |  详细内容 »

shell十三问之10:&& 与 || 差在哪?

发布于:1年以前  |  487次阅读  |  详细内容 »

何为shell

发布于:1年以前  |  1次阅读  |  详细内容 »

Shell语法快速入门

一、基本语法 1.1、shell文件开头 shell文件必须以下面的行开始(必须方在文件的第一行): #!/bin/sh 符号#!用来告诉系统它后面的参数是用来执行该文件的程序。在这个例...

发布于:1年以前  |  1760次阅读  |  详细内容 »

最多阅读

如何查看docker镜像里的文件 1年以前  |  2220次阅读
Shell语法快速入门 1年以前  |  1760次阅读
Shell命令在后台运行程序 1年以前  |  1698次阅读
Shell脚本编程30分钟入门 1年以前  |  617次阅读
shell十三问之12:你要if还是case呢? 1年以前  |  534次阅读
Bash脚本15分钟进阶教程 1年以前  |  527次阅读
shell十三问之11:>与< 差在哪? 1年以前  |  490次阅读
shell十三问之10:&& 与 || 差在哪? 1年以前  |  487次阅读
shell十三问之9:$@与$*差在哪? 1年以前  |  329次阅读
shell十三问之7:()与{}差在哪? 1年以前  |  305次阅读
shell十三问之6:exec跟source差在哪? 1年以前  |  304次阅读