
Shell
wellnw
Linux/openwrt/MTK/QCA/Realtek
展开
-
[openwrt-21.02]openwrt-21.02 shell脚本实现json数据解析及封装操作说明(libubox及jshn.sh)
libubox软件包是OpenWrt 12.09版本之后增加到新版本中的一个基础库,在Open Wrt 15.07中有很多应用程序是基于libubox开发的,如ubus、netifd和freecwmp等。这样带来了一些好处:我们不用关注底层基础功能,可以基于libubox提供的稳定API来进行进一步的功能开发。原创 2024-10-15 12:39:57 · 252 阅读 · 0 评论 -
【shell】shell利用随机数生成指定范围的随机数及随机获取数组中元素
后面是多少,就是最大是多少。原创 2024-05-08 16:20:14 · 707 阅读 · 0 评论 -
[Shell] Linux下使用sed指令匹配及替换mac地址实现
sed -i实现mac地址查找和替换原创 2022-10-24 10:33:42 · 713 阅读 · 0 评论 -
[shell] 通过指令自动生成mac地址方法
需求由于板子生成默认没有写mac地址,需要在软件实现自动生成mac地址mac地址说明mac地址前3个字节是厂商ID,是由IEEE分配给到指定厂商的,一半对于一个厂家是固定的,所以我们自动生成mac地址一般固定前三个字节生成mac地址方法使用openssl随机生成生成完整mac地址方法一:~ # openssl rand -hex 6 | sed 's/../&:/g; s/.$//'57:f2:3b:ea:29:66方法二:~ # openssl ran原创 2022-04-21 09:17:30 · 1150 阅读 · 0 评论 -
【Linux shell】Linux file指令查看系统cpu是32位还是64位
file指令介绍file [-bcLvz][-f <名称文件>][-m <魔法数字文件>...][文件或目录...]-b 列出辨识结果时,不显示文件名称。-c 详细显示指令执行过程,便于排错或分析程序执行的情形。-f<名称文件> 指定名称文件,其内容有一个或多个文件名称时,让file依序辨识这些文件,格式为每列一个文件名称。-L 直接显示符号连接所指向的文件的类别。-m<魔法数字文件> 指定魔法数字文件。-v 显示版本信原创 2022-03-10 11:22:20 · 808 阅读 · 0 评论 -
【Linux shell】Linux系统时间及掉电保存方法(需要系统支持hwclock)
使用date设置系统时间date -s "2022-03-07 16:00:00"使用hwclock查看当前时间hwclock使用hwclock从系统同步到硬件RTChwclock --systohc修改之后确认系统已经将系统时间同步到RTChwclock从RTC同步到系统指令hwclock --hctosys...原创 2022-03-07 16:28:31 · 1230 阅读 · 0 评论 -
shell脚本sed替换保持变量不被自动替换为变量值的方法
问题描述 在使用sed替换的时候,发现替换的变量总是自动替换为变量的值解决方案这是由于shell在sed之前会先将变量自动替换为值,要想保持不被替换,只需要在$前增加一个$符号即可将以下指令sed -i 's/RANLIB=$(aaaaa)arm-oe-linux-gnueabi-ranlib/RANLIB=$(aaaaa)ranlib/g' Makefile修改为 sed -i 's/RANLIB=$$(aaaaa)arm-oe-...原创 2021-12-23 10:37:44 · 1170 阅读 · 0 评论 -
Linux下查看目录属于那个磁盘分区指令(df)
df指令说明# df --helpUsage: df [OPTION]... [FILE]...Show information about the file system on which each FILE resides,or all file systems by default.Mandatory arguments to long options are mandatory for short options too. -a, --all includ原创 2021-11-08 10:52:31 · 1244 阅读 · 0 评论 -
Linux Shell字符串截取(ubuntu 16.04)
格式${varible##string} 从左向右截取最后一个string后的字符串${varible#string}从左向右截取第一个string后的字符串${varible%%string}从右向左截取最后一个string后的字符串${varible%string}从右向左截取第一个string后的字符串“*”只是一个通配符可以不要例子$ MYVAR=foodforthought.jpg$ echo ${MYVAR##fo}rthought.jpg$ echo ${MYVAR原创 2021-10-29 13:48:26 · 586 阅读 · 0 评论 -
Linux shell find dir -exec echo {} \;和find dir -exec echo {} +;说明
格式如下find dir -exec cmd \; 通常,后面的cmd命令需要处理find查询到的文件,所以需要把文件名传给cmd。这时,可以使用占位符{}来表示find到的文件名。那么格式变为:find dir -exec cmd {} \;shell会每一个find到的文件去执行一次cmd命令。如果想让find到的文件一次性执行完cmd命令,那么可以使用"+"号代替“\;”find dir -exec cmd {} +;例子说明find ./ -type f -.原创 2021-10-29 11:29:22 · 955 阅读 · 0 评论 -
shell脚本for i in {0..$aa}有变量导致取值异常
脚本内容如下:#!/bin/shaa=5for i in {0..$aa}do echo i=$idone执行之后输出如下内容:解决方案将for i in {0..$aa}替换为for i in `seq 0 $aa`即可修改之后,执行结果正常,截图如下原创 2021-03-12 17:51:15 · 616 阅读 · 0 评论 -
Linux shell给指定目录下的文件进行分类并输出到文件
问题引入: Ubuntu12.04 ,将ls -l / 目录下的文件进行分类处理代码实现#!/bin/shi=0ls -l / | while read linedo i=`expr $i + 1` if [ "$i" -ne 1 ];then #取消第一行的处理 type=${line:0:1} #获取每行的第一个字符,用来判断文件类型 case $type in '-') filepatch=`echo "$line" | awk '{...原创 2021-03-09 17:48:48 · 660 阅读 · 0 评论 -
shell下awk指定分隔符操作及示例
问题引入 如下字符串,需要获取数字#define VERSION "25645655"awk分隔# echo "#define VERSION \"25645655\"" | awk -F "\"" '{print $2}'指令解析\"表示字符转义-F "\"" 表示使用"作为分隔符$2计算方法|-----------1---------------- |--2-|----3#define VERSION "25645655"总结 关键点...原创 2020-12-31 10:32:23 · 2689 阅读 · 0 评论 -
shell下cut默认分隔符及指定分隔符方法
问题引入ubuntu下执行如下指令,无法分隔校验值# sha256sum .viminfo | cut -f1想要切割校验和,但是执行结果如下:b6e9036c815df093046c95ded243c04ebd57bf5b1bdfb1f856fb78eca320c142 .viminfo原因分析 这是由于cut的默认分隔符是Tab键,而非空格,所以才会导致分隔失败正确指令如下:# sha256sum .viminfo | cut -f1 -d " "...原创 2020-12-31 10:02:35 · 5459 阅读 · 0 评论 -
shell使用sed替换文件中指定行指令解析
指令如下sed -i "/<aaa>/,/<\/aaa>/s#<aaa>.*</aaa>#<aaa>/usr1/angentPath</aaa>#g" setting.xml指令解析备注: 替换担任的分隔“/”,可改用其他字符,如#、&等,便于修改文件路径参考链接https://blog.youkuaiyun.com/jsut_rick/article/details/78287737...原创 2020-12-07 11:16:25 · 624 阅读 · 0 评论 -
linux下shell中${!test[@]}和${!test@}用法及举例
${!test[@]}例子程序#!/bin/bashtest=(test1 test2 test3 test4 test5)for i in ${!test[@]}do echo i=$i done执行结果如下输出数组的所有下标${!test@}例子程序#!/bin/bashtest=1111test1=aaatest2=bbbtest3=cccmmm=dddecho ${!test@}执行结果如下输入出当前脚本中变量名以test.原创 2020-12-01 17:35:48 · 814 阅读 · 0 评论 -
shell $(cd `dirname $0`;pwd)和pwd的区别
Linux下获取当前的目录,需执行以下命令:$(cd `dirname $0`;pwd)说明:在命令行状态下单纯执行 $ cd `dirname $0` 是毫无意义的,因为他返回当前路径的"."这个命令写在脚本文件里才有作用,他返回这个脚本文件放置的目录,并可以根据这个目录来定位所要运行程序的相对位置dirname $0,取得当前执行的脚本文件的父目录cd `dirname $0`,进入这个目录(切换当前工作目录)pwd,显示当前工作目录(cd执行后的)举例:test.sh原创 2020-11-30 16:05:35 · 1809 阅读 · 2 评论 -
linux shell判断文件夹或者文件是否存在
shell文件比较符-e 判断对象是否存在-d 判断对象是否存在,并且为目录-f 判断对象是否存在,并且为常规文件-L 判断对象是否存在,并且为符号链接-h 判断对象是否存在,并且为软链接-s 判断对象是否存在,并且长度不为0-r 判断对象是否存在,并且可读-w 判断对象是否存在,并且可写-x 判断对象是否存在,并且可执行-O 判断对象是否存在,并且属于当前用户-G 判断对象是否存在,并且属于当前用户组-nt 判断file1是否比file2新 -ot 判断file1是否比fi原创 2020-11-23 11:23:14 · 4528 阅读 · 0 评论 -
linux shell脚本根据传入文件夹删除文件夹内容
方法一删除指令目录下内容/usr1/sharefile/aaa和/usr1/sharefile/bbb#!/bin/shif [ "$1" != "" ];then if [ "$1" = "/usr1/sharefile/aaa" -o "$1" = "/usr1/sharefile/bbb" ];then rm -rf $1/ fifi方法二使用for来处理#!/bin/shfiles="/usr1/sharefile/aaa /usr1/sha原创 2020-11-23 11:11:04 · 390 阅读 · 0 评论 -
linux下find命令通配符*和双引号的使用及区别
问题引入文件路径如下,目的是获取lcrp-4-8目录,但是4-8会发生变化,所以考虑使用通配符:分别使用如下指令find -mindepth 1 -type d -name lcrp-* ,可以匹配到lcrp-4-8文件夹find -mindepth 1 -type d -name "lcrp-*" ,会输出多个lcrp-开头的文件原因分析 对比以上两条指令,唯一的区别就是lcrp-*加不加双引号的区别不加双引号指令: *号会由shell解析...原创 2020-11-11 12:53:14 · 2145 阅读 · 0 评论 -
linux下shell *号和.*号的使用(正则表达式特殊字符使用)
先看两个指令输出结果,openwrt下存在Config.in,ls | grep *.in 可以匹配到Config.in输出,但是ls | grep "*.in"却没有输出,问题原因是什么?问题原因: 增加双引号之后,单独一个*号就原创 2020-10-26 09:36:40 · 4748 阅读 · 2 评论 -
json_dump输出数据存在空格解决方案
使用data变量接收数据,然后使用sed指令加正则表达式data=`json_dump`senddata=`echo $data | sed 's/ //g'`原创 2019-08-23 12:06:56 · 623 阅读 · 0 评论 -
Linux 使用sed指令插入到指定的行的上一行或者下一行
1.匹配到指定行,然后在上一行插入 在/etc/config/wireless文件中匹配到'sta'字符串,然后在改行的上一行插入config wifi-iface 'ap' sed -i "/'sta'/a\config wifi-iface 'ap'" /etc/config/wireless 说明: i:表示上一行 a:表示下一行...原创 2019-08-02 11:34:59 · 14903 阅读 · 0 评论