Shell是一种脚本语言,那么,就必须有解释器来执行这些脚本,常见的脚本解释器有:
bash:是Linux标准默认的shell。bash由Brian Fox和Chet Ramey共同完成,是BourneAgain Shell的缩写,内部命令一共有40个。
sh: 由Steve Bourne开发,是Bourne Shell的缩写,sh 是Unix 标准默认的shell。
另外还有:ash、 csh、 ksh等。

第一个shell脚本程序:
#!/bin/bash
#上面中的 #! 是一种约定标记, 它可以告诉系统这个脚本需要什么样的解释器来执行;

echo "Hello, world!"

定义变量:

country="China"
Number=100

注意: 1,变量名和等号之间不能有空格;
2,首个字符必须为字母(a-z,A-Z)。
3, 中间不能有空格,可以使用下划线(_)。
4, 不能使用标点符号。
5, 不能使用bash里的关键字(可用help命令查看保留关键字)。

使用变量:
只需要在一个定义过的变量前面加上美元符号 $ 就可以了, 另外,对于变量的{} 是可以选择的, 它的目的为帮助解释器识别变量的边界.

算数运算符:

原生bash不支持简单的数学运算,但是可以通过其他命令来实现,例如 awk 和 expr. 下面使用expr进行; expr是一款表达式计算工具,使用它可以完成表达式的求值操作;

a=10
b=20
expr $a + $b
expr $a - $b
expr $a \* $b
expr $a / $b
expr $a % $b
a=$b

注意: 1. 在expr中的乖号为:*
2. 在 expr中的 表达式与运算符之间要有空格,否则错误;
3. 在[ $a == $b ]与[ $a != $b ]中,要需要在方括号与变量以及变量与运算符之间也需要有括号, 否则为错误的。(亲测过)

关系运算符:
只支持数字,不支持字符串,除非字符串的值是数字。

单引号的限制:

单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的;
单引号字串中不能出现单引号(对单引号使用转义符后也不行)。
双引号的优点:

双引号里可以有变量
双引号里可以出现转义字符
拼接字符串:

country="China"
echo "hello, $country"
#也可以
echo "hello, "$country" "

bash支持一维数组, 不支持多维数组, 它的下标从0开始编号. 用下标[n] 获取数组元素;

定义数组:

在shell中用括号表示数组,元素用空格分开。 如:

array_name=(value0 value1 value2 value3)

array_name[0]=value0
array_name[1]=value1
array_name[2]=value2

if 语句
包括:1, if [ 表达式 ] then 语句 fi
2. if [ 表达式 ] then 语句 else 语句 fi
3. if [ 表达式] then 语句 elif[ 表达式 ] then 语句 elif[ 表达式 ] then 语句 …… fi

a=10
b=20
if [ $a == $b ]
then
echo "a is equal to b"
else
echo "a is not equal to b"
fi

for 循环
一般格式为:

for 变量 in 列表
do
command1
command2
...
commandN
done

while循环

一般格式为:

COUNTER=0
while [ $COUNTER -lt 5 ]
do
COUNTER='expr $COUNTER+1'
echo $COUNTER
done

crtl+a回到当前命令行行首 crtl+e回到行尾
ctrl+w浏览器和 securecrt关闭

变量 含义
$0 当前脚本的文件名
$n 传递给脚本或函数的参数。n 是一个数字,表示第几个参数。例如,第一个参数是$1, 第二个参数是$2。
$# 传递给脚本或函数的参数个数。
$* 传递给脚本或函数的所有参数。
$@ 传递给脚本或函数的所有参数。被双引号(" ")包含时,与 $* 稍有不同,下面将会讲到。
$? 上个命令的退出状态,或函数的返回值。
$$ 当前Shell进程ID。对于 Shell 脚本,就是这些脚本所在的进程ID。

f11最大化命令行窗口
ctrl+shift+t 是命令行切换窗口 alt+1 选择第一个窗口 alt+2 是选择第二个窗口 依次类似
ctrl+alt+t是快速打开窗口

ctrl+v列选择

自动机 状态转换 + 编译 +软件工程

Ubuntu 上面的htop比top命令好用,推荐下apt-get install htop!