透明 发表于 2015-1-18 11:25:27

Linux教程之Bash编程易犯的毛病(四)仓酷云

在linux中学习命令的最好办法是学习Shell脚本编程,Shell脚本比起其他语言来学习简单,但是功能却十分强大.通过学习Shell编程,能让你掌握大量的linux命令。
36.[-n$foo]or[-z$foo]

这个例子中,$foo没有效引号引发来,当$foo包括空格大概$foo为空时城市出成绩:
$foo="someword"&&[-n$foo]&&echoyes-bash:[:some:binaryoperatorexpected$foo=""&&[-n$foo]&&echoyesyes准确的写法是:
[-n"$foo"][-z"$foo"][-n"$(somecommandwitha"$file"init)"][[-n$foo]][[-z$foo]]37.[[-e"$broken_symlink"]]returns1eventhough$broken_symlinkexists

这里-e选项是看文件是不是存在,当紧跟的文件是一个软链接时,它不看软链接是不是存在,而是看实践指向的文件是不是存在。以是当软链接破坏时,即实践指向的文件被删除后,-e的了局前往1。
以是假如你的确要判别前面的文件是不是存在,准确的写法是:
[[-e"$broken_symlink"||-L"$broken_symlink"]]38.edfile<<<"g/d{0,3}/s//e/g"fails

ed命令利用的正则语法,不撑持0次呈现次数,上面的就能够一般事情:
edfile<<<"g/d{1,3}/s//e/g"略过,如今很少会有人用ed命令吧。
39.exprsub-stringfailsfor"match"

上面的例子多半情形下运转不会有成绩:
word=abcdeexpr"$word":".(.*)"bcde可是当$work不巧恰好是match时,就有大概堕落了(MACOSX下的expr命令不撑持match,以是仍然能一般事情):
word=matchexpr"$word":".(.*)"缘故原由是match是expr命令内里的一个特别关头字,针对GNU体系,办理办法是在后面加一个+:
word=matchexpr+"$word":".(.*)"atch+号可让expr命令疏忽后续token的特别寄义。
别的一个倡议是,不要再利用expr命令了,expr能做的事变都能够用Bash原生撑持的参数睁开(ParameterExpansion)大概字符串睁开(SubstringExpansion)来完成。而且不异情形下,内置的功效一定比内部命令的效力要高。
下面的例子,目标是为了删除单词中的首字符,能够如许做:
$word=match$echo"${word#?}"#PEatch$echo"${word:1}"#SEatch40.OnUTF-8andByte-OrderMarks(BOM)

多半情形下,UNIX下UTF-8范例的文本不必要利用BOM,文本的编码是依据以后言语情况,MIME范例大概别的文件元数据信息断定的。工资浏览时,不会由于在文件入手下手处加BOM标志而腚影响,可是当文件要被剧本注释实行时,BOM标志会像MS-DOS下的换行符(^M)一样奇异。
41.content=$(<file)

这里没有甚么毛病,不外你要晓得命令交换会删除开头过剩的换行符。
略过,原文给的优化办法必要Bash4.2+以上的版本,手头没有如许的情况。
42.somecmd2>&1>>logfile

这是一个很罕见的毛病,明显你原本是想将尺度输入与尺度毛病输入都重定向到文件logfile中,可是你会惊奇地发明,尺度毛病仍然输入到屏幕中。

系统安全相关命令:passwd、su、umask、chgrp、chmod、chown、chattr、sudo、pswho

精灵巫婆 发表于 2015-1-21 06:07:58

我是学习嵌入式方向的,这学期就选修了这门专业任选课。

山那边是海 发表于 2015-1-23 08:10:31

随着IT从业人员越来越多,理论上会有更多的人使用Linux,可以肯定,Linux在以后这多时间不会消失。

老尸 发表于 2015-1-26 22:09:07

随着IT从业人员越来越多,理论上会有更多的人使用Linux,可以肯定,Linux在以后这多时间不会消失。

小女巫 发表于 2015-2-4 20:54:04

不同于Windows?系统需要花钱购买,因为Linux的核心是免费的,自由使用的,核心源代码是开放的。

谁可相欹 发表于 2015-2-6 19:37:41

写学习日记,这是学习历程的见证,同时我坚持认为是增强学习信念的法宝。

变相怪杰 发表于 2015-2-11 04:53:48

这种补充有助于他人在邮件列表/新闻组/论坛中搜索对你有过帮助的完整解决方案,这可能对他们也很有用。

简单生活 发表于 2015-2-28 15:12:11

学习Linux应具备的。[书籍+网络资源]

愤怒的大鸟 发表于 2015-2-28 20:49:25

主流Linux发行版都自带非常详细的文档(包括手册页和FAQ),从系统安装到系统安全,针对不同层次的人的详尽文档,仔细阅读文档后40%问题都可在此解决。

深爱那片海 发表于 2015-3-10 07:57:28

当然你不需搭建所有服务,可以慢慢来。自己多动手,不要非等着别人帮你解决问题。

透明 发表于 2015-3-11 17:02:18

一些显而易见的小错误还是用vi改正比较方便。以后的大一点的程序就得在Linux下调试了,因为有的头文件在VC里面说找不到。?

冷月葬花魂 发表于 2015-3-19 01:56:58

就这样,我们一边上OS理论课,一边上这个实验,这样挺互补的,老师讲课,一步一步地布置任务

海妖 发表于 2015-3-26 23:54:14

Linux最大的特点就是其开源性,这一点是十分难得的,这也是它能够存在到现在的原因之一。
页: [1]
查看完整版本: Linux教程之Bash编程易犯的毛病(四)仓酷云