shell
腿毛都能控
自然规律,功能与物质的平衡
展开
-
shell快速移植
shell快速移植。原创 2022-07-28 18:38:31 · 264 阅读 · 0 评论 -
基于stm32的shell实现
思考一下,想要和linux一样使用命令,通过命令执行对应的操作,第一步就需要定义命令,人为的添加与删除这些命令,保存到我们可以找到命令的存储位置,在代码中实现命令的底层原理是通过链表的形式将每个命令彼此链接起来的。可以将输入到该窗口的按键数据直接通过串口发送到接收设备,stm32或者其他设备接收到数据后,将接收到的数据打印出来,也就是说,我们所看到的下图的数据并不是键盘直接输入到该窗口的,而是单片机发送的数据。时,进行对数据的标志位清除,通过宏定义的方式进行打印输出有一定的效果,例如。.........原创 2022-07-28 11:48:30 · 1991 阅读 · 0 评论 -
linux命令-大佬都在用的命令
1. scp命令作用:不同服务器之间传输文件scp是Linux系统下基于ssh登录进行安全的远程文件拷贝命令。scp是加密的scp的命令格式scp [参数] [源路径] [目标路径]命令参数作用-p保留原文件的修改时间,访问时间和访问权限-q不显示传输进度条-r递归复制整个目录-v详细方式显示输出-P指定数据传输用到的端口号2. ldd命令列举当前可执行程序或者动态链接库所依赖的所有动态链接库3. chown修改文件的用户权限,原创 2022-05-31 00:06:18 · 114 阅读 · 0 评论 -
awk实例分析
1. cached_vars=`cat $T/build/envsetup.sh | tr '()' ' ' | awk '{for(i=1;i<=NF;i++) if($i~/get_build_var/) print $(i+1)}' | sort -u | tr '\n' ' '`例如命令行输入:cat build/envsetup.sh | tr '()' ' ' | awk '{for(i=1;i<=NF;i++) if($i~/get_build_var/) print $(原创 2021-09-21 02:02:54 · 190 阅读 · 0 评论 -
sed实例分析
1. for i in `cat $T/build/envsetup.sh | sed -n "/^[[:blank:]]*function /s/function \([a-z_]*\).*/\1/p" | sort | uniq`; do2. local variant=$(echo -n $selection | sed -e "s/^[^\-]*-//")解:[ 0-9 ] [] 表示方括号里面的任意一个字符,0-9 表示了0到9的所有数字字符,也就是任意的数字字符。‘ ^# ’ XXX原创 2021-09-20 21:01:12 · 226 阅读 · 0 评论 -
shell的eval
语法:eval cmdLineeval会对后面的cmdLine进行两遍扫描,如果第一遍扫描后,cmdLine是个普通命令,则执行此命令;如果cmdLine中含有变量的间接引用,则保证间接引用的语义。场景系统中存在环境变量 USER=iceber 脚本中存在一个变量 env_name=USER 需要通过变量 env_name 获取到环境变量 USER 的值$ # 环境中已存在环境变量 USER$ env_name=USER$ eval echo '$'$env_namee..原创 2021-09-17 17:42:36 · 410 阅读 · 0 评论 -
awk ‘{for(i=1;i<=NF;i++) if($i~/get_build_var/) print $(i+1)}‘
cached_vars=`cat $T/build/envsetup.sh | tr '()' ' ' | awk '{for(i=1;i<=NF;i++) if($i~/get_build_var/) print $(i+1)}' | sort -u | tr '\n' ' '`awk的for循环for(i=1;i<=NF;i++)awk的for循环的次数并不看字面意义的循环次数,而是执行次数为 列乘以行 为总的循环次数并且打印结果为第一行第一列第一..原创 2021-09-17 17:00:41 · 1364 阅读 · 0 评论 -
`cat $T/build/envsetup.sh | sed -n “/^[[:blank:]]*function /s/function \([a-z_]*\).*/\1/p“ | sort |
`cat $T/build/envsetup.sh | sed -n "/^[[:blank:]]*function /s/function \([a-z_]*\).*/\1/p" | sort | uniq`cat $T/build/envsetup.sh 查看脚本文件 sed -n 只显示匹配处理的行 ^[[:blank:]]*function ^表示匹配行首,blank表示空格,[[ ]]标准写法,*表示前一个字符匹配0次或者任意多次 /s..原创 2021-09-17 00:11:50 · 292 阅读 · 0 评论 -
shell的for语句
for i in 1 2 3do echo "The for loop is run $i times."donechmod +x xxx.shfor linux in Debian Redhat suse Fedorado echo "The OS is: $linux."donefilenames="/etc/yp.conf /etc/nsswitch.conf /etc/auto.master /etc/resolv.conf"for file in $.原创 2021-09-12 14:54:56 · 138 阅读 · 0 评论 -
shell的grep命令
grep cx /etc/passwd使用grep命令查看文件/etc/passwd中账号cx的信息grep -i cx /etc/passwd使用-i选项,可以强制grep命令忽略关键字的大小写grep -r\-R cx /etc/使用-r选项,可以递归搜索指定目录下的所有文件grep -rl cx /etc/将-r选项与-l选项相结合,grep命令可以只打印输出包含匹配指定模式的行的文件的名字grep -w cx /etc/passwd使用-w选项,可以强制.原创 2021-09-11 23:54:03 · 1759 阅读 · 0 评论 -
常用shell命令
ls 命令:列出文件名和目录ls直接输入ls命令,不带任何参数,将列出当前目录下所有文件和目录,但不会显示详细信息。ls -l将以 长列表格形式显示文件和目录,包括文件类型、大小、修改日期和时间、权限等信息第一个字符 含义 - 普通文件 d 目录 s 嵌套字文件 l 链接文件 rwx rwx rwx所有者 用户组 其他组...原创 2021-09-11 19:09:10 · 421 阅读 · 1 评论 -
shell的case语句
case语句的语法如下所示:case EXPRESSION inPATTERN1 ) CONSEQUENT-COMMANDS;;PATTERN2 ) CONSEQUENT-COMMANDS;;PATTERN3 | PATTERN4 ) CONSEQUENT-COMMANDS;;...PATTERNn ) CONSEQUENT-COMMANDS;;esaccase语句结构一定要以"esca"结尾。每一个命令列表都以两个分号";;"为终结,只.原创 2021-09-09 20:22:18 · 414 阅读 · 0 评论 -
shell的if结构与拓展
if结构用于在shell脚本中进行判断。如果指令的条件为真,则执行指定的命令。if和then若写在同一行,要使用分号 ";"if语句结构一定要以 "fi" 结尾#!/bin/bashread -sp "Enter a password: " passif test "$pass" == "abcde"then echo -e "\nPassword verified."exit 0fiexit 1嵌套的if/else语句:#!/bin/bashd原创 2021-09-06 20:45:59 · 535 阅读 · 0 评论 -
shell的条件执行
使用 test 命令test命令可用于:文件属性测试 字符串测试 算数测test 命令的语法为:test EXPRESSIONtest [ EXPRESSION ]文件属性测试操作符表 操作符 描述 -e <FILE> 如果<FILE>存在则为真 -f <FILE> 如果<FILE>存在且只有一个常规文件则为真 -d <FILE> 如果<FILE>存在且只...原创 2021-09-05 22:59:16 · 935 阅读 · 3 评论 -
什么是Linux Shell
shell是用户和linux内核之间的接口程序,为用户提供使用操作系统的接口。当从shell向linux传递命令时,内核会做出相应的反应1. shell是一个用户程序,或者是一个为用户与系统交互提供的环境2. 它是一个执行从标准输出设备读入的命令的语言解释程序,它拥有自己内建的shell命令集,shell也能被系统中其他应用程序所调用3. 当登录或打开控制台时shell就会运行4. shell不是系统内核的一部分,但是它使用系统内核执行程序、创建文件等。...原创 2021-09-05 20:56:42 · 395 阅读 · 0 评论 -
shell脚本1-初步认识
Shell脚本是利用Shell的功能所写的一个程序,这个程序是纯文本文件格式,将一些Shell的语法与指令写在里面,然后用正则表达式、管道命令以及数据流重定向等功能,以实现我们所需要的功能Shell脚本一般由以下几部分构成:shell关键字例如if…else,for do…done。shell命令例如export,echo,exit,pwd,returnLinux命令例如date,rm,mkdir文本处理功能例如awk,cut,sed,grep函数通过函数把原创 2021-08-31 20:52:01 · 206 阅读 · 0 评论 -
命令行解析
board.c->start_armboot{ main_loop();}main_loop主要负责三个任务获取命令解析命令执行命令获取命令命令解析执行命令关键点分析(1)控制台命令获取(2)命令解析。parse_line函数把 “xxx” 解析成argv[0] = xxx, argv[1] = xxx argv[2] = xxx;(3)命令集中查找命令。find_cmd(argv[0])函数去uboot的命令集合当中搜索有没有argv[0]这个命原创 2021-08-16 23:16:02 · 759 阅读 · 0 评论 -
Makefile编译文件夹生成可执行文件解析
主makefile#设置编译器.PHONY:clean allCC=gccINCLUDE_DIR=-I../include C_FLAGS=#debug文件夹里的makefile文件需要最后执行,所以这里需要执行的子目录要排除debug文件夹,这里使用awk排除了debug文件夹,读取剩下的文件夹SUBDIRS=$(shell ls -l | grep ^d | awk '{if($$9 != "debug") if($$9 != "include") print $$9}')#无需下一行的原创 2021-06-23 00:37:43 · 2032 阅读 · 1 评论 -
Makefile中的$(addprefix)
$(addprefix src/,foo bar)返回值为“src/foo src/bar”。原创 2021-06-22 14:34:40 · 302 阅读 · 0 评论 -
Makefile与shell的用法差异
Makefile文件的目标项冒号后的另起一行的代码才是shell代码shell不允许‘=’号两边有空格哦makefile允许变量赋值时,'='号两边留空格xx=$(shell 这里的代码也是shell代码)Makefile中的shell,每一行是一个进程,不同行之间变量值不能传递。所以,Makefile中的shell不管多长也要写在一行Makefile中的变量以$开头, 所以,为了避免和shell的变量冲突,shell的变量以$$开头在Makefile中只能在target中调用Shel原创 2021-06-20 11:27:36 · 327 阅读 · 0 评论 -
Shell特殊变量:Shell $0, $#, $*, $@, $?, $$
$0当前脚本的文件名$n传递给脚本或函数的参数。n 是一个数字,表示第几个参数。例如,第一个参数是$1,第二个参数是$2。$#传递给脚本或函数的参数个数$*传递给脚本或函数的所有参数$@传递给脚本或函数的所有参数$?上个命令的退出状态,或函数的返回值$$当前Shell进程ID。对于 Shell 脚本,就是这些脚本所在的进程ID$* 和 $@ 的区别$* 和 $@ 都表示传递给函数或脚本的所有参数,不被双引号(" “)包含时,都以”$1" ...原创 2021-06-19 23:01:50 · 117 阅读 · 0 评论 -
海思shell脚本-sdk.unpack代码分析
#!/bin/shsource scripts/common.shECHO "Unpacking SDK" COLOR_YELLOWWARN "Be sure you have installed the cross-compiler. if not, install it first!"WARN "ALL THE SOUCE FILES WILL BE OVERWRITED, FILES YOU MOTIFIED WILL BE LOST !!!"ECHO ""#ECHO "To con原创 2021-06-06 13:27:30 · 285 阅读 · 0 评论 -
海思shell脚本-sdk.cleanup代码分析
#!/bin/sh //指此脚本使用/bin/sh来解释执行,#!是特殊的表示符,其后面跟的是解释此脚本的shell的路径source scripts/common.sh //common.sh相当于定义好的库函数,在脚本中使用 source scripts/common.sh就可以使用这些函数ECHO "Cleanup SDK" COLOR_YELLOW //打印"leanup SDK" 颜色为黄色ECHO ""WARN "ALL THE SOUCE FILES WILL BE DELETED原创 2021-06-06 12:08:57 · 261 阅读 · 0 评论 -
shell命令-pushd和popd
1、pushd、popd和dirspushd和popd是对一个目录栈进行操作,而dirs是显示目录栈的内容。而目录栈就是一个保存目录的栈结构,该栈结构的顶端永远都存放着当前目录pushd每次pushd命令执行完成之后,默认都会执行一个dirs命令来显示目录栈的内容。pushd的用法主要有如下几种:1.pushd 目录pushd后面如果直接跟目录使用,会切换到该目录并且将该目录置于目录栈的栈顶。(时时刻刻都要记住,目录栈的栈顶永远存放的是当前目录。如果当前目录发生变化,那么目录栈的栈顶元素肯定也原创 2021-06-06 12:03:39 · 4043 阅读 · 0 评论