首页
关于
友链
其它
统计
壁纸
Search
1
修改Linux Kernel defconfig的标准方法
5,734 阅读
2
cgroup--(4)cgroup v1和cgroup v2的详细介绍
5,294 阅读
3
Android系统之VINTF(1)manifests&compatibility matrices
5,175 阅读
4
c语言的__attribute__
3,024 阅读
5
使用git生成patch和应用patch
2,552 阅读
默认分类
文章收集
学习总结
算法
环境配置
知识点
入门系列
vim
shell
Git
Make
Android
Linux
Linux命令
内存管理
Linux驱动
Language
C++
C
工具
软件工具
Bug
COMPANY
登录
Search
标签搜索
shell
Linux
c
uboot
Vim
vintf
Linux驱动
Android
device_tree
git
DEBUG
链表
数据结构
IDR
内核
ELF
gcc
ARM
网址
内存管理
adtxl
累计撰写
343
篇文章
累计收到
8
条评论
首页
栏目
默认分类
文章收集
学习总结
算法
环境配置
知识点
入门系列
vim
shell
Git
Make
Android
Linux
Linux命令
内存管理
Linux驱动
Language
C++
C
工具
软件工具
Bug
COMPANY
页面
关于
友链
其它
统计
壁纸
搜索到
41
篇与
的结果
2021-02-01
shell简介--(8)printf命令
注:本文转载自菜鸟教程printf 命令模仿 C 程序库(library)里的 printf() 程序。printf 由 POSIX 标准所定义,因此使用 printf 的脚本比使用 echo 移植性好。printf 使用引用文本或空格分隔的参数,外面可以在 printf 中使用格式化字符串,还可以制定字符串的宽度、左右对齐方式等。默认 printf 不会像 echo 自动添加换行符,我们可以手动添加 \n。命令格式printf 命令的语法:printf format-string [arguments...]参数说明:format-string: 为格式控制字符串arguments: 为参数列表$ echo "Hello, Shell" Hello, Shell $ printf "Hello, Shell\n" Hello, Shell $接下来,我来用一个脚本来体现 printf 的强大功能:#!/bin/bash # author:菜鸟教程 # url:www.runoob.com printf "%-10s %-8s %-4s\n" 姓名 性别 体重kg printf "%-10s %-8s %-4.2f\n" 郭靖 男 66.1234 printf "%-10s %-8s %-4.2f\n" 杨过 男 48.6543 printf "%-10s %-8s %-4.2f\n" 郭芙 女 47.9876执行脚本,输出结果如下所示:姓名 性别 体重kg 郭靖 男 66.12 杨过 男 48.65 郭芙 女 47.99%s %c %d %f 都是格式替代符,%s 输出一个字符串,%d 整型输出,%c 输出一个字符,%f 输出实数,以小数形式输出。%-10s 指一个宽度为 10 个字符(- 表示左对齐,没有则表示右对齐),任何字符都会被显示在 10 个字符宽的字符内,如果不足则自动以空格填充,超过也会将内容全部显示出来。%-4.2f 指格式化为小数,其中 .2 指保留2位小数。#!/bin/bash # author:菜鸟教程 # url:www.runoob.com # format-string为双引号 printf "%d %s\n" 1 "abc" # 单引号与双引号效果一样 printf '%d %s\n' 1 "abc" # 没有引号也可以输出 printf %s abcdef # 格式只指定了一个参数,但多出的参数仍然会按照该格式输出,format-string 被重用 printf %s abc def printf "%s\n" abc def printf "%s %s %s\n" a b c d e f g h i j # 如果没有 arguments,那么 %s 用NULL代替,%d 用 0 代替 printf "%s and %d \n"执行脚本,输出结果如下所示:1 abc 1 abc abcdefabcdefabc def a b c d e f g h i j and 0printf的转义序列序列说明\a警告字符,通常为ASCII的BEL字符\b后退\c抑制(不显示)输出结果中任何结尾的换行字符(只在%b格式指示符控制下的参数字符串中有效),而且,任何留在参数里的字符、任何接下来的参数以及任何留在格式字符串中的字符,都被忽略\f换页(formfeed)\n换行\r回车\t水平制表符\v垂直制表符\一个字面上的反斜杠字符\ddd表示1到3位数八进制值的字符。仅在格式字符串中有效\0ddd表示1到3位的八进制值字符
2021年02月01日
773 阅读
0 评论
0 点赞
2021-01-22
shell简介--(7)echo命令
注:本文转载自菜鸟教程Shell的指令用于字符串的输出。命令格式:echo string还可以使用echo实现更复杂的输出格式控制。1. 显示普通字符串echo "It is a test"这里的双引号完全可以省略,以下命令与上面实例效果一致:echo It is a test2. 显示转义字符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 "OK! \n" # -e 开启转义 echo "It is a test"输出结果:OK! It is a test5. 显示不换行#!/bin/sh echo -e "OK! \c" # -e 开启转义 \c 不换行 echo "It is a test"输出结果:OK! It is a test6. 显示结果定向至文件echo "It is a test" > myfile7. 原样输出字符串,不进行转义或取变量(用单引号)echo '$name\"'输出结果:$name\"8. 显示命令执行结果echo `date`注意: 这里使用的是反引号 \`, 而不是单引号 '。结果将显示当前日期Thu Jul 24 10:08:46 CST 2014
2021年01月22日
714 阅读
0 评论
0 点赞
2021-01-20
shell简介--(6)基本运算符
说明:本文转载自菜鸟教程Shell 和其他编程语言一样,支持多种运算符,包括:算数运算符关系运算符布尔运算符字符串运算符文件测试运算符原生bash不支持简单的数学运算,但是可以通过其他命令来实现,例如 awk 和 expr,expr 最常用。expr 是一款表达式计算工具,使用它能完成表达式的求值操作。例如,两个数相加(注意使用的是反引号 \` 而不是单引号 '):#!/bin/bash val=`expr 2 + 2` echo "两数之和为 : $val"两点注意:表达式和运算符之间要有空格,例如 2+2 是不对的,必须写成 2 + 2,这与我们熟悉的大多数编程语言不一样。完整的表达式要被 \` \` 包含,注意这个字符不是常用的单引号,在 Esc 键下边。1. 算术运算符下表列出了常用的算术运算符,假定变量 a 为 10,变量 b 为 20:运算符说明举例+加法\`expr $a + $b\` 结果为 30。-减法\`expr $a - $b\` 结果为 -10。*乘法\`expr $a **\\*** $b\` 结果为 200。/除法\`expr $b / $a\` 结果为 2。%取余\`expr $b % $a\` 结果为 0。=赋值a=$b 将把变量 b 的值赋给 a。==相等。用于比较两个数字,相同则返回true。[ $a == $b ] 返回 false。!=不相等。用于比较两个数字,不同则返回true[ $a != $b ] 返回 true。注意:条件表达式要放在方括号之间,并且要有空格,例如: [$a==$b] 是错误的,必须写成 [ $a == $b ]。注意:乘号(*)前边必须加反斜杠(\)才能实现乘法运算;if...then...fi 是条件语句,后续将会讲解。在 MAC 中 shell 的 expr 语法是:$((表达式)),此处表达式中的 "*" 不需要转义符号 "\" 。2. 关系运算符关系运算符只支持数字,不支持字符串,除非字符串的值是数字。下表列出了常用的关系运算符,假定变量 a 为 10,变量 b 为 20:运算符说明举例-eq检测两个数是否相等,相等返回 true。[ $a -eq $b ] 返回 false。-ne检测两个数是否不相等,不相等返回 true。[ $a -ne $b ] 返回 true。-gt检测左边的数是否大于右边的,如果是,则返回 true。[ $a -gt $b ] 返回 false。-lt检测左边的数是否小于右边的,如果是,则返回 true。[ $a -lt $b ] 返回 true。-ge检测左边的数是否大于等于右边的,如果是,则返回 true。[ $a -ge $b ] 返回 false。-le检测左边的数是否小于等于右边的,如果是,则返回 true。[ $a -le $b ] 返回 true。3. 布尔运算符下表列出了常用的布尔运算符,假定变量 a 为 10,变量 b 为 20:运算符说明举例!非运算,表达式为 true 则返回 false,否则返回 true。[ ! false ] 返回 true。-o或运算,有一个表达式为 true 则返回 true。[ $a -lt 20 -o $b -gt 100 ] 返回 true。-a与运算,两个表达式都为 true 才返回 true。[ $a -lt 20 -a $b -gt 100 ] 返回 false。4. 逻辑运算符以下介绍 Shell 的逻辑运算符,假定变量 a 为 10,变量 b 为 20:运算符说明举例&&逻辑的 AND[[ $a -lt 100 && $b -gt 100 ]] 返回 false||逻辑的 OR[[ $a -lt 100 $b -gt 100 ]] 返回 true实例逻辑运算符实例如下:#!/bin/bash # author:菜鸟教程 # url:www.runoob.com a=10 b=20 if [[ $a -lt 100 && $b -gt 100 ]] then echo "返回 true" else echo "返回 false" fi if [[ $a -lt 100 || $b -gt 100 ]] then echo "返回 true" else echo "返回 false" fi执行脚本,输出结果如下所示:返回 false 返回 true5. 字符串运算符下表列出了常用的字符串运算符,假定变量 a 为 "abc",变量 b 为 "efg":运算符说明举例=检测两个字符串是否相等,相等返回 true。[ $a = $b ] 返回 false。!=检测两个字符串是否相等,不相等返回 true。[ $a != $b ] 返回 true。-z检测字符串长度是否为0,为0返回 true。[ -z $a ] 返回 false。-n检测字符串长度是否不为 0,不为 0 返回 true。[ -n "$a" ] 返回 true。$检测字符串是否为空,不为空返回 true。[ $a ] 返回 true。实例字符串运算符实例如下:#!/bin/bash # author:菜鸟教程 # url:www.runoob.com a="abc" b="efg" if [ $a = $b ] then echo "$a = $b : a 等于 b" else echo "$a = $b: a 不等于 b" fi if [ $a != $b ] then echo "$a != $b : a 不等于 b" else echo "$a != $b: a 等于 b" fi if [ -z $a ] then echo "-z $a : 字符串长度为 0" else echo "-z $a : 字符串长度不为 0" fi if [ -n "$a" ] then echo "-n $a : 字符串长度不为 0" else echo "-n $a : 字符串长度为 0" fi if [ $a ] then echo "$a : 字符串不为空" else echo "$a : 字符串为空" fi执行脚本,输出结果如下所示:abc = efg: a 不等于 b abc != efg : a 不等于 b -z abc : 字符串长度不为 0 -n abc : 字符串长度不为 0 abc : 字符串不为空6. 文件测试运算符文件测试运算符用于检测 Unix 文件的各种属性。属性检测描述如下:操作符说明举例-b file检测文件是否是块设备文件,如果是,则返回 true。[ -b $file ] 返回 false。-c file测文件是否是字符设备文件,如果是,则返回 true。[ -c $file ] 返回 false。-d file检测文件是否是目录,如果是,则返回 true。[ -d $file ] 返回 false。-f file检测文件是否是普通文件(既不是目录,也不是设备文件),如果是,则返回 true。[ -f $file ] 返回 true。-g file检测文件是否设置了 SGID 位,如果是,则返回 true。[ -g $file ] 返回 false。-k file检测文件是否设置了粘着位(Sticky Bit),如果是,则返回 true。[ -k $file ] 返回 false。-p file检测文件是否是有名管道,如果是,则返回 true。[ -p $file ] 返回 false。-u file检测文件是否设置了 SUID 位,如果是,则返回 true。[ -u $file ] 返回 false。-r file检测文件是否可读,如果是,则返回 true。[ -r $file ] 返回 true。-w file检测文件是否可写,如果是,则返回 true。[ -w $file ] 返回 true。-x file检测文件是否可执行,如果是,则返回 true。[ -x $file ] 返回 true。-s file检测文件是否为空(文件大小是否大于0),不为空返回 true。[ -s $file ] 返回 true。-e file检测文件(包括目录)是否存在,如果是,则返回 true。[ -e $file ] 返回 true。其他检查符:-S: 判断某文件是否 socket。-L: 检测文件是否存在并且是一个符号链接。
2021年01月20日
746 阅读
0 评论
0 点赞
2021-01-20
shell简介--(5)传递参数
说明:此文转载自菜鸟教程我们可以在执行 Shell 脚本时,向脚本传递参数,脚本内获取参数的格式为:$n。n 代表一个数字,1 为执行脚本的第一个参数,2 为执行脚本的第二个参数,以此类推……实例以下实例我们向脚本传递三个参数,并分别输出,其中 $0 为执行的文件名(包含文件路径):#!/bin/bash # author:菜鸟教程 # url:www.runoob.com echo "Shell 传递参数实例!"; echo "执行的文件名:$0"; echo "第一个参数为:$1"; echo "第二个参数为:$2"; echo "第三个参数为:$3";为脚本设置可执行权限,并执行脚本,输出结果如下所示:$ chmod +x test.sh $ ./test.sh 1 2 3 Shell 传递参数实例! 执行的文件名:./test.sh 第一个参数为:1 第二个参数为:2 第三个参数为:3另外,还有几个特殊字符用来处理参数:参数处理说明$#传递到脚本的个数$*以一个单字符串显示所有向脚本传递的参数。如"$\*"用「"」括起来的情况、以"$1 $2 … $n"的形式输出所有参数。$$脚本运行的当前进程ID号$!后台运行的最后一个进程的ID号$@与$\*相同,但是使用时加引号,并在引号中返回每个参数。<br>如"$@"用「"」括起来的情况、以"$1" "$2" … "$n" 的形式输出所有参数。$-显示Shell使用的当前选项,与set命令功能相同。$?显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误。#!/bin/bash # author:菜鸟教程 # url:www.runoob.com echo "Shell 传递参数实例!"; echo "第一个参数为:$1"; echo "参数个数为:$#"; echo "传递的参数作为一个字符串显示:$*";执行脚本,输出结果如下所示:$ chmod +x test.sh $ ./test.sh 1 2 3 Shell 传递参数实例! 第一个参数为:1 参数个数为:3 传递的参数作为一个字符串显示:1 2 3$\* 与 $@ 区别:相同点:都是引用所有参数。不同点:只有在双引号中体现出来。假设在脚本运行时写了三个参数 1、2、3,,则 " * " 等价于 "1 2 3"(传递了一个参数),而 "@" 等价于 "1" "2" "3"(传递了三个参数)。#!/bin/bash # author:菜鸟教程 # url:www.runoob.com echo "-- \$* 演示 ---" for i in "$*"; do echo $i done echo "-- \$@ 演示 ---" for i in "$@"; do echo $i done执行脚本,输出结果如下所示:$ chmod +x test.sh $ ./test.sh 1 2 3 -- $* 演示 --- 1 2 3 -- $@ 演示 --- 1 2 3
2021年01月20日
708 阅读
0 评论
0 点赞
2021-01-19
shell简介--(4)shell注释
说明:本文转载自菜鸟教程单行注释使用符号\#开头的行就是单行注释多行注释如果在开发过程中,遇到大段的代码需要临时注释起来,过一会儿又取消注释,怎么办呢?每一行加个#符号太费力了,可以把这一段要注释的代码用一对花括号括起来,定义成一个函数,没有地方调用这个函数,这块代码就不会执行,达到了和注释一样的效果。多行注释还可以使用以下格式::<<EOF 注释内容... 注释内容... 注释内容... EOFEOF 也可以使用其他符号::<<' 注释内容... 注释内容... 注释内容... ' :<<! 注释内容... 注释内容... 注释内容... !
2021年01月19日
745 阅读
0 评论
0 点赞
2021-01-19
shell简介--(3)shell数组
说明:本文转载自菜鸟教程bash支持一维数组(不支持多维数组),并且没有限定数组的大小。类似于 C 语言,数组元素的下标由 0 开始编号。获取数组中的元素要利用下标,下标可以是整数或算术表达式,其值应大于或等于 0。1. 定义数组在 Shell 中,用括号来表示数组,数组元素用"空格"符号分割开。定义数组的一般形式为:数组名=(值1 值2 ... 值n)例如:array_name=(value0 value1 value2 value3)或者array_name=( value0 value1 value2 value3 )还可以单独定义数组的各个分量:array_name[0]=value0 array_name[1]=value1 array_name[n]=valuen可以不使用连续的下标,而且下标的范围没有限制。2. 读取数组读取数组元素值的一般格式是:${数组名[下标]}例如:valuen=${array_name[n]}使用 @ 符号可以获取数组中的所有元素,例如:echo ${array_name[@]}3. 获取数组的长度获取数组长度的方法与获取字符串长度的方法相同,例如:# 取得数组元素的个数 length=${#array_name[@]} # 或者 length=${#array_name[*]} # 取得数组单个元素的长度 lengthn=${#array_name[n]}
2021年01月19日
666 阅读
0 评论
0 点赞
2021-01-19
shell简介--(2)shell字符串
说明:本文转载自菜鸟教程字符串是shell编程中最常用最有用的数据类型(除了数字和字符串,也没啥其它类型好用了),字符串可以用单引号,也可以用双引号,也可以不用引号。1. 单引号str='this is a string'单引号字符串的限制:单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的;单引号字串中不能出现单独一个的单引号(对单引号使用转义符后也不行),但可成对出现,作为字符串拼接使用。2. 双引号your_name='runoob' str="Hello, I know you are \"$your_name\"! \n" echo -e $str输出结果为:Hello, I know you are "runoob"! 双引号的优点:双引号里可以有变量双引号里可以出现转义字符3. 拼接字符串your_name="runoob" # 使用双引号拼接 greeting="hello, "$your_name" !" greeting_1="hello, ${your_name} !" echo $greeting $greeting_1 # 使用单引号拼接 greeting_2='hello, '$your_name' !' greeting_3='hello, ${your_name} !' echo $greeting_2 $greeting_3输出结果为:hello, runoob ! hello, runoob ! hello, runoob ! hello, ${your_name} !4. 获取字符串长度使用\#string="abcd" echo ${#string} #输出 45. 提取字符串以下实例从字符串第 2 个字符开始截取 4 个字符:string="runoob is a great site" echo ${string:1:4} # 输出 unoo注意:第一个字符的索引值为 0。6. 查找字符串查找字符 i 或 o 的位置(哪个字母先出现就计算哪个):string="runoob is a great site" echo `expr index "$string" io` # 输出 4注意: 以上脚本中\` 是反引号,而不是单引号 ',不要看错了哦。
2021年01月19日
692 阅读
0 评论
0 点赞
2021-01-19
shell简介--(1)环境和变量
说明:本文转载自菜鸟教程
2021年01月19日
618 阅读
0 评论
0 点赞
2021-01-18
vim知识点(1)--使用vim 查看二进制文件
暂无简介
2021年01月18日
1,198 阅读
0 评论
0 点赞
2021-01-14
git常用操作
使用git pull强制覆盖开发时,对于本地的项目中修改不做保存操作(或代码改崩),可以用到Git pull的强制覆盖,具体代码如下:git fetch --all && git reset --hard origin/master && git pull或git fetch --all // 下载远程仓库最新内容,不做合并git reset --hard origin/master // git reset指令把HEAD指向master最新版本,本地代码同步线上最新版本(会覆盖本地所有与远程仓库上同名的文件)git pull //可以省略git 撤销更改未使用 git add 缓存代码时可以使用 git checkout -- filepathname (比如: git checkout -- readme.md ,不要忘记中间的 “--” ,不写就成了检出分支了!!)。放弃所有的文件修改可以使用 git checkout . 命令。此命令用来放弃掉所有还没有加入到缓存区(就是 git add 命令)的修改:内容修改与整个文件删除。但是此命令不会删除掉刚新建的文件。因为刚新建的文件还没已有加入到 git 的管理系统中。所以对于git是未知的。自己手动删除就好了。已经使用了 git add 缓存了代码可以使用 git reset HEAD filepathname (比如: git reset HEAD readme.md)来放弃指定文件的缓存,放弃所以的缓存可以使用 git reset HEAD . 命令。此命令用来清除 git 对于文件修改的缓存。相当于撤销 git add 命令所在的工作。在使用本命令后,本地的修改并不会消失,而是回到了如(一)所示的状态。继续用(一)中的操作,就可以放弃本地的修改。已经用 git commit 提交了代码可以使用 git reset --hard HEAD^ 来回退到上一次commit的状态。此命令可以用来回退到任意版本:git reset --hard commitidgit log 可以查看请交历史记录git reset --soft commitID //只删除commitID之后的提交记录log,代码的改动还在。git reset --hard commitID //彻底删除commitID之后所做的改动,代码也一起回退回来了。 (慎重用,用前最好备份一下代码,或者用git diff 生成一个patch)
2021年01月14日
694 阅读
0 评论
0 点赞
1
...
3
4
5