|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
在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}"#SEatch
复制代码 40.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 |
|