【linux与shell编程指南 第三章-后台执行命令】
1、cron:系统调度进程,可以使用它在每天的非高峰负荷段运行作业,或在一周或一个月中的不同时段运行。
at:使用它在一个特定的时间运行一些特殊的作业,或在晚些时候的非负荷高峰时段运行
&:在后台运行一个占用时间不长的进程
Nohup:运行一个命令,即使用户退出也不受影响
2、Crontab文件格式
分 时 日 月 星期 命令
1-60 1-24 1-31 0-6 绝对路径
列举使用都好,区间使用- ,如果是在该列中没有限制,使用*
在脚本中设置好脚本运行的所有环境变量。
3、查询当前日期信息
date
echo `date`表示如果date是命令时就执行相应的命令,如果是普通字符时则显示普通字符。
echo命令的含义是将消息输出到标准输出中,如果是启动转义符的话,加-e参数,禁止时使用-n参数
例如:echo -e "\n my home is $HOME" 空一行
echo -n "\n my home is $HOME"不空行
要想输入双引号需要在引号前面加入转义字符
echo "\"my name is $HOME\""
read命令:可以从键盘或者文件的某一行输入信息,并将其赋给一个变量。
注意,他是以空格作为变量之间的分割符的。
cat命令用来显示文件的内容,或者创建文件,注意他是一次全部显示,如果想分页显示时,可以使用more命令或者采用管道输入到具有分页功能的命令中。使用-v参数可以显示控制符
cat ls.txt|more
cat > test.txt
管道:他就是将信息从一端输入到另一端,sed,awk和grep都很适合于管道
tee命令:把一个副本输出到标准输入,而另一个副本输出到文件中,使用-a参数,进行文件的追加,他也可以定向到终端上。
4、标准输入输出,错误
0,1,2 对应标准输入,输出,错误
使用标准输入:
sort
注意结合使用标准输出和标准错误
cat test1 test2 test3>test.out 2>test.err
合并标准输出和标准错误
ls -al>test.out 2>&1
5、exec命令可以替换当前的shell,而没有启动子shell
【第6章命令执行控制】
1、&&
command1&&command2表示如果第一个命令执行成功,才执行第二个命令。
2、||
command1||command2表示如果第一个命令执行失败了,才执行第二个命令
3、使用(),{}把命令结合在一起
为了在当前shell中执行一组命令可以使用命令分割符隔开每一个命令,并把所有的命令用圆括号括起来。格式:(command1;commd2;commd3...)
如果使用{}来代替(),那么相应的命令将在子shell中执行,而不是在当前shell中执行,只用档{}中的所有命令的输出作为一个整体被重定向时才使用{},否则在当前shell中执行。
4、grep和正则表达式
格式:
grep 选项【正则表达式】文件
使用grep进行精确匹配方法:
grep '48\>' test.txt 这是精确匹配48
grep在缺省情况下是对大小写敏感的,如果忽略大小写可以使用参数-i
使用正则表达式时,最好用单引号引起来,这样可以防止grep中使用的专有模式与shell命令的特殊方式相混淆。
5 、测试变量是否已运行:
echo ${file:?} 测试变量file是否已经设置
echo ${file:-txt}测试变量file如果已经设置则使用原设置的值,否则使用txt,注意:与-之间没有空格
设置只读变量:readonly 变量名
查看系统的只读变量: readonly
6、环境变量
显示环境变量跟显示本地变量一样使用echo,但是将环境变量引入到用户进程需要使用export导出。显示系统的所有环境变量使用env
注意:在shell脚本中调用shell,要使用绝对路径。
位置环境变量是:使用 $0-$9,$0记录文件名
echo -e参数显示控制字符
7、shell脚本
使用shell脚本可以加快处理复杂问题的速度,简化时间,提高效率。注意,调试脚本时一步步进行,并且把结果保存起来,这是一个好方法。shell脚本第一行是#!/bin/sh,它是告诉shell调用bourne shell解释器,注释行用#,最后要加可执行权限。 把脚本放在.profile中的PATH路径指定的目录下。
8、 使用expr时,需要符号之间有空格
注意:if 与条件符号[]之间必须有空格
9、$#与$@的区别是$#表示输入参数的个数,$@表示输入参数的具体值,在使用时需要用双引号
10、/dev/null与/dev/zero的区别:
/dev/null,又称无底洞,送给他的东西,通吃而且也不会撑着。
/dev/zero,它是一个输入设备,可以用来初始化文件,可以提供无穷尽的0
11、使用dd命令创建文件时,=号两边不能有空格
dd if=/dev/zero f=/root/dd.txt count=1024 bs=1024
12、变量赋值问题
如果当前变量有值,则默认使用。如果没有值的话,用另一个变量进行赋值。
例如:
var_x=wangysh
var_y=yangyh
: ${var_x:=$var_y}
echo $var_x时显示wangysh,如果unset var_x时,则显示yangyh
13、[]中间的等号两边必须有空格,例如:[ "_USER_NAME = "" ]而不能这样[ "_USER_NAME"="" ]
for语句中:
for loop
do
....
done 其中loop变量为入口参数值
14、awk与wc获取字符串的区别是:awk默认把字符串结尾的空格截掉,而wc会连空格也计算在内。
15、测试函数的方法是:先将作为普通代码进行测试,然后转换为函数,这样可以节省大量的时间。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/318184/viewspace-440365/ ,如需转载,请注明出处,否则将追究法律责任。