Shell脚本:Linux Shell脚本学习指南(第一部分Shell基础)二

第一部分:Shell基础(开胃菜)二

八、Linux Shell命令提示符

启动Linux桌面环境自带的终端模拟包,或者从 Linux 控制台登录后,便可以看到 Shell 命令提示符。看见命令提示符就意味着可以输入命令了。命令提示符不是命令的一部分,它只是起到一个提示作用。

不同的 Linux 发行版使用的提示符格式大同小异,例如在 CentOS 中,默认的提示符类似下面这样:

[mozhiyan@localhost ~]$

各个部分的含义如下:

  • []是提示符的分隔符号,没有特殊含义。
  • mozhiyan表示当前登录的用户,我现在使用的是 mozhiyan 用户登录。
  • @是分隔符号,没有特殊含义。
  • localhost表示当前系统的简写主机名(完整主机名是 localhost.localdomain)。
  • ~代表用户当前所在的目录为主目录(home 目录)。如果用户当前位于主目录下的 bin 目录中,那么这里显示的就是bin
  • $是命令提示符。Linux 用这个符号标识登录的用户权限等级:如果是超级用户(root 用户),提示符就是#;如果是普通用户,提示符就是$

总结起来,Linux Shell 默认的命令提示符的格式为:

[username@host directory]$

或者

[username@host directory]#

什么是主目录?

Linux 系统是纯字符界面,用户登录后,要有一个初始登录的位置,这个初始登录位置就称为用户的主目录(home 目录)。超级用户的主目录为/root/,普通用户的主目录为/home/用户名/

有的资料也称为“家目录”,“家”是 home 的直译,它们都是一个意思。

用户在自己的主目录中拥有完整权限,所以我们也建议操作实验可以放在主目录中进行。

我们使用 cd 命令切换一下用户所在目录,看看有什么效果。

[mozhiyan@localhost ~]$ cd demo

[mozhiyan@localhost demo]$ cd /usr/local

[mozhiyan@localhost local]$

仔细看,如果切换用户所在目录,那么命令提示符中会变成用户当前所在目录的最后一个目录(不显示完整的所在目录 /usr/ local/,只显示最后一个目录 local)。

第二层命令提示符

有些命令不能在一行内输入完成,需要换行,这个时候就会看到第二层命令提示符。第二层命令提示符默认为>,请看下面的例子:

[mozhiyan@localhost ~]$ echo "Shell教程"

Shell教程

[mozhiyan@localhost ~]$ echo "

> http://

> c.biancheng.net

> "

http://

c.biancheng.net

第一个 echo 命令在一行内输入完成,不会出现第二层提示符。第二个 echo 命令需要多行才能输入完成,提示符>用来告诉用户命令还没输入完成,请继续输入。

echo 命令用来输出一个字符串。字符串是一组由" "包围起来的字符序列,echo 将第一个"作为字符串的开端,将第二个"作为字符串的结尾。对于第二个 echo 命令,我们将字符串分成多行,echo 遇到第一个"认为是不完整的字符串,所以会继续等待用户输入,直到遇见第二个"

命令提示符的格式不是固定的,用户可以根据自己的喜好来修改,将在下一节展开讲解。

九、Shell修改命令提示符

Shell 通过PS1PS2这两个环境变量来控制提示符的格式,修改PS1PS2的值就能修改命令提示符的格式。

  • PS1 控制最外层的命令提示符格式。
  • PS2 控制第二层的命令提示符格式。

在修改 PS1 和 PS2 之前,我们先用 echo 命令输出它们的值,看看默认情况下是什么样子的:

[mozhiyan@localhost ~]$ echo $PS1

[\u@\h \W]\$

[mozhiyan@localhost ~]$ echo $PS2

>

Linux 使用以\为前导的特殊字符来表示命令提示符中包含的要素,这使得 PS1 和 PS2 的格式看起来可能有点奇怪。下表展示了可以在 PS1 和 PS2 中使用的特殊字符。

Bash shell 命令提示符可以包含的要素

字符 描述
\a 铃声字符
\d 格式为“日 月 年”的日期
\e ASCII 转义字符
\h 本地主机名
\H 完全合格的限定域主机名
\j shell 当前管理的作业数
\1 shell 终端设备名的基本名称
\n

你可能感兴趣的:(Linux,linux,运维,服务器)