打印
[嵌入式linux]

发一个知识点,活跃一下linux板块。。。

[复制链接]
5392|23
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
qyihan|  楼主 | 2013-12-4 10:14 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 qyihan 于 2013-12-4 10:16 编辑

发一个知识点,活跃一下linux板块。
以下内容部分是翻译得来,经过我的修改和总结:
shell脚本编程中的一些字符串的处理技巧:
(1)、${value:-word}:如果变量value没有定义或者是空字符串,则返回word,否则返回value;
(2)、${value:=word}:如果变量value没有定义或者是空字符串,则返回word,并且把word复制给value,否则返回value;
(3)、${value:%message}:如果value不是一个空字符串,那就什么也不做。否则,message会被发送到标准错误输出,并且程序会退出;
(4)、${value:+word}:如果value不是一个空字符串,返回值将会是word。
(5)、${value:offset}和${value:offset:length}:从变量value获得子串,offset为偏移量,length为要获得子串的长度;
(6)、${#value}:获得变量value的字符个数;
(7)、${value#pattern}和${value##pattern}:去掉value开头与pattern匹配的部分。
(8)、${value%pattern}和${value%%pattern}:和上面的一样,但是它的匹配在尾部。
(9)、${value/pattern/string}和${value//pattern/string}:在变量value中,用string替换掉和pattern匹配的部分,这个替换不会改变原来value的值;
(10)、${value%.*}和${value%%.*}:删除value字符串中以分隔符“.”匹配的右边字符,保留左边字符,"*"为通配符,"."为分隔符,可以为多个字符;
(11)、${value#*.}和${value##*.}:删除value字符串中以分隔符“.”匹配的左边字符,保留右边字符;
(注1:#,%,/ 都是最短匹配,而##,%%,// 都是贪婪匹配,匹配最长,在用到通配符时,这个比较有用)。
(注2:word可以为字符串,也可以为变量,若为变量,前面要加$)。
(那个笑脸是冒号和一个字母o)
附加两个linux使用中提高效率的小小技巧:
(1)、在输入命令时,遇到长命令想要去行首或者行尾,避免频繁移动光标的快捷键:Ctrl+a(回到行首),Ctrl+e(回到行尾);
(2)、在vi编辑器中,命令行模式中,gg回到首行的开头,G回到尾行的开头。

相关帖子

沙发
原野之狼| | 2013-12-4 11:22 | 只看该作者
总结的不错  就是不怎么常用

使用特权

评论回复
板凳
qyihan|  楼主 | 2013-12-4 12:35 | 只看该作者
原野之狼 发表于 2013-12-4 11:22
总结的不错  就是不怎么常用

其实是很常用的,linux下面有很多已经编好的脚本,有时候需要去查看程序是怎么执行的,而且,在linux下面编一个小的应用程序或者测试程序,用脚本是很方便的,不需要编译工具来编译。

使用特权

评论回复
地板
luoxn28| | 2013-12-10 00:10 | 只看该作者
虽然看不懂,但希望以后向大神学习!:)

使用特权

评论回复
5
生无所息1| | 2013-12-11 09:47 | 只看该作者
好像很牛X!

使用特权

评论回复
6
黄小俊| | 2013-12-11 13:35 | 只看该作者
要用的多才记得住啊。

使用特权

评论回复
7
qyihan|  楼主 | 2013-12-11 15:13 | 只看该作者
黄小俊 发表于 2013-12-11 13:35
要用的多才记得住啊。

对啊  不过这个也没必要去记,知道有这些就行,用的时候再去查

使用特权

评论回复
8
nongfuxu| | 2013-12-13 07:57 | 只看该作者
想知道一下,现在学linux还有什么用?安桌虽然是基于它,不过开发安桌应用程序,能用它嘛?不能吧。

使用特权

评论回复
9
qyihan|  楼主 | 2013-12-13 16:39 | 只看该作者
nongfuxu 发表于 2013-12-13 07:57
想知道一下,现在学linux还有什么用?安桌虽然是基于它,不过开发安桌应用程序,能用它嘛?不能吧。 ...

linux用在各个方面,各个行业,这个大环境倒不必去说它了。
你提到安卓了,举一个例子把,现在的手机安卓应用程序,能操作摄像头,电容屏,声卡,网卡,按键,其实真正操作这些硬件的不是安卓软件,而是底层的设备驱动程序。如果做安卓应用软件开发,你当然不必了解硬件和内核的东西了,只要知道内核提供的接口就行了,但是你如果做驱动开发,那你就必须熟悉内核的原理了。
下面这个图一看就能一目了然了:

使用特权

评论回复
10
nongfuxu| | 2013-12-13 17:20 | 只看该作者
楼上说得对。
我想说的是,以后在编程方面的需求,写底层驱动,要比应用层程序,少太多。这个是趁势吧!

使用特权

评论回复
11
arm菜鸟人| | 2013-12-15 19:24 | 只看该作者
不觉明厉

使用特权

评论回复
12
peakwl| | 2013-12-15 22:43 | 只看该作者
没学过,支持。

使用特权

评论回复
13
dengxingling8| | 2013-12-16 12:58 | 只看该作者
nongfuxu 发表于 2013-12-13 17:20
楼上说得对。
我想说的是,以后在编程方面的需求,写底层驱动,要比应用层程序,少太多。这个是趁势吧! ...

这得看做什么吧?

使用特权

评论回复
14
yoghen| | 2013-12-16 18:02 | 只看该作者
技巧1先收了,其它的慢慢看

使用特权

评论回复
15
sinlaser| | 2013-12-19 10:05 | 只看该作者
很有用的一个技巧,学习了。激光防护眼镜

使用特权

评论回复
16
加油吧小鱼儿| | 2014-1-12 21:07 | 只看该作者
俺就是一来学习的

使用特权

评论回复
17
czc123liyanpeng| | 2014-1-13 16:41 | 只看该作者
慢慢积累而来!

使用特权

评论回复
18
inurl| | 2014-1-21 09:16 | 只看该作者
看着shell就发怵,楼主救救我吧。

使用特权

评论回复
19
zhao3462910| | 2014-1-21 19:13 | 只看该作者
学习了!

使用特权

评论回复
20
msblast| | 2014-1-22 11:40 | 只看该作者
正则表达式。。。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:嵌入式软件成长。。。<*_*>

13

主题

284

帖子

0

粉丝