前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >一些shell脚本

一些shell脚本

作者头像
efonfighting
发布2019-11-24 18:00:51
6830
发布2019-11-24 18:00:51
举报
文章被收录于专栏:一番码客一番码客

本文目录

sudo自动输入密码

远程执行shell命令

间接引用

批量文件命名

判断某个文件夹是否存在并

点击随机数位置

去除所有本地化的设置

修改sh默认连接到bash的一种方法

命令行中执行命令行

注释多行

命令行实现多条shell

set命令

显示文件夹下所有文件的绝对路径

awk

$变量值

secure.sh

sudo自动输入密码

其中zjk123为密码

代码语言:javascript
复制
echo 'zjk123' | sudo -S cp file1 /etc/hosts

远程执行shell命令

代码语言:javascript
复制
sshpass -p efon ssh [efonfighting@192.168.31.70](mailto:efonfighting@192.168.31.70) "rm -rf /home/efonfighting/efon_driver_html/*"

间接引用

代码语言:javascript
复制
$'$i'

批量文件命名

代码语言:javascript
复制
ls  | while read line;do a=`echo $line | sed -e 's/?//g'`;mv $line $a ;done;
ls  | while read line;do a=`echo $line | sed -e 's/\*//g'`;mv $line $a ;done;
ls  | while read line;do a=`echo $line | sed -e 's/\///g'`;mv $line $a ;done;
ls  | while read line;do a=`echo $line | sed -e 's/|/_/g'`;mv $line $a ;done;
ls  | while read line;do a=`echo $line | sed -e 's/</_/g'`;mv $line $a ;done;
ls  | while read line;do a=`echo $line | sed -e 's/>/_/g'`;mv $line $a ;done;
ls  | while read line;do a=`echo $line | sed -e 's/(/_/g'`;mv $line $a ;done;
ls  | while read line;do a=`echo $line | sed -e 's/)/_/g'`;mv $line $a ;done;
ls  | while read line;do a=`echo $line | sed -e 's/:/_/g'`;mv $line $a ;done;
ls  | while read line;do a=`echo $line | sed -e 's/\ /_/g'`;mv $line $a ;done;
ls  | while read line;do a=`echo $line | sed -e 's/(/_/g'`;mv $line $a ;done;
ls  | while read line;do a=`echo $line | sed -e 's/)/_/g'`;mv $line $a ;done;
ls  | while read line;do a=`echo $line | sed -e 's/\.\.\./\./g'`;mv $line $a ;done;
ls  | while read line;do a=`echo $line | sed -e 's/…//g'`;mv $line $a ;done;
ls  | while read line;do a=`echo $line | sed -e 's/ | //g'`;mv $line $a ;done;

判断某个文件夹是否存在并

代码语言:javascript
复制
test -d $(GMPF_IMG) && cp -vuf $(efon_ROOT)/target/product/$(PROJECT)/images/* $(GMPF_IMG)

点击随机数位置

代码语言:javascript
复制
while true;do input tap $(($RANDOM%100 +260)) $(($RANDOM%80 +760));done

去除所有本地化的设置

代码语言:javascript
复制
export LC_ALL=C

在shell脚本中,这一句的作用是为了去除所有本地化的设置,让命令能正确执行。

修改sh默认连接到bash的一种方法

代码语言:javascript
复制
sudo dpkg-reconfigure dash

选择no 即可!

命令行中执行命令行

代码语言:javascript
复制
adb pull -a /sdcard/screencap.png cap`date +%m%d%H%M%S`.png

注释多行

代码语言:javascript
复制
:<<eof
被注释的多行内容
eof

命令行实现多条shell

多文件重命名:

代码语言:javascript
复制
ls | while read line;do **i=$[$i + 1];a=`printf "%03d" $i`**;mv $line $a.mp4;done
ls | while read line;do mv $line ${line%%"房地产广告精选1"*}房地产广告精选${line##*"房地产广告精选1"};done
代码语言:javascript
复制
find -name "358*.git" | while read line; do  cd $line; git fetch; cd ..; done
代码语言:javascript
复制
while read line
do
   …
done < file
代码语言:javascript
复制
while read line
do
   …
done < file

set命令

-a:标示已修改的变量,以供输出至环境变量。 -b:使被中止的后台程序立刻回报执行状态。 -C:转向所产生的文件无法覆盖已存在的文件。 -d:Shell预设会用杂凑表记忆使用过的指令,以加速指令的执行。使用-d参数可取消。 -e:若指令传回值不等于0,则立即退出shell。 -f:取消使用通配符。 -h:自动记录函数的所在位置。 -H Shell:可利用"!"加<指令编号>的方式来执行history中记录的指令。 -k:指令所给的参数都会被视为此指令的环境变量。 -l:记录for循环的变量名称。 -m:使用监视模式。 -n:只读取指令,而不实际执行。 -p:启动优先顺序模式。 -P:启动-P参数后,执行指令时,会以实际的文件或目录来取代符号连接。 -t:执行完随后的指令,即退出shell。 -u:当执行时使用到未定义过的变量,则显示错误信息。 -v:显示shell所读取的输入值。 -x:执行指令后,会先显示该指令及所下的参数。

删除以a开头的行 :

代码语言:javascript
复制
sed -i '/^a.*/d' tmp.txt
代码语言:javascript
复制
ls  | while read line;do a=`echo $line | sed -e 's/?//g'`;mv $line $a ;done;
代码语言:javascript
复制
sed -i 's/20.* : http/http/g' 一汽奔腾.txt
代码语言:javascript
复制
sed -n '2p' //第2行
代码语言:javascript
复制
sed -i '/^$/d' tmp.txt 删除空行
代码语言:javascript
复制
sed -i '/\r/d' tmp.txt 删除^M
代码语言:javascript
复制
cat ssss.txt | grep "@*.com" | sed 's/.com.*$/.com/g' | sort | uniq   #(uniq 去除重复,必须先进行正则表达 后'.*$'  前 '^.*')

显示文件夹下所有文件的绝对路径

代码语言:javascript
复制
find "$(pwd)" -maxdepth 1 | sed '1'd  # 删除第一行

awk

代码语言:javascript
复制
 awk -F ',' '{print NF-3}' efon_ver1.0.cfg >1.txt 

1表示记录中的第一个字段。

代码语言:javascript
复制
awk '{print $1}'   //第1列
awk '{print $(NF-1)}'  //倒数第2列

NR表示从awk开始执行后,按照记录分隔符读取的数据次数,默认的记录分隔符为换行符,因此默认的就是读取的数据行数,NR可以理解为Number of Record的缩写。 FNR,每当处理一个新文件的时候,FNR就从1开始计数,FNR可以理解为File Number of Record。在awk处理多个输入文件的时候,在处理完第一个文件后,NR并不会从1开始,而是继续累加,因此就出现了FNR。 NF表示目前的记录被分割的字段的数目,NF可以理解为Number of Field。

代码语言:javascript
复制
awk -F ',' 'gsub($1,NF)' 48k_script_example.cfg   //将文本以“,”分割,将第1域替换成“每行列数”
代码语言:javascript
复制
cat GMUI3.0.0.LIST | wc -l //查看输出行数
代码语言:javascript
复制
sed -n '1p' 1000098.txt |awk '{print NF}'    //查看某行有多少列

$变量值

$? //返回值

secure.sh

代码语言:javascript
复制
#!/bin/bash
if [ "" = "$1" ] || [ "" = "$2" ];then
echo security.sh -e/-d filename
elif [ "-e" = $1 ];then
tar -zcf - $2 | openssl des3 -salt -k \!1qawertsW2 | dd of=$2.des3
elif [ "-d" = $1 ];then
dd if=$2 | openssl des3 -d -k \!1qawertsW2 | tar zxf -
fi
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-11-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 一番码客 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • sudo自动输入密码
  • 远程执行shell命令
  • 间接引用
  • 批量文件命名
  • 判断某个文件夹是否存在并
  • 点击随机数位置
  • 去除所有本地化的设置
  • 修改sh默认连接到bash的一种方法
  • 命令行中执行命令行
  • 注释多行
  • 命令行实现多条shell
  • set命令
  • 显示文件夹下所有文件的绝对路径
  • awk
  • $变量值
  • secure.sh
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档