仓酷云
标题:
Linux设计说说Shell在代码重构中的使用仓酷云
[打印本页]
作者:
仓酷云
时间:
2015-1-18 11:22
标题:
Linux设计说说Shell在代码重构中的使用仓酷云
无论图形界面发展到什么水平这个原理是不会变的,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命令的参数乍一看欠好记,不外只需依照我说的办法记,就永久不会忘:后面的参数看作英文,前面的参数看作拼音
登录/注册后可看大图
0001301043-0.gif
(174 Bytes, 下载次数: 13)
下载附件
保存到相册
Linux设计说说Shell在代码重构中的使用仓酷云
2015-1-18 11:22 上传
<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,向人谈论起来头头是到,好像懂的很多。
作者:
飘灵儿
时间:
2015-1-20 22:54
Linux高手更具有鼓励新手的文化精神。如何在Linux社区获得帮助,需要说明的是你要有周全的思考,准备好你的问题,不要草率的发问。
作者:
透明
时间:
2015-1-30 07:26
不同于Windows?系统需要花钱购买,因为Linux的核心是免费的,自由使用的,核心源代码是开放的。
作者:
活着的死人
时间:
2015-2-1 09:59
目前全球有超过一百多个Linux发行版本,在国内也能找到十几个常见版本。如何选择请根据你的需求和能力,RedhatLinux和DebianLinux是网络管理员的理想选择。
作者:
蒙在股里
时间:
2015-2-1 16:47
众所周知,目前windows操作系统是主流,在以后相当长的时间内不会有太大的改变,其方便友好的图形界面吸引了众多的用户。
作者:
冷月葬花魂
时间:
2015-2-6 21:53
现在的linux操作系统如redhat,难点,红旗等,都是用这么一个内核,加上其它的用程序(包括X)构成的。
作者:
山那边是海
时间:
2015-2-7 22:50
现在的linux操作系统如redhat,难点,红旗等,都是用这么一个内核,加上其它的用程序(包括X)构成的。
作者:
因胸联盟
时间:
2015-2-23 12:48
如果上面的措施没有解决问题,此时你就需要Linux社区的帮助了。 Linux的使用者一般都是专业人士,他们有着很好的电脑背景且愿意协助他人。
作者:
admin
时间:
2015-3-7 08:55
笔者五分钟后就给出了解决方法: “首先备份原文件到其他目录,然后删掉/usr/local/unispim/unispimsp.ksc,编辑 /usr/local/unispim/unispimsp.ini,最后重启动计算机
作者:
仓酷云
时间:
2015-3-9 21:50
下面笔者在论坛看到的一个好问题: “安装红旗4.0后,系统紫光输入法自带的双拼方案和我的习惯不一样,如何自定义双拼方案解决?谢谢?”这个问题很简练。
作者:
柔情似水
时间:
2015-3-17 01:49
甚至目前许多应用软件都是基于它的。可是没有哪一个系统是十分完美的。
作者:
深爱那片海
时间:
2015-3-23 12:28
在学习的过程中,我们用的是VM虚拟机,开始时真的不真的该怎么去做,特别是我的是命令窗口界面,别人的是图形界面,我都不知道怎么调过来。
欢迎光临 仓酷云 (http://ckuyun.com/)
Powered by Discuz! X3.2