第九篇 shell脚本,快速创建文件以及杀掉进程和日常总结

心得:最近两天因为一些事情没有更新,但没有过不去的事情,身为芸芸众生里的一员,我的要求其实并不高,有房有车有自己想要的生活,看似简单,实在压力太大。看看别人呢,往往能从别人的影子看到自己,遇到比你差一些的,你觉的骄傲,但是你的资本在哪里呢?遇到比你优秀的人,他们比你更聪明更努力,觉得达不到,这可能是你生活在不高不低的原因了。尽管这条路很孤单,我还是想要努力地为自己的生活精彩的努力一番。

9.如何写一些简单实用的脚本呢,练练手,写了一个方便创建文件的小脚本,每次我们都会创建一些新的文件比如shell.sh或者python.py文件,但麻烦的是每次都需要我们去定义开头,添加日期,定义模块,增加执行权限,这一大串的东西,完全可以用脚本来实现,来看看吧:

一、快速创建文件以及杀掉进程

#!/bin/bash

#A=$(echo $1 | grep "^.\+\.[a-z]\{2\}$" | sed 's/.+\.//g')   #匹配出文件的结尾字符设置为两位,遇到特殊字符得加\转意,我一般用shell和python多一些
A=$(echo $1 | sed 's/.\+\.//g')

if [ -a $1 ];then
	echo -e "This file "$1" have been exist \n"
else
	echo -e "creat new file $1 for you \n"
	touch $1
	chmod 777 $1
	if [ $A == "sh" ];then
		echo -e "#!/bin/bash \n" >>$1
		echo "#filename: $1 " >>$1
		echo "#Date:  $(date)" >>$1
		echo "#Email:  tianjian361@163.com" >>$1
		echo -e "#Author:  TianJian \n" >>$1

		echo "#---------------------------------------------------" >>$1
	elif [ $A == "py" ];then
		echo -e "#coding=utf-8 \n" >>$1
		echo "import os" >>$1
		echo "import re" >>$1
		echo "import sys" >>$1
		echo "import time" >>$1
		echo "import math" >>$1
		echo -e "import random \n" >>$1

		echo "#filename: $1 " >>$1
		echo "#Date:  $(date)" >>$1
		echo "#Email:  tianjian361@163.com" >>$1
		echo -e "#Author:  TianJian \n" >>$1
		echo "#---------------------------------------------------" >>$1
	fi
fi

echo new file content as below:
cat $1

看看结果,假如我需要新建一个sh文件:

tianjain@tianjain-TM1701:~$ ./test.sh hello.sh
creat new file hello.sh for you 

new file content as below:
#!/bin/bash 

#filename: hello.sh 
#Date:  2019年 09月 13日 星期五 12:06:50 CST
#Email:  tianjian361@163.com
#Author:  TianJian 

#---------------------------------------------------
tianjain@tianjain-TM1701:~$ 

来看看python新建文件:

tianjain@tianjain-TM1701:~$ ./test.sh hello.py
creat new file hello.py for you 

new file content as below:
#coding=utf-8 

import os
import re
import sys
import time
import math
import random 

#filename: hello.py 
#Date:  2019年 09月 13日 星期五 12:08:01 CST
#Email:  tianjian361@163.com
#Author:  TianJian 

#---------------------------------------------------
tianjain@tianjain-TM1701:~$ 

虽然只是一个小脚本但可以很大程度减少我们的工作内容,让我们很方便。

9.2来一个杀进程的小脚本,当有时候程序在后台执行,不会停止,但如果你,在任务执行完,杀死关于它的所有进程,这样会尽可能的减少计算的使用内存:

PID=$(ps -ef | grep $1 | grep -v "grep" | awk '{print $2}')

for i in $PID
do
	echo $PID
	kill -9 $i
done

结果:

tianjain@tianjain-TM1701:~$ ./killer.sh hello.sh 
25497 28181 28183
25497 28181 28183
已杀死

杀死关于某项任务的一切进程。

二、日常总结

1、管道
管道被放在命令之间,将一个命令的输出当作另外一个命令的输入中cmd1 | cmd2
2、退出状态码
判断上一条指令是否执行成功

date
echo $?

在函数中也可以指定状态码

function func(){
	echo 123
	exit 1
}

状态码的范围在0~255,0代表执行成功

3、通过文件名查找文件路径

find / -name tian.txt

第一个参数为路径,第二个参数-name,第三个参数为文件名,可以用正则

4、在root用户下修改其他用户密码

#修改当前用户密码
passwd
#修改其他用户密码
passwd tian

5、linux密码不过期设置

第一种:

#设置不过期天数
chage -M 99999 root
#查看
chage -l root

第二种:
/etc/login.defs修改PASS_MAX_DAYS 的默认值,然后重启生效

6、获取当前路径的两种方式

  1. pwd
    获取当前路径,也就是当前执行的路径,非源脚本文件的位置;假如/home/路径去调用/home/tian/路径下的脚本,/home/tian/路径中脚本存在pwd命令,那么它的pwd路径结果为/home/路径
  2. $0
    当我们需要此脚本存在的路径时,我们可以使用$0去锁定文件位置,它会生成一个绝对路径,通常我们会使用dirname $0来获取源脚本存在的位置,dirname获取文件路径

7、连续执行命令用分号隔开

echo 123;ls -l ;echo 321

8 、字符串拼接

a=${dir_name}/filename.log

9、bin文件解释
bin文件时所有用户都可以执行的可执行程序
/usr/bin 是系统安装时自带的一些可执行程序,即系统程序
/usr/local/bin 用户在编译安装时,默认可执行程序的安装位置,自行安装软件可以执行程序的软链接可用此路径:ln -s xxx /usr/local/bin/xxx

10、判断框[]和[[]]区别
[ xxx ] 只支持整数表达式,小数无效,-a,-o, -ne ,-gt,-gte,-lt,-lte 在其中使用<.>,=需要用反斜杠\进行转义
[[ xxx ]] 是[]运算符的扩充,能够支持<.>,=不需要转义,支持||,&&不支持-a,-o 可以支持小数表达式,(当使用-ge,-lt只能对比整数)还可以使用正则。

11、剔除空格防止计算出错
当我们需要通过正则去筛选某个log的数据时,有时数据中会存在\r,\n等,执行运算$()时会报错,“syntax error:invalid arithmetic operatior”,需要用sed 's/\s//g',剔除空格

12、shell脚本中打印空格方法

echo -e "Hello \n World"
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值