1.正则匹配(批处理)
写脚本将登陆目录里的所有以a为第2个字母,以数字结尾的cpp文件拷贝到zhangsan的根目录里
拷贝文件的命令脚本需要赋予可执行权限,在用户间相互拷贝文件需要root权限。
后台运行
** 如下100000次循环脚本 1.sh**
$ vi 1.sh
for((i=0;i<100000;i++))
do
echo hello is $i
cp
done
$ chmod u+x ./1.sh
试着前台运行,然后中断。
试着后台运行,然后中断。含输出重定向debug.txt和错误重定向error.txt
nohup ./1.sh >debug.txt 2>error.txt &
实验中发现使用Ctrl+C并没有终止前台任务,仍然在不断输出。故使用Ctrl+Z命令中断任务,仍然可以通过fg将任务重新在前台启动或者使用bg让任务在后台继续执行。
试验一下,当退出该字符终端,再重新登录回来,1.sh是否还在运行 ?
试验一下,如果不用nohup而是直接运行 1.sh ,当退出该字符终端,再重新登录回来,1.sh是否还在运行 ?
退出后1.sh仍然在运行,nohup命令表示不挂起也就是在后台不挂断运行命令,退出终端不影响程序运行。重新登陆无法用jobs命令显示正在运行的程序,可以使用ps命令直接查询,并且可以获得进程号,用于杀死后台的进程。
不使用nohup命令运行脚本时,脚本在当前终端的父进程下运行,退出终端杀死该进程后,脚本子进程也相应结束。
在程序运行时,怎样监控程序的输出值 (tail -f debug.txt tail -f error.txt)
怎样知道文件 debug.txt有多少行 (wc -l debug.txt)
重定向输出程序运行结果以及报错的日志文件,而使用tail命令可以看到文件的末尾行,由于文件内容不断增加,从而可以动态监控程序输出。使用wc -l命令可以查询文件行数。
单双引号
定义一个常量varc , 使得这个常量的内容为 #hello $world
单引号内的内容直接输出,$不会显示变量而是直接显示。也即单引号不解析特殊字符。
定义一个变量varx,使得这个变量含有当前登陆用户名,当前目录 和当前目录里的所有文件名和目录名
双引号内可以显示去除特殊符号的含义,也即会解析双引号之间的内容。