|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
无论图形界面发展到什么水平这个原理是不会变的,Linux命令有许多强大的功能:从简单的磁盘操作、文件存取、到进行复杂的多媒体图象和流媒体文件的制作。
代码重构(Coderefactoring)偶然是很单调的,字符串交换之类的操纵不但有趣,并且还简单堕落,幸亏有一些工具可用,以PHP为例,如:Rephactor,Scisr等等,不外现成的工具常常意味着不敷天真,以是明天我要说说Shell在代码重构中的使用。
先来个复杂的,假定我们要把PHP文件中的foo_bar全都交换成fooBar,那末能够以下:
办法一,利用Sed:- shell>find/path-name"*.php"-print0|xargs-0seds/foo_bar/fooBar/g
复制代码 办法二,利用AWK:- shell>find/path-name"*.php"-print0|xargs-0awk{gsub(/foo_bar/,"fooBar")print}
复制代码 注:为了复杂,我把了局间接打印到终端屏幕了,至于怎样保留,稍后会申明。
接着说个庞大的:假定某个PHP项目,之前利用类之前必需挪用一个叫『includeClass』的办法,如今改用类主动加载的体例,以是要删除硬编码的includeClass挪用,出于美妙的思索,假如includeClass上面一行是空行的话,也一同删除,同时思索巨细写不敏感的要素。
重构前的代码示例:- 01<?php02includeClass(...);03echoa;0405echob;06includeClass(...);07includeClass(...);080910echoc;1112echod;13includeClass(...);141516echoe;17?>
复制代码 重构后的代码示例:- 01<?php02echoa;0304echob;0506echoc;0708echod;0910echoe;11?>
复制代码 在下手前,我们必要先摸摸底,懂得一下也许的情形:- shell>grep-I-riincludeClass/path|more
复制代码 个中,grep命令的参数乍一看欠好记,不外只需依照我说的办法记,就永久不会忘:后面的参数看作英文,前面的参数看作拼音
<br>。至于参数的详细寄义,请参阅man文档。
办法一,利用Sed编写剧本script.sh:- #!/bin/bashforPHPin$@;do/bin/sed-i/includeClass/I{hd}/^$/{x/includeClass/Idx}h$PHPdone
复制代码 注:篇幅所限,我把正则写的对照复杂
Sed的弱点是代码可读性对照差,长处是代码较短。别的内置的『-i』选项能够间接完成保留,这是我喜好Sed的缘故原由之一。
办法二,利用AWK编写剧本script.sh:- #!/bin/bashforPHPin$@;doTMP=$(mktemp)/bin/awkBEGIN{IGNORECASE=1}/includeClass/{previous=$0next}/^$/{if(previous~/includeClass/){previous=$0next}}{previous=$0print}$PHP>$TMP/bin/cp-f$TMP$PHP/bin/rm-f$TMPdone
复制代码 注:篇幅所限,我把正则写的对照复杂
AWK的弱点是代码对照长,长处是代码可读性较好。别的程序中是经由过程天生一个独一的一时文件来完成保留的。
有些人号称用过十几种甚至几十种linux,向人谈论起来头头是到,好像懂的很多。 |
|