shell
最早的是bsh,然后基础上产生csh以及ksh。
综合2种的优点,产生了现在的bash。
主要功能:
1.作业控制 查看作业信息以及调整作业的运行方式等。
2.别名功能 用Alias命令用来为一个命令简历另一个名称,他最主要的功能室使用一个姓新的名称来代表固定参数在内的shell命令。
3.命令历史 可以查看命令历史功能,并重复执行这些命令。
4.命令行编辑功能 能能够方便用户在中断编辑输入命令行。
5.功能键自定义功能 允许用户将常用的命令序列定义为功能键,达到一键操作的效果。
6.提供更能丰富的变量类型、命令与控制结构。
如果需要使用其他shell只需要在shell命令输入该shell程序然后执行即可。
shell变量分为:
1.本地变量 如MOVIE=hello ,引用变量的值 echo $MOVIE 就会显示hello,如果变量本身有空格需用双引号,MOVE=“hello world”,清除定义为unset MOVIE。
2.环境变量 shell开始执行时就已经定义了的变量。export可以显示所有的环境变量。
3.位置参数变量 shell语句通过位置参数变量获得用户在命令行上附加的参数 共有9个,$1-$9.($0表示程序本身,不是位置参数)
$#表示参数的个数。如果超过9个则第九个机器以后的参数将被作为一个字符串赋给$9变量。如果运行shift参数可以挤掉第一个参数,后面的参数将以此前移一个位置。
4.预定义变量 shell内部已经定义好的变量,不能手动更改,由shell根据系统环境的变化自动赋值。
$# 传递到脚本的参数的数量
$* 显示传递到脚本的所有参数内容
$? 命令执行后返回的状态,0表示成功,非零表示失败
$$ 当前进程的进程号
$! 后台运行的最后一个进程号
$0 当前执行的进程名
环境变量中比较特殊的是PATH和PS1变量
PATH变量决定了shell将到那些目录中寻找命令或者程序。如果要执行的命令在$PATH中就不必输入命令的完整路径,如ls、cd、pwd等基础命令的路径都已经加入在PATH中
需要添加命令搜索目录方法如下:
PATH=$PATH:/some/directory
Export PATH
PS1设置了shell提示符。[\u@\h\w]\$ \u代表用户名 \h代表工作目录 \$代表提示符
bash常用功能
1.*表示任意多个字符 ?表示单个字符
2.tab可以补全,如输入的信息能唯一确定命令或者文件,按一下tab即可补全命令或者文件名
按两下tab则显示以输入为开头的 所有文件名
3.命令历史 按上箭头显示最后一个历史命令
history | more 可以分页查看全部的历史命令清单
标准输入输出
0号文件 分配给标准输入文件 对应键盘
1号文件分配给标准输出文件 对应屏幕
2号文件分配标准错误输出文件 对应屏幕
重定向
输入重定向以<开头如命令wc为统计行数、单词数、字符数,在命令行只键入wc时统计标准输入文件的。wc</home/myfile 就可以显示/home/myfile内的行数、单词数、字符数。以<<开头则代表分隔符 如
wc <<8
>my
>first
>test
>8
3 3 11
输出重定向以>开头.如ls -l >file 则为将ls -l的信息写入file文件中,此时会清楚file文件中的内容然后写入。以>>代表在文件末尾追加。
管道
管道用来将前面命令的输入传给后一个命令的输入。
如ls -al ./ | wc
48 375 2450
管道可以以重定向操作结合使用。
脚本
shell脚本的解释程序就是shell本身。
逻辑运算符 -a 双目运算符 逻辑与 ,-o双目运算符逻辑或,-!单目运算符逻辑否。
文件比较运算符 后接文件名
-e文件存在为真
-d如果文件为目录则为真 (ls可以看到目录文件属性为d)
-f如果文件为常规文件则为真 (ls可以看到常规文件属性为f)
-L如果文件为符号链接为真 (ls可以看到链接文件属性为l)
-r/w/x 如果文件可读/写/执行 为真 (对应文件的三种属性)
字符串比较符
-z str字符串长度为0 为真(zero)
-n str字符串长度非0 为真(not zero)
str1 != str2 不同为真 ,str1 = str2 相同为真 (注意只有字符串可以直接用=)
算数比较运算符
num1 -eq num2 等于(equal),
-ne 不等于(not equal)
-lt 小于(less than)
-le 小于等于(less or equal)
-gt 大于
-ge 大于等于