
shell 是你和linux系统之间的接口. 当然X Windows也是一个接口.
BASH 是linux缺省安装的shell. /bin/sh实际上是/bin/bash的链接.
查看版本使用命令 /bin/sh -version
管道和重定向
重定向输出
重定向输出用>操作符
ls -l > a.txt
ps >> b.txt 是在现有文件后面追加.
重定向输入
重定向输入用<操作符
管道
管道用操作符|
ps|sort|more
shell脚本有两种执行方式:
1. >/bin/sh shell_file
2. 把一个shell脚本转变成可执行的
chmod +x shell_file
shell的语法
❑ Variables: strings, numbers, environments, and parameters
❑ Conditions: shell Booleans
❑ Program control: if, elif, for, while, until, case
❑ Lists
❑ Functions
❑ Commands built into the shell
❑ Getting the result of a command
❑ Here documents
Variables
变量在使用之前无需声明类型.
所有变量均被认为是字符串类型.
自定义的变量名通常全部小写.
赋值符号两边不得有空格.
取变量的值应在变量名前加上$.
例子:
$ salutation=7+5
$ echo $salutation
7+5
$ salutation=Hello
$ echo $salutation
Hello
如果变量的值中间有空格,两侧必须用双引号括括起来.
例子:
$ salutation=”Yes Dear”
$ echo $salutation
Yes Dear
shell脚本执行之前,有几个环境变量会初始化
$HOME 当前用户的主目录
$PATH 搜索路径
$IFS shell脚本里接收输入的分隔符
$0 shell脚本的名字
$1, $2, ... 传递给shell脚本的单个参数.
$* 传递给shell脚本的全部参数的列表(用$IFS的第一个字母分隔).
$# 传递给shell脚本的参数个数
$$ shell脚本的进程ID
Conditions
条件结构:
if <条件>
then
<语句1>
else
<语句2>
fi
字符串条件-n string 字符串不为空-z string 字符串为空string1 = string2 字符串相同
string1 != string2 字符串不相同
算术比较expression1 -eq expression2 表达式相等expression1 -ne expression2 表达式不相等expression1 -gt expression2 前者大于后者expression1 -ge expression2 前者大于或等于后者expression1 -lt expression2 前者小于后者expression1 -le expression2 前者小于或等于后者! expression 表达式为false文件条件-d file 文件是一个目录-e file 文件存在-f file 文件是一个正则文件-g file 文件属于某个组-r file 文件可读-s file 文件尺寸非零-u file 文件属于某个用户-w file 文件可写-x file 文件可执行