linux下shell的十个最佳实践

 每个在UNIX/Linux上工做的程序员可能都擅长shell脚本编程。 但你们解决问题的方式却不尽相同,这要取决于对专业知识的掌握程度、使用命令的种类、看待问题的方式等等。对于那些处在shell脚本编程初级阶段的程序员来讲,遵循一些恰当的作法能够帮助你更快、更好的学习这些编程技巧。下面,咱们就来讨论这些能帮助你学习shell脚本编程的方法吧。
linux

一、多动手程序员

一些人会先通读整本教材后再上机练习。这种方法可能适用于一些人,但我却不太看好它。个人建议是,先学一些最基础的,可以让你开始编码的知识就能够了。以后,动手写一些简单的程序。一旦你因为知识上的欠缺而不得不中止时,再回到书本上去读你想要了解的那部分,而后继续作你的项目。如此周而复始,不断提升你的水平。这种边学边作的方法曾让我受益良多。web

二、善用命令提示符shell

有时候,咱们写的脚本中有一些错误。咱们修改错误,运行脚本,但系统再次报错。而且这个改错报错的过程可能会发生不少次。碰到这些状况,首先须要找到有问题的行或命令,这能够经过一些调试语句来轻松作到。一旦发现这条语句,尝试在命令提示符下执行相同的语句。若是它在命令提示符下开始正常运行,你就能够容易的推断出它不能正常运行的缘由了。多是因为某些错误输入的命令,或者是某些环境变量不匹配,或者是从不一样的地方引用了某个二进制文件等等。这种方法会让调试变得简单易行。编程


关于 shell 脚本编程的10 个最佳实践app


三、考虑问题要全面性能

如今咱们来看个问题。你想到了关于某个问题的解决方案,但这个解决方案只适用于处理小型文件。但是当处理比较大的文件时,你该怎么办?举个例子,咱们想要获得一个文件的第一行内容:学习

1测试

sed -n '1p' file优化

这条语句固然会给出你想要的第一行内容。但是若是处理的文件包含上百万条记录呢?尽管上面的那条sed命令能够输出文件的第一行内容,可是想要处理大型文件必定会带来性能上的问题。


解决办法:

1

sed -n '1p;1q' file

这条命令将只输出第一行,同时退出程序。

四、常常尝试不一样的方法

你在写脚本时碰到一个问题,而后你找到了一种独特的解决方法。下一次你偶然又碰到相似的问题,这时,不要再用之前你用过的方法来解决。试试另一种方法吧。若是某一天再次遇到这种状况,再试试其它方法。

例如:

1

2

3

4

if [ $? -eq 0 ]

then

echo "Success"

fi

另外一种方法:

1

[ $? -eq 0 ] && echo "Success"


如今你可能会明白这个博客里会有那么多以“……的不一样解决方法”为题的文章了吧。全部这些文章的目的都是用来帮助订阅这个博客的开发者开阔视野,打开思路。


五、快速编码

脚本能够节省咱们的时间,提升生产力。但是,难道咱们花在写脚本和测试上的时间还少吗?咱们想写一个脚本,因而打开一个文件,写下代码,保存文件, 以后运行脚本,系统报错,咱们再打开文件修改、保存、运行……在这个过程当中会花费不少时间。在此前的一篇题为《SHELL编程指导》的文章里,你能够学会如何编写脚本和测试正在运行中的脚本,而不用再回顾命令提示符。这些方法能够加快编码的速度。当我写脚本的时候,我老是使用这些方法。并且我能够很确定的说,它们帮我节约了很多时间。



六、常用内部命令

不管碰到哪一种状况,请尽可能考虑使用内部命令而不是外部命令。用内部命令对你永远都有好处。根据正在处理的输入文件的大小,内部命令能够在性能方面为你节省不少。虽然你并不老是有这样选择内部命令抑或外部命令的机会,但在某些状况下,你必定能作出正确的选择。




七、没有必要使用cat命令

这是咱们常常在论坛里讨论的话题之一。没有必要使用cat命令指的是在有些时候,咱们会发现根本没有必要使用cat命令。有时候,使用了多余的cat命令会让你的代码看起来很丑陋,并且还会带来性能上的问题。

例如:

1

cat /etc/<a href="http://so.21ops.com/cse/search?s=9181936462520079739&entry=1&q=passwd"class="bdcs-inlinelink" target="_blank">passwd</a> | grep guru

正确的方法应该是:

1

grep guru /etc/passwd



八、仔细阅读错误信息

程序员常犯的一个错误是:当咱们敲入的命令报错后,咱们中的大多数人只是对错误信息一瞥而过,而不会去认真的读一读。不少时候,错误信息里就包含了解决办法。更重要的是,有时候咱们修改了某个错误并再次运行后,系统依旧会报错。而后咱们再次修改,但系统再次报错。这可能会持续很长时间。但实际上,旧的错误可能已经被纠正,只是因为出现了其它一些新错误才致使系统再次报错。而咱们依旧在怀疑为何修改好的代码依然不能正常运行。所以,请你养成仔细阅读错误信息的习惯。


九、尽可能避免臃肿的命令

你正在尝试去从一个大的文件中筛选某条信息。接下来你可能写一大堆命令来实现这一功能。但是,尽管你将获得正确的结果,你写的命令却不够好,且晦涩难懂。所以,咱们应该尽可能避免这种状况发生。下面这个例子就是代码优化的好例子。


例如:检索用户ID值为502的用户名。


下面的命令很差:

1

grep 502 /etc/passwd cut -d: -f1

这条命令也不够好:

1

grep 502 /etc/passwd awk -F ":" '{print $1}'

这才是一条好的命令:

1

awk -F ":" '$3==502{print $1}' /etc/passwd

正如以上示例,用一条简单的awk命令就能够完成检索任务。

十、别吝啬添加注释


写了一份脚本,一两个星期后,你再次打开脚本文件,若是没有注释在里面的话,你可能会花上不少时间才能理解这些代码。虽然代码是咱们本身写的,但这依旧会浪费咱们不少的时间。脚本是用来节省时间的,所以,咱们没有理由浪费时间去理解这些用来节省时间的文件。因此,请养成在脚本中添加注释的好习惯。 这些注释没必要很详细,能让本身或别人读懂就行。

若是想深刻体验LINUX系统的新手,也能够先下载一个方德Linux软件中心试用一下。

免费下载地址:http://www.nfs-cloud.cn:81/appCenter/open/softcenter

相关文章
相关标签/搜索