离线下载
PDF版 ePub版

见证大牛成长之路 · 更新于 2018-11-28 11:00:43

shell学习第三天

shell 的基本元素

shell 最基本的工作就是执行命令。以互动的方式使用 shell 很容易了解这一点:每敲入一个命令,shell就会执行。像这样:

cd /tmp ; ll -d sh  
drwxr-xr-x 2 root root 4096 6月   7 18:56 sh  

以上是在我电脑上运行的程序。
以上的例子很简单,展示了 linux 命令寒的原理。
首先,格式简单,尽量以空格隔开命令中的各个组成部分。
其次,命令名称是命令行的第一个项目。通常后面有选项,任何额外的参数都放在选项之后。两个命令可以使用分号分割。
第三选项的开头是一个破折号(或减号)。选项既然叫做选项,就代表选项可有可无。如需要多个选项,只需要输入一个剑豪后面加选项即可,例如,ls -l -t /tmp/sh可以写成 ls -lt /tmp/sh

如果多个命令之间使用的是&符号,而不是分号,则 shell 将在后台执行其前面的命令,这意味着 shell 不用等到该命令的完成,就可以继续执行下一个命令。

shell 识别三种基本命令:
内建命令:就是 linux 的命令,例如 cd,ls,mkdir 等,这些命令是由于其必要性才内建的,内外一种命令的村子啊是为了效率,其中最典型的就是 test,
shell 函数:功能健全的一系列程序代码,用 shell 语言写成,可以像使用命令一样使用,就是在 C++中调用函数。
a.外部命令:是由 shell 的副本(新的进程)所执行的命令,还是命令。

shell 中的变量
似乎任何一种编程语言都有变量,shell 也不例外,每一个变量都有一个值。值是配给变量的内容或者信息。在 shell 中,变量值可以是(通常是)空值,也就是不含有任何字符。这是合理的,也是常见的,好用的特性。空值就是 null
在 shell 中变量名的长度无限制,所能保存的字符数同样没有限制。
变量的赋值方式:变量名=值,中间不能有任何的空格,如果想去除 shell 变量的值时,需要在变量名钱加上$字符。当所赋予的值包含空格的时候,需要将值用单引号或者双引号包起来,用单引号包起来的后果是单引号里面的所有特殊符号都不具备特殊含义,用双引号包起来代表特殊符号有特殊含义。
例如:

name=syx;  
echo ‘$name’  输出$name  
echo “$name”  输出 syx  

如果想将 name1=syxname2=zsf 合并成 syxzsf
name=${name1}${name2}echo $name name=syxzsf,貌似还有其他的合并方法,个人觉得这一种最好。
至于变量的四种类型什么的,暂时不搞。

简单的 echo 输出

echo 的作用就是产生输出,可以提示用户,或者用来产生数据提供用户,或者产生数据进一步处理。

早起的 echo 只能将参数打印到 shell 交互界面上,参数之间以一个空格隔开,并以换行符号结尾。
但是,这么强大的语言,怎么可能不进一步的发展?
后来又衍生出了-n 选项,省略结尾的换行符号。

etho的语法:
etho [string......]
用途是产生 shell 脚本的输出,没有什么主要选项。行为模式是将参数打印到标准输出,参数之间用空格隔开,并以换行符结尾。转义序列用来表示特殊字符,以及控制其行为模式。
常用的转移序列:
\a:
\b:
\c:
\f:
\n:换行
\r:回车
\t:水平制表符
\v:垂直制表符
\\:反斜杠字符
\0ddd:

在实际编写 shell 脚本的时候,\a 序列通常用来引起用户的注意,\0ddd 序列最有用的地方就是通过送出终端转移序列进行(非常)原始的光标操作,但是不建议这么做。很少使用\0ddd 序列。