首页
前端面试题
前端报错总结
电子书
更多
插件下载
Search
1
JavaScript基础(二)操作符 流程控制
42 阅读
2
HTML基础
20 阅读
3
Vue基础
17 阅读
4
wctype.h
14 阅读
5
Vue2(知识点)
13 阅读
默认分类
HTML CSS
HTML基础
CSS
HTML5 CSS3
javaScript
javaScript基础
javaScript高级
Web APIs
jQuery
js小总结
WEB开发布局
Vue
PS切图
数据可视化
Git使用
Uniapp
c语言入门
标准库
嵌入式
登录
Search
liuxiaobai
累计撰写
108
篇文章
累计收到
12
条评论
首页
栏目
默认分类
HTML CSS
HTML基础
CSS
HTML5 CSS3
javaScript
javaScript基础
javaScript高级
Web APIs
jQuery
js小总结
WEB开发布局
Vue
PS切图
数据可视化
Git使用
Uniapp
c语言入门
标准库
嵌入式
页面
前端面试题
前端报错总结
电子书
插件下载
搜索到
104
篇与
的结果
2024-12-12
Makefile学习
目录简单的makefileCROSS_COMPILE=/opt/4.5.1/bin/arm-linux- CC=$(CROSS_COMPILE)gcc AS=$(CROSS_COMPILE)as LD=$(CROSS_COMPILE)ld CFLAGS=-g -Wall LIBS=-lpthread all:main main:main.o gsm_gprs.o socket.o telosb.o wifi.o $(CC) $(CFLAGS) $(LIBS) $^ -o $@ main.o: main.c gsm_gprs.h option.h telosb.h $(CC) $(CFLAGS) -c $< gsm_gprs.o:gsm_gprs.c gsm_gprs.h socket.h $(CC) $(CFLAGS) -c $< socket.o:socket.c socket.h option.h $(CC) $(CFLAGS) -c $< telosb.o: telosb.c telosb.h option.h $(CC) $(CFLAGS) -c $< wifi.o: wifi.c wifi.h option.h $(CC) $(CFLAGS) -c $< clean: -rm main -f *\.o *\*~ *~makefile赋值赋值说明=基本的赋值 会在makefile的最后才赋值:=覆盖之前的值 会立即赋值?=如果没有赋值过就赋值+=添加后面的值.PHONY : clean伪目标 make命令默认支持的文件名make指令如果没有指定具体的makefile文件,就会自动寻找如下的makefile文件 GNUmakefile makefile Makefile includemakefile包含 -includemakefile包含,当include过程中出现错误,不报错继续执行 MAKEFILESmake会自动include这个环境变量中的值 VPATH指定makefile文件搜寻路径 vpathmake 关键词 设置文件搜寻路径 Makefile内建函数文本处理和分析函数替换$(subst from,to,text)模式替换可用%(只用第一个%有用),如 $(patsubst %.c,%.o,x.c.c bar.c),结果 ‘x.c.o bar.o’$(patsubst pattern,replacement,text) 去掉文本两端空格,以及把2个和2个以上的空格换成一个$(strip string) 查找$(findstring find,in)过滤只保留pattern部分$(filter pattern…,text)过滤掉不保留pattern部分$(filter-out pattern…,text)排序$(sort list)取字符串$(word n,text)取字符串列表第s(start)个到第e(end)个$(wordlist s,e,text) # $(words text) Returns the number of words in text. Thus, the last word of text is $(word $(words text),text).取第一个$(firstword names…)取最后一个$(lastword names…)文件名处理函数取目录$(dir names…)取文件但并不完全正确,注意观察,因为这个原理是已斜杠“/”为标识符的,如果文件名中包含斜杠,则返回的文件名就有误$(notdir names…)取文件后缀$(suffix names…)取文件名包括前面的目录部分,如$(basename src/foo.c src-1.0/bar hacks), 结果为src/foo src-1.0/bar hacks$(basename names…)添加后缀example :$(addprefix src/,foo bar),produces the result ‘src/foo src/bar’$(addsuffix suffix,names…)连接函数example: ‘$(join a b,.c .o)’ produces ‘a.c b.o’.$(join list1,list2)通配符函数表示可以使用正则表达式的符号。The argument pattern is a file name pattern, typically containing wildcard characters (as in shell file name patterns). The result of wildcard is a space-separated list of the names of existing files that match the pattern$(wildcard pattern)真实路径$(realpath names…)绝对路径$(abspath names…)foreach函数$(foreach var,list,text)相当于for循环函数,不过最终这里返回的是text的值,这个值是循环得到的一个list,如find_files = $(wildcard $(dir)/*) #“=”等号是延时加载(deferred) dirs := a b c d files := $(foreach dir,$(dirs),$(find_files))即files := $(wildcard a/* b/* c/* d/*)if函数ifeq (arg1, arg2) ifneq (arg1, arg2) ifdef variable-name ifndef variable-namecall函数$(call VARIABLE,PARAM,PARAM,...)“call”函数是唯一一个可以创建定制化参数函数的引用函数。使用这个函数可以 实现对用户自己定义函数引用。我们可以将一个变量定义为一个复杂的表达式,用“call” 函数根据不同的参数对它进行展开来获得不同的结果。如:reverse = $(2) $(1) foo = $(call reverse,a,b) foo will contain ‘b avalue函数$(value variable)The result of this function is a string containing the value of variable, without any expansion occurring. For example, in this makefile:FOO = $PATH all: @echo $(FOO) @echo $(value FOO)The first output line would be ATH, since the $P would be expanded as a make variable, while the second output line would be the current value of your $PATH environment variable, since the value function avoided the expansion.realpath$(realpath ../../)获取绝对路径wildcard根据通配符获取列表src = $(wildcard *.c)origin函数$(origin variable)获取变量的属性值,如下几个undefined 变量“VARIABLE”没有被定义。default 变量“VARIABLE”是一个默认定义(内嵌变量)。如“CC”、“MAKE”、“RM”等变 量。如果在 Makefile 中重新定义这些变量,函数返回值将相应发生变化environment 变量“VARIABLE”是一个系统环境变量,并且 make 没有使用命令行选项“-e” (Makefile 中不存在同名的变量定义,此变量没有被替代)。environment override 变量“VARIABLE”是一个系统环境变量,并且 make 使用了命令行选项“-e”。 Makefile 中存在一个同名的变量定义,使用“make -e”时环境变量值替代了文 件中的变量定义。file 变量“VARIABLE”在某一个 makefile 文件中定义。command line 变量“VARIABLE”在命令行中定义。override 变量“VARIABLE”在 makefile 文件中定义并使用“override”指示符声明。automatic 变量“VARIABLE”是自动化变量。shell函数contents := $(shell cat foo) files := $(shell echo *.c)make LOG以及控制函数$(info text) #打印log $(warning text) #和 error 一样,但是 产生致命错误退出 $(error text) #产生致命错误,并提示“text”信息给用户,并退出 make 的执行
2024年12月12日
2 阅读
0 评论
0 点赞
2024-12-12
shell脚本
目录shell种类 bash csh ksh zsh 基本语法定义和使用变量#!/bin/sh a="hello world" echo $a echo 'a is xiaxaiwen${a}'if elseif ....; then .... elif ....; then .... else .... fi [] 条件测试[] 中前后一定要加空格。shell常用命令命令说明echo将文字内容打印在屏幕上ls文件列表wc计算文件行数(-l),单词数(-w),字符数(-c)cp文件拷贝mv重命名文件或移动文件rm删除文件grep在文件内搜索字符串比如:grep 'searchstring' file.txtcut -b指定欲显示的文件内容范围,并将它们输出到标准输出设备比如:输出每行第5个到第9个字符cut -b5-9 file.txt,千万不要和cat命令混淆,这是两个完全不同的命令cat输出文件内容到标准输出设备(屏幕)上file得到文件类型read var提示用户输入,并将输入赋值给变量sort对 file.txt 文件中的行进行排序uniq删除文本文件中出现的行列比如: `sort file.txtuniq`expr进行数学运算,比如运行 expr 2 "+" 3 得到结果为 5find搜索文件比如:根据文件名搜索find . -name filename -printtee将数据输出到标准输出设备(屏幕) 和文件比如:`lstee outfile`basename返回不包含路径的文件名比如: basename /bin/tux 将返回 tuxdirname返回文件所在路径比如:dirname /bin/tux 将返回 /binhead输出文本文件开头几行tail输出文本文件末尾几行sedsed 是一个基本的查找替换程序。可以从标准输入(比如命令管道)读入文本,并将结果输出到标准输出(屏幕)。该命令采用正则表达式(见参考)进行搜索。不要和shell中的通配符相混淆。比如:将 linuxfocus 替换为 LinuxFocus :`cat text.file \sed 's/linuxfocus/LinuxFocus/' > newtext.file`awkawk 用来从文本文件中提取字段。缺省地,字段分割符是空格,可以使用 -F 指定其他分割符。`cat file.txt \awk -F, '{print $1 "," $3 }'这里我们使用 ,` 作为字段分割符,同时打印第一个和第三个字段。如果该文件内容如下: Adam Bor, 34, IndiaKerry Miller, 22, 该命令输出结果为:Adam Bor, IndiaKerry Miller, USAenv系统预设的环境变量shell变量类型shell变量名只能包含数字、字母和下划线。局部变量在脚本或命令中定义,仅在当前shell实例中有效。shell变量特殊变量特殊变量说明$0当前脚本的文件名$n传递给脚本或函数的参数。n 是一个数字,表示第几个参数。例如,第一个参数是$1,第二个参数是$2。$#传递给脚本或函数的参数个数。$*传递给脚本或函数的所有参数。$@传递给脚本或函数的所有参数。被双引号(" ")包含时,与 $* 稍有不同,下面将会讲到。$?上个命令的退出状态,或函数的返回值。$$当前Shell进程ID。对于 Shell 脚本,就是这些脚本所在的进程ID。条件语句操作符:操作符说明!!表示执行上一条指令!n表示执行命令历史中第n条指令*匹配零个或多个字符?匹配一个字符数值比较运算符:运算符说明-eq相等-ne不等-gt大于-lt小于-le小于等于-ge大于等于字符串比较运算符:运算符说明=相等!=不等-z空串-n非空串文件比较运算符:运算符说明-d目录-f文件-L链接-r可读-w可写-x可执行-s文件非空逻辑运算符:运算符说明-a逻辑与-o逻辑或!逻辑否反引号` 设置系统的命令输出到变量。echo * 以串行形式,打印当前整个目录。替换运算符${var_name:-def_Val} 如果变量var_name存在且为非null,返回该变量的值,否则返回默认值def-Val 注意var_name与:之间没有空格,:与-之间可以有空格。主要用途,如果变量未定义,则用默认值。${var_name:=val} 如果变量var_name存在且为非null,返回该变量的值,否则,把val的值赋给变量var_name,并返回var_name的值val。 注意var_name与:之间没有空格,:与=之间也不能有空格。${var_name:?message} 如果变量var_name存在且为非null,返回该变量的值,否则返回该变量的名字var_name:提示信息meesage,并退出当前命令或脚本。 注意 var_name 与 : 之间没有空格,: 与 ? 之间也不能有空格。${var_name:+val} 如果变量var_name存在且为非null,返回val,否则返回null。 注意 var_name 与 : 之间没有空格,: 与 + 之间也不能有空格。${#val_name} 返回变量长度。$(()) 算术运算操作。$((var1 opr var2)) 例如: $((5+1)) 只能是 + - * / 和 () 运算符,并且只能做整数运算。$() 命令代换,类似于反引号( ` ), 例如:echo $(date)。循环语句用法:for i in $pathfor i in `seq 1 9` for i in $(seq 1 9)for i in {a..z}for (( i=1; i<=10; i++ ))while [ $cnt -ge 0 ]until [ $cnt -lt 0 ]case语句name=`basename $0 .sh` case $1 in s|start) echo "start..." ;; stop) echo "stop ..." ;; reload) echo "reload..." ;; *) echo "Usage: $name [start|stop|reload]" exit 1 ;; esac exit 0*) 相当于其他语言中的 default 。除了 *) 模式,各个分支中 ;; 是必须的,;; 相当于其他语言中的 break。| 分割多个模式,相当于 orhelp 查看所有 bash 保留的关键词。readonly 定义变量只读。unset 删除变量。echo -e "Value of a is $a \n" 使转义字符\n生效,可以使用的转义符:\\ \a \b \f \n \r \t \v。${var} 变量本来的值。${var:-word} 如果变量 var 为空或已被删除(unset),那么返回 word,但不改变 var 的值。${var:=word} 如果变量 var 为空或已被删除(unset),那么返回 word,并将 var 的值设置为 word。${var:?message} 如果变量 var 为空或已被删除(unset),那么将消息 message 送到标准错误输出,可以用来检测变量 var 是否可以被正常赋值。若此替换出现在Shell脚本中,那么脚本将停止运行。${var:+word} 如果变量 var 被定义,那么返回 word,但不改变 var 的值。 val=`expr 2 + 2` 算数运算。echo ${#string} 获取字符串长度。echo ${string:1:4} 输出第1位到第4位的字符串(从0开始)。数组定义数组:array_name=(value0 value1 value2 value3) # 或者 array_name=( value0 value1 value2 value3 ) # 或者 array_name[0]=value0 array_name[1]=value1 array_name[2]=value2数组访问:# 获取数组的值 echo ${array_name[2]} # 获取数组的所有元素 echo ${array_name[*]} # 获取数组的所有元素 echo ${array_name[@]} # 获取数组个数 echo ${#array_name[@]} # 获取数组个数 echo ${#array_name[*]} # 获取数组单个元素的长度 echo ${#array_name[2]}重定向# 将stderr重定向到 file $ command 2 > file # 将stdin重定向到file $ command < file # 将stdout重定向到file $ command > file # 将stdout stderr都重定向到file $ command > file 2>&1 # 将stdin重定向到file1 stdout重定向到file2 $ command < file1 > file2-cp 表示cp命令报错了不会停止,继续执行下面的操作。@cp 终端中不会打印出命令的执行。declare-i 整型变量。-a 数组。-f 列出所有定义过的函数。-x 将声明的变量作为脚本的环境变量导出。shift 左移参数,shift 3表示$4变成$1 不带参数的话默认为 shift 1。字符串操作file=/dir1/dir2/dir3/my.file.txt ${file#*/} # 删掉第一个 / 及其左边的字符串:dir1/dir2/dir3/my.file.txt ${file##*/} # 删掉最后一个 / 及其左边的字符串:my.file.txt ${file#*.} # 删掉第一个 . 及其左边的字符串:file.txt ${file##*.} # 删掉最后一个 . 及其左边的字符串:txt ${file%/*} # 删掉最后一个 / 及其右边的字符串:/dir1/dir2/dir3 ${file%%/*} # 删掉第一个 / 及其右边的字符串:(空值) ${file%.*} # 删掉最后一个 . 及其右边的字符串:/dir1/dir2/dir3/my.file ${file%%.*} # 删掉第一个 . 及其右边的字符串:/dir1/dir2/dir3/my ${file:0:5} # 提取最左边的5个字节:/dir1 ${file:5:5} # 提取第5个字节右边的连续5个字节:/dir2 ${file/dir/path} # 将第一个 dir 替换为 path:/path1/dir2/dir3/my.file.txt ${file//dir/path} # 将全部 dir 替换为path:/path1/path2/path3/my.file.txt ${#file}: # 计算字符串长度:27记忆的方法为:# 是 去掉左边(键盘上 # 在 $ 的左边)。% 是去掉右边(键盘上 % 在 $ 的右边)。单一符号是最小匹配;两个符号是最大匹配。命令中出现的双横杆是什么:--双横杆 -- 是为了告诉命令,后面的内容不是命令参数,标识命令参数结束(marks the end of options),比如我要生成一个名为 -f 的文件:# 使用该命令会保存 $ touch -f usage: touch [-A [-][[hh]mm]SS] [-acfhm] [-r file] [-t [[CC]YY]MMDDhhmm[.SS]] file ... # 加双横杆 $ touch -- -f # 查看生成的文件 $ ll -rw-r--r-- 1 xxw staff 0B 9 29 17:43 -f参考:https://unix.stackexchange.com/questions/11376/what-does-double-dash-mean .
2024年12月12日
3 阅读
0 评论
0 点赞
2024-12-12
git使用说明
git 使用说明git操作笔记,初级使用教程请参考 git cheatsheet 。添加文件git add .删除文件git rm .提交改动到本地git commit -m "first commit"上传改动到服务器git push列出当前分支git branch列出所有分支,包括远程分支git branch -a从已有的分支创建新的分支(如从master分支),创建一个dev分支git checkout -b dev从服务器拉取分支到本地分支git pull origin gh-pages:gh-pages需要本地没有gh-pages分支,否则会提示已拒绝上传本地分支到远程分支git branch --set-upstream-to=gh-pages git push origin gh-pagesgerrit如何修改一个commit:先在一个干净的repo里面把这一个commit 拉取下来:git fetch ssh://xxx@xxxx/xxx/xxx refs/changes/20/190820/6 && cherry-pick FETCH_HEAD具体指令需要看gerrit网页右上角:此时git status 当前是有y一个commit的,git log也能看到log。修改代码,然后提交到本地。git add #使用 --amend 重新更新这个commit信息。 git commit --amendpush到gerrit需要指定具体push到哪个idgit push origin HEAD:refs/changes/<change id>附录git cheatsheetGitlab 官方提供的 git cheatsheet 。
2024年12月12日
4 阅读
0 评论
0 点赞
1
2
3
4
...
35