shell脚本

shell 脚本 批量修改文件名

我与影子孤独终老i 提交于 2020-03-04 03:32:22
修改文件名前 #!/bin/bask # for a in $( ls /etc/yum.repos.d/CentOS* );do if [ $a != '/etc/yum.repos.d/CentOS-Media.repo' ];then #CentOS-Media.repo的文件名不修改 mv $a $a.bak #给文件加上后缀 .bak fi done 测试: 删除文件后缀 .bak#!/bin/bask # for a in $( ls /etc/yum.repos.d/Cent* );do b=${a%.b*} #从右边开始,删除第一个.b右边的字符 mv $a $b done测试:    来源: https://www.cnblogs.com/jw35/p/6138906.html

防止shell脚本被重复执行

左心房为你撑大大i 提交于 2020-03-04 03:28:43
1 #!/bin/bash 2 LOCK_NAME="/tmp/my.lock" 3 if ( set -o noclobber; echo "$$" > "$LOCK_NAME") 2> /dev/null; 4 then 5 trap 'rm -f "$LOCK_NAME"; exit $?' INT TERM EXIT 6 7 ### 开始正常流程 8 9 sh /app/system.sh 10 sleep 30 11 ### 正常流程结束 12 13 ### Removing lock 14 rm -f $LOCK_NAME 15 trap - INT TERM EXIT 16 else 17 echo "Failed to acquire lockfile: $LOCK_NAME." 18 echo "Held by $(cat $LOCK_NAME)" 19 exit 1 20 fi 21 echo "Done." 22 来源: https://www.cnblogs.com/Leonardo-li/p/12100271.html

用户/磁盘/内存/网络 管理

旧城冷巷雨未停 提交于 2020-03-03 22:54:56
用户管理 一些细节 root 用户为根用户,也就是 系统管理员 拥有全部权限 一个用户只能拥有一个 GID ,但是还可以归属于其它附加群组 用户管理的重要配置文件: /etc/passwd 用户名 密码位 UID 归属GID 姓名 $HOME目录 登录Shell /etc/shadow 用户名 已加密密码 密码改动信息 密码策略 /etc/group 群组名 密码位 GID 组内用户 /etc/gshadow 群组密码相关文件,不重要 /etc/sudoers 用户名 权限定义 权限 可以使用 pwconv 命令创建影子密码,将 /etc/passwd 文件中的密码转换到 /etc/shadow 文件 su [用户名] 切换到其它用户,默认切换到root用户。提示密码为将切换用户密码 -f 快速切换,忽略配置文件 -l 重新登录 -m , -p 不更改环境变量 -c < 命令 > 切换后执行命令,并退出切换 sudo [命令] 以其它用户的身份执行命令,默认以root的身份执行。提示密码为当前用户密码 -s 切换为 root shell -i 切换为 root shell ,并初始化 -u < 用户名 |UID> 执行命令的身份 -l 显示自己的权限 passwd [用户名] 设定用户密码 -d 清除密码 -l 锁定用户 -e 使密码过期,在下次登录时更改密码 -S

shell编程-运算符

那年仲夏 提交于 2020-03-03 19:41:52
运算符 + - * / % += 相当于 a+=b a=a+b -= *= /= %= 执行运算: 1. $( (a * b) ) 可以有空格 里面的运算符不需要转义 如果和字符串相加,字符串的变量默认为0 expr a + b 数字两边必须有空格 里面的运算符需要转义 转义符/ 不支持数字和字符串相加 [ ] 使用方括号 echo $ [a*b ] echo $ [a+b] 可以直接调用变量的值,无需添加$符号 可以有空格 里面的运算符不需要转义 不支持浮点数运算 浮点数运算: bc //linux自带的计算器 //支持变量运算 scale=4 //指定小数点后面保留4位 如何应用到脚本里: 借用管道符号 | # echo "scale=5; 10/ 3" | bc 运算多行: d=`bc <<EOF 1+2 3+4 5*6 EOF ` 命令`跟$(命令 )效果是一样的 ` 退出状态: # echo $? 查看上一个命令执行的退出状态 返回值为0时,代表命令执行成功 非0的正整数时,执行不成功 exit=$(echo $?) 0 命令成功结束 1 一般性未知错误 2 不适合shell的命令 126 命令不可执行 127 命令未找到 128 无效的退出参数 130 通过ctrl+c 终止的命令 255 正常范围之外的退出状态码 状态码是可以自己定义的:0-255 a=10 exit

Android dumpsys常用命令

拥有回忆 提交于 2020-03-03 16:00:10
adb shell dumpsys,默认打印出当前系统所有service信息,在后面可加上具体的服务名 需要列出当前运行的服务,可运行: adb shell dumpsys | findstr DUMP 下面简单列下我用到的一些命令...(在编写脚本时需要获取一些状态值供判断用) 获取设备分辨率: adb shell dumpsys display | findstr DisplayDeviceInfo DisplayDeviceInfo{"内置屏幕": 1080 x 1920, 55.0 fps, density 480, 464.949 x 468.923 dpi... 获取设备电池信息: adb shell dumpsys battery Current Battery Service state: AC powered: false USB powered: true Wireless powered: false status: 2 #电池状态 health: 2 present: true level: 34 #电量 scale: 100 voltage: 3848 current now: -427943 temperature: 280 #电池温度 technology: Li-ion ​ 获取cpu信息: adb shell dumpsys cpuinfo

Linux Shell的18条常用命令整理

自作多情 提交于 2020-03-03 10:04:22
1、 ls: 类似于dos下的dir命令 ls最常用的参数有三个:-a -l -F。 ls –a Linux上的文件以.开头的文件被系统视为隐藏文件,仅用ls命令是看不到他们的,而用ls -a除了显示一般文件名外,连隐藏文件也会显示出来。 ls –l 该参数显示更详细的文件信息。 ls –F 使用这个参数表示在文件的后面多添加表示文件类型的符号,例如*表示可执行,/表示目录,@表示连结文件,这都是因为使用了-F这个参数。但是现在基本上所有的Linux发行版本的ls都已经内建了-F参数,也就是说,不用输入这个参数,我们也能看到各种分辨符号。 2、cd: 用于切换用户当前工作目录 cd aaa 进入aaa目录 cd 命令后不指定目录,会切换到当前用户的home 目录 cd ~ 作用同cd后不指定目录,切换到当前用户的home 目录 cd - 命令后跟一个减号,则会退回到切换前的目录 cd .. 返回到当前目录下的上一级目录 3、pwd: 用于显示用户当前工作目录 4、mkdir 和 rmdir midir:创建目录 rmdir:删除目录 两个命令都支持-p参数,对于mkdir命令若指定路径的父目录不存在则一并创建,对于rmdir命令则删除指定路径的所有层次目录,如果文件夹里有内容,则不能用rmdir命令 如下: mkdir -p 1/2/3 rmdir -p 1/2/3 5、cp:

shell脚本学习——数组的练习

試著忘記壹切 提交于 2020-03-03 07:22:21
1 使用循环批量输出数组的元素 #!/bin/bash #使用循环批量输出数组的元素 array = ( a b c d e ) for (( i = 0 ; i < ${#array[@]} ; i ++ )) #从数组的第一个下标0开始,循环数组的所有下标 do echo ${array[i]} #打印数组元素 done 2 通过竖向列举方法定义数组元素并批量打印 #!/bin/bash #通过竖向列举方法定义数组元素并批量打印 array = ( westos redhat python linux ) for (( i = 0 ; i < ${#array[@]} ; i ++ )) do echo "This is NO. $i ,then content is ${array[i]} " done echo == == == == == == == == == == == == == == == == == == echo "array lenth: ${#array[@]} " 3 将命令结果作为数组元素定义并打印 #!/bin/bash #将命令结果作为数组元素定义并打印 dir = ( $( ls /array ) ) for (( i = 0 ; i < ${#dir[ * ]} ; i ++ )) do echo "This is NO. $i

linux BASH shell

有些话、适合烂在心里 提交于 2020-03-02 19:23:32
一. BASH shell的功能 命令编修能力 (history): 命令与文件补全功能: ([tab] 按键的好处) 命令别名配置功能: (alias) 工作控制、前景背景控制: (job control, foreground, background) 程序化脚本: (shell scripts) 通配符: (Wildcard) 当命令超长的时候使用"\"进行两行或者多行写入。 Bash shell 的内建命令: type [root@www ~]# type [-tpa] name 选项与参数: :不加任何选项与参数时,type 会显示出 name 是外部命令还是 bash 内建命令 -t :当加入 -t 参数时,type 会将 name 以底下这些字眼显示出他的意义: file :表示为外部命令; alias :表示该命令为命令别名所配置的名称; builtin :表示该命令为 bash 内建的命令功能; -p :如果后面接的 name 为外部命令时,才会显示完整文件名; -a :会由 PATH 变量定义的路径中,将所有含 name 的命令都列出来,包含 alias 范例一:查询一下 ls 这个命令是否为 bash 内建? [root@www ~]# type ls ls is aliased to `ls --color=tty' <==未加任何参数,列出 ls

shell命令

安稳与你 提交于 2020-02-29 10:03:38
执行shell文件的方式 source xx.sh sh xx.sh bash xx.sh ./xx.sh 管道与重定向 grep "/bin/bash$" /etc/passwd | awk (-F:) '{print $1,$7}' awk是进一步过滤 >会覆盖 >>附加 shell脚本变量 引用变量值:在变量名称前添加”$” 当变量名称容易和紧跟其后其他字符相混淆时,需要添加”{}”将其括起来 “”起界定字符串的作用 反撇号:ls -lh `which tar` read -p "请输入想要安装的软件:" b//把输入的值赋予b export //转化为全局变量 数值变量的运算 expr //进行整数之间的运算 运算符 意义 ++ -- 增加及减少,可前置也可放到结尾 * / % 乘法、除法、取余 + - 加法、减法 < <= > >= 比较符号 == != 等于与不等于 & 位的与 ^ 位的异或 | 位的或 && 逻辑的与 || 逻辑的或 ?: 条件表达式 = += -= *= /= %= &= ^= <<= >>= |= 赋值运算符a+=相当于a=a+1 set 查看定义的变量 unset Serversion 取消变量 readonly 变量名 设置只读变量,unset不能删除只读变量 特殊变量 环境变量 echo $PATH//环境变量 ~/.bash_profile

Shell脚本入门-7

百般思念 提交于 2020-02-29 09:01:59
Shell echo命令 Shell 的 echo 指令与 PHP 的 echo 指令类似, 都是用于字符串的输出 。命令格式:echo string 您可以使用echo实现更复杂的输出格式控制。 1.显示普通字符串: echo "It is a test" ,这里的双引号完全可以省略, 以下命令与上面实例效果一致:echo It is a test 2.显示转义字符 : echo "\"It is a test\"" , 结果将是:"It is a test" , 同样,双引号也可以省略。 备注: \" \": 转移一对""符号。 3.显示变量: read 命令从标准输入中读取一行,并把输入行的每个字段的值指定给 shell 变量 #!/bin/sh read name echo "$name It is a test" 以上代码保存为 test.sh,name 接收标准输入的变量,结果将是: [root@www ~]# sh test.sh OK #标准输入 OK It is a test #输出 4.显示换行:注意: echo -e echo -e "OK! \n" # -e 开启转义 echo "It it a test" 输出结果: OK! -- 备注:(有一空行) It it a test 5.显示不换行: 注意: echo -e #!/bin/sh echo -e