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 我是学习嵌入式方向的,这学期就选修了这门专业任选课。 随着IT从业人员越来越多,理论上会有更多的人使用Linux,可以肯定,Linux在以后这多时间不会消失。 随着IT从业人员越来越多,理论上会有更多的人使用Linux,可以肯定,Linux在以后这多时间不会消失。 不同于Windows?系统需要花钱购买,因为Linux的核心是免费的,自由使用的,核心源代码是开放的。 写学习日记,这是学习历程的见证,同时我坚持认为是增强学习信念的法宝。 这种补充有助于他人在邮件列表/新闻组/论坛中搜索对你有过帮助的完整解决方案,这可能对他们也很有用。 学习Linux应具备的。[书籍+网络资源] 主流Linux发行版都自带非常详细的文档(包括手册页和FAQ),从系统安装到系统安全,针对不同层次的人的详尽文档,仔细阅读文档后40%问题都可在此解决。 当然你不需搭建所有服务,可以慢慢来。自己多动手,不要非等着别人帮你解决问题。 一些显而易见的小错误还是用vi改正比较方便。以后的大一点的程序就得在Linux下调试了,因为有的头文件在VC里面说找不到。? 就这样,我们一边上OS理论课,一边上这个实验,这样挺互补的,老师讲课,一步一步地布置任务 Linux最大的特点就是其开源性,这一点是十分难得的,这也是它能够存在到现在的原因之一。
页:
[1]