仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 670|回复: 11
打印 上一主题 下一主题

[其他Linux] Linux设计说说Shell在代码重构中的使用仓酷云

[复制链接]
跳转到指定楼层
楼主
发表于 2015-1-18 11:22:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
无论图形界面发展到什么水平这个原理是不会变的,Linux命令有许多强大的功能:从简单的磁盘操作、文件存取、到进行复杂的多媒体图象和流媒体文件的制作。
代码重构(Coderefactoring)偶然是很单调的,字符串交换之类的操纵不但有趣,并且还简单堕落,幸亏有一些工具可用,以PHP为例,如:Rephactor,Scisr等等,不外现成的工具常常意味着不敷天真,以是明天我要说说Shell在代码重构中的使用。
先来个复杂的,假定我们要把PHP文件中的foo_bar全都交换成fooBar,那末能够以下:
办法一,利用Sed:
  1. shell>find/path-name"*.php"-print0|xargs-0seds/foo_bar/fooBar/g
复制代码
办法二,利用AWK:
  1. shell>find/path-name"*.php"-print0|xargs-0awk{gsub(/foo_bar/,"fooBar")print}
复制代码
注:为了复杂,我把了局间接打印到终端屏幕了,至于怎样保留,稍后会申明。
接着说个庞大的:假定某个PHP项目,之前利用类之前必需挪用一个叫『includeClass』的办法,如今改用类主动加载的体例,以是要删除硬编码的includeClass挪用,出于美妙的思索,假如includeClass上面一行是空行的话,也一同删除,同时思索巨细写不敏感的要素。
重构前的代码示例:
  1. 01<?php02includeClass(...);03echoa;0405echob;06includeClass(...);07includeClass(...);080910echoc;1112echod;13includeClass(...);141516echoe;17?>
复制代码
重构后的代码示例:
  1. 01<?php02echoa;0304echob;0506echoc;0708echod;0910echoe;11?>
复制代码
在下手前,我们必要先摸摸底,懂得一下也许的情形:
  1. shell>grep-I-riincludeClass/path|more
复制代码
个中,grep命令的参数乍一看欠好记,不外只需依照我说的办法记,就永久不会忘:后面的参数看作英文,前面的参数看作拼音

<br>。至于参数的详细寄义,请参阅man文档。
办法一,利用Sed编写剧本script.sh:
  1. #!/bin/bashforPHPin$@;do/bin/sed-i/includeClass/I{hd}/^$/{x/includeClass/Idx}h$PHPdone
复制代码
注:篇幅所限,我把正则写的对照复杂
Sed的弱点是代码可读性对照差,长处是代码较短。别的内置的『-i』选项能够间接完成保留,这是我喜好Sed的缘故原由之一。
办法二,利用AWK编写剧本script.sh:
  1. #!/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:13 | 只看该作者
Linux高手更具有鼓励新手的文化精神。如何在Linux社区获得帮助,需要说明的是你要有周全的思考,准备好你的问题,不要草率的发问。
透明 该用户已被删除
板凳
发表于 2015-1-30 07:26:12 | 只看该作者
不同于Windows?系统需要花钱购买,因为Linux的核心是免费的,自由使用的,核心源代码是开放的。
活着的死人 该用户已被删除
地板
发表于 2015-2-1 09:59:45 | 只看该作者
目前全球有超过一百多个Linux发行版本,在国内也能找到十几个常见版本。如何选择请根据你的需求和能力,RedhatLinux和DebianLinux是网络管理员的理想选择。
蒙在股里 该用户已被删除
5#
发表于 2015-2-1 16:47:18 | 只看该作者
众所周知,目前windows操作系统是主流,在以后相当长的时间内不会有太大的改变,其方便友好的图形界面吸引了众多的用户。
冷月葬花魂 该用户已被删除
6#
发表于 2015-2-6 21:53:25 | 只看该作者
现在的linux操作系统如redhat,难点,红旗等,都是用这么一个内核,加上其它的用程序(包括X)构成的。
山那边是海 该用户已被删除
7#
发表于 2015-2-7 22:50:33 | 只看该作者
现在的linux操作系统如redhat,难点,红旗等,都是用这么一个内核,加上其它的用程序(包括X)构成的。
因胸联盟 该用户已被删除
8#
发表于 2015-2-23 12:48:03 | 只看该作者
如果上面的措施没有解决问题,此时你就需要Linux社区的帮助了。 Linux的使用者一般都是专业人士,他们有着很好的电脑背景且愿意协助他人。
admin 该用户已被删除
9#
发表于 2015-3-7 08:55:25 | 只看该作者
笔者五分钟后就给出了解决方法: “首先备份原文件到其他目录,然后删掉/usr/local/unispim/unispimsp.ksc,编辑 /usr/local/unispim/unispimsp.ini,最后重启动计算机
10#
 楼主| 发表于 2015-3-9 21:50:39 | 只看该作者
下面笔者在论坛看到的一个好问题: “安装红旗4.0后,系统紫光输入法自带的双拼方案和我的习惯不一样,如何自定义双拼方案解决?谢谢?”这个问题很简练。
柔情似水 该用户已被删除
11#
发表于 2015-3-17 01:49:36 | 只看该作者
甚至目前许多应用软件都是基于它的。可是没有哪一个系统是十分完美的。
深爱那片海 该用户已被删除
12#
发表于 2015-3-23 12:28:14 | 只看该作者
在学习的过程中,我们用的是VM虚拟机,开始时真的不真的该怎么去做,特别是我的是命令窗口界面,别人的是图形界面,我都不知道怎么调过来。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-11-16 07:55

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表