shell相关总结1-100
centos7 系统
1、sed 匹配某个字段,但是修改的是下一个字段
sed -i "/部署方式/{n;s/\\"value\\":.*/\\"value\\": \\"2\\"/}" 1.json
2、linux主机互信
ssh-keygen -t rsa ssh-copy-id -i /root/.ssh/id_rsa.pub IP
无ssh-copy-id命令情况下
cat ~/.ssh/id_rsa.pub|ssh 10.0.1.1 "umask 077; mkdir -p .ssh;cat >> .ssh/authorized_keys"
3、处理json文本,使用jq命令
dic=`cat ./version.json` app_name=`echo $dic|jq '.app_name'`
4、脚本带参数执行 getopts命令
while getopts "i:c:n:ta:" opt; do case $opt in i) PlatformIp=$OPTARG;; c) ChannelNo=$OPTARG;; n) Num=$OPTARG;; t) type=1;; a) pass=$OPTARG;; esac done
5.expect 用法举例
ip=$1
password="123456"
expect <<EOF
set timeout 30
spawn ssh-copy-id -i /root/.ssh/id_rsa.pub $ip
expect {
"yes/no" { send "yes\n";exp_continue }
"password" { send "$passws\n" }
}
expect "password" { send "$password\n" }
EOF
6. while循环内使用ssh 导致自动退出的问题解决方法
使用重定向,将文件内容输入到while命令,while命令每次使用read从输入中读取一行数据。
如果在while循环中调用了ssh命令,那么ssh就会把当前输入中所有的数据读走,也就是重定向给while命令的数据,都被ssh命令读走了,以至于下次循环的时候,read读到的内容为空,导致循环提前结束。
解决这个问题两种方式
- 使用ssh的-n参数:用/dev/null来当ssh的输入,阻止ssh读取本地的标准输入内容。ssh -n root@1.1.1.1 "echo $1"
- ssh xxxx < /dev/null 重定向shell命令的输入
7. centos系统查看磁盘类型
cat /sys/block/sda/queue/rotational,sda可修改
返回0:SSD盘
xfs_repair -v -L /dev/dm-0
**.sh >/dev/null 2>&1 &
11.安卓脚本后台执行之后无法退出adb,提示You have running jobs
adb -s *** shell "sh **.sh >/dev/null 2>&1 &"
12.多个文本合一错行合一
cat 1.txt |while read lines; do echo $lines >> new.txt;echo >>new.txt; done
cat 2.txt |while read lines; do sed -i "0,/^$/s/^$/$lines/g" new.txt ; done
13:vim/vi

14: vim 设置文本格式 dos or unix
:set ff=unix #转换为unix格式
:set ff=dos #转换为windows格式
15:前一个命令的输出作为grep的输入时需要为标准输出,如果是error 则忽略
需要查询错误里的内容作为输入 2>&1 把error输出到标准输出1中
adb shell "am start -n com.android.settings/.settings" 2>&1 |grep -i error
subprocess.getoutput(f"adb -s {deviceid} shell mkdir -p /data/local/tmp/ufs/{fileSize}kfile/{i}/")
subprocess.getoutput(f"adb -s {deviceid} shell \"cd /data/local/tmp/ufs/{fileSize}kfile/{i}/;dd bs={fileSize}k count=10000 if=/dev/zero |split -b {fileSize}k -a 5\"")
cmd = f"find /data/local/tmp/ufs/{fileSize}kfile/{i}/ -name \"x*[a,c,e,g,i,k,m,o,q,s,u,w,y]\" |xargs rm -rf"
浙公网安备 33010602011771号