Linux基础3.20.2018
Shell脚本
1 shell概述:shell的作用—命令解释器,”翻译官“,shell将命令解释为Linux内核可以执 行的2进制代码。并将执行的结果返回在标准终端上。
2 shell基础:历史命令 history
-n 数字,意思是要列出最近几行n笔命令行表的意思;
-a 将目前新增的history命令新增如histfiles中,若没有加histfiles,则默认写入~/.bash_history;
-c 将目前的shell中的所有history内容全部消除;
历史命令默认会保存1000条,可以在环境变量配置文件/etc/profile中进行修改。
3 历史命令的调用:使用上下箭头调用以前的历史命令;
使用!n重复执行第n条命令;
使用!!重复执行上一条命令;
使用!字串重复执行最后一条以该字符串开头的命令;
4 命令与文件补全:在bash中,命令与文件补全是非常方便的,在输入文件或命令时按”Tab“ 。
5 命令别名: alias 别名=‘原命令’
注意:若要每次登入就自动生效别名,则把别名加在/etc/prifile或~/.bashrc中。然后#source~/.bashrc;
若要让每个用户都生效别名,则把别名加在/etc/bashrc最后面,然后#source/etc/bashrc。
6 删除别名:unalias
7 多命令顺序执行: ;命令1命令2 多个命令顺序执行,命令之间没有任何逻辑联系;
&& 命令1&&命令2 逻辑与当命令1正确执行,则命令2才会执行,当命令1执行不正确,则命令2不会执行;
|| 命令1||命令2 逻辑或当命令1执行不正确,则命令2才会执行,当命令1正确执行,则命令2不会执行;
8 管道符:命令1 | 命令2 命令1的正确输出作为命令2的操作对象。
9 Cut命令:可将一段信息的某一段给他切出,处理的信息是以行为单位。
-d 后面接分隔字符。与-f一起使用;
-f 依据-d的分隔字符将一段信息分割成为数段,用-f取出的第几段的意思;
-c 以字符的单位取出固定字符区间;
10 tee命令: -a 以累加的方式,将数据加入file当中!
11 echo命令: -e 支持反斜线控制的字符转换;
-n 换行且行标移至行首;
12 转义字符: \a:发出警告声;
\b:删除前一个字符;
\c:最后不加上换行符号;
\f:换行但光标依旧停留在原来的位置;
\n:换行且光标移至首行;
\r:光标移至首行,但不换行;
\t:插入tab;
\v:与\f相同;
\\:插入\字符;
\nnn:插入nnn(八进制)所代表的ASCⅡ字符;
13 shell脚本的基本元素: (1)#!/bin/bash,指出shell类型
(2)#注释
(3)变量
(4)控制
例如一个shell脚本: vi datewho.sh
#! /bin/bash
#this is first shell
date;who
14 运行脚本的shell脚本方法:
方法1:#sh./datewho.sh
方法2:#chmod +x datewho.sh
#./datewho.sh
15 shell变量可以保存如路径、文件名或者一个数字
变量名可以由字母、数字、下划线组成,但是不能以数字开头。
在bash中,变量的默认类型都是字符串型,如果要进行数值运算,则必须指定变量类型为数值型。
16 变量分类:本地变量(局部变量只能在创建他们的shell中使用,可以在shell程序内任意使用和修改他们)、环境变量、内部变量(有系统提供的,环境变量不同,但用户不能修改它们)。
17 本地变量:注意细节等号两边不可以有空格;
取值包含空格,必须用双引号括起来;
Shell变量可以用大小写字母,区分大小写。
18 变量的声明和使用:变量不用声明类型
变量声明及赋值格式
(变量=值)
变量的引用
$变量名
${变量名}
19 让环境变量的修改在退出shell再次登录时仍有效,需要在相关配置文件中修改,bash的初始文件有: /etc/profile、~/.bash_profile、~/.bashrc、/etc/bashrc。
20 部分内部变量: $# 传送给shell程序的位置参数的数量;
$? 最后命令的完成或者shell程序内部执行的shell程序。0表示没有错误;
$0 shell程序的名称;
$* 调用shell程序时所传送的全部参数的单字符串;
“参数1“、”参数2“
$@ ”参数1 参数2“…形式的参数
$n 第n个参数
$$ 本程序的PID
21 shell中的特殊符号:注释符#、美元符$、单引号、双引号、倒引号
(单引号原样输出,双引号解释其中的$、转义字符、倒引号,倒引号内只能存放可执行命令)