shell处于kernel的外层,用来负责接收使用者输入的命令,然后将命令解释成kernel能了解的方式,然后由kernel去执行,再将结果传回默认的输出周边。shell是一种命令解释器,同时也是一个程序语言。shell有很多种,在众多的Linux发行版中,标准的shell是bash,也是我们学习的主要对象。
第一个程序
#!/bin/bash
echo 'Hello World'
这样第一个shell脚本就成功的运行了。
登陆主机
退出登陆
文件
目录
通配符
转义符
字符集合
括号扩展
{g,nc,s}ftp 代表gftp ncftp sftp
shell结构大体是由设定变量、内置命令、shell的语法结构、函数组成。
#!/bin/bash
#说明使用/bin/bash作为这个脚本的解释器
#定义一个函数
function my_fun () {
echo "Hello, $1,today is $2"
}
#定义连个变量
name=$1
today=`date`
#函数调用
my_fun "$name" "$today"
父shell和子shell
login shell 和non-login shell
登陆(login)
执行新shell,分成两种情况
会检查 BASH_ENV 变量的内容,如果有定义,则执行
变量是暂时用来存储数据的地方,是一个内存空间。bash shell和其他的编程语言,没有“数据形态”,也就是说默认情况下不区分一个变量是整型还是浮点型等,除非你使用declare语句申明变量类型。在bash shell中,默认只有一种数据型,就是由字符组成的字符串。同时,设定的变量只在当前的shell中存在,也就是,每一个shell都会维护一份他们自己的变量,彼此不会有影响。可以把变量导出成环境变量,这样其他的shell就可以被子shell引用。
变量的命名规则:
变量设定:
引用变量:
环境变量:
bash的一些重要的内置变量:
$$ 目前shell的进程编号
高级变量中的3个主题:
测试变量不存在或值为空,则提示出错消息${变量名:?提示消息}
归纳为5种方法
5.使用命令let,例如let R=1+1
if-then
if 条件; then
if-then-else
if 条件; then
for
while
until
break continue
break跳出当前循环,continue提前进入下一次循环
函数是一些命令的集合,作用是让程序模块化。
语法:
或者
函数名()
}
或者
九、sed和awk
正则表达式
一个点(.)代表一个字符。
比如:.a. 代表3个字符,中间一个字符是a,两边各一个任意字符。
若要匹配点(.)本身,则使用转义字符。
行首匹配^
^出现在[]里,代表“非”
*代表前面的字符有0个或者0个以上
\{...\}代表制定符合的个数。
Sed
sed基本语法:sed '样式' 文件
样式中,使用// 代表寻找,比如1,5代表第一到第五行,/aaa/,/bbb/ 表示作用范围从aaa的行到bbb的行。
使用sed取代字符
awk