点击排行
|
评论排行
|
4
Aug
在httpd.conf中,对某个主机进行以下操作:
rewriteengine on
rewritecond %{HTTP_HOST} [^.]+\.域名\.com$
rewriterule ^(.+) %{HTTP_HOST}$1 [C]
rewriterule ([^.]+)\.域名\.com(.*) /$1$2
其他配置文件
接着在DNS中开设一个泛解析到对应的IP地址。
就可以实现下面的方案。
域名:domain.com
绝对路径:/home/domain.com/
www.domain.com 自动解析到 /home/domain.com/www/
abc.domain.com 自动解析到 /home/domain.com/abc/
等等子域名都可以自动解析到 /home/domains.com/对应子域名名称的文件夹
直接建立子域名名称的文件夹即可使用。不需重启apache。
泛域名解析就是将客户的域名全部解析到同一个IP地址。
例如客户的域名a.com,之下所设的*.a.com全部解析到同一个IP地址上去。
比如客户设b.a.com就会自已自动解析到与a.com同一个IP地址上去。
泛域名是指 * IN A 123.123.123.123 或 * IN CNAME www.aaa.com
泛域名解析的用途:
1.可以让域名支持无限的子域名(这也是泛域名解析最大的用途)。
2.防止用户错误输入导致的网站不能访问的问题。
在DNS服务器里面设置泛域名解析有2种方式
1. 在域名解析里面设置 *.a.com的A记录或者CName 记录指向某一个IP/服务器名(这种方式 虚拟主机用户是不支持的)
2. 在域名转发里面设置 *.a.com 转发到 http://www.a.com( 虚拟主机可以支持这种转发方式,用户在自己的程序中可以判断访问者要访问的域名),我们会在程序技术文档里面讲解
例子二:
http://www.xuega.com/klein/blog/article_321.html
实现动态二级域名解析的一个关键就是,把特有的名字怎么能够提出来,因为RewriteRule中的匹配,是不包括域名的匹配的,其实这其中就是一层窗户纸,把域名先重写放到“路径”中,再对“路径”重写一次就可以了,也就是说加一步过渡。这样说大概还一头雾水,给个实例。
首先按我上次写的文章的那个需求写一个,假设动态解析*.iecn.cn。
注意要先做一个所谓的范域名解析,就是说把所有*.iecn.cn解析到某个IP上去,这不是本文章讨论范围就不细说了。
Apache中相关配置如下:
ServerAdmin yourmail@domain.com
DocumentRoot /YourWwwRoot/.default
ServerName all-sites
ErrorLog logs/all-sites-error_log
CustomLog logs/all-sites-access_log common
# 下面三行实现动态解析
RewriteCond %{HTTP_HOST} ^[a-z0-9\-]+\.iecn\.cn$
RewriteRule ^/(.*)$ /%{SERVER_NAME}/$1 ##注##
RewriteRule ^/([a-z0-9\-]+)\.iecn\.cn/(.*)$ /YourWwwRoot/$1/$2 [L]
# 没有解析到的情况下扔到自己的一个PHP中做一下处理
RewriteRule ^.*$ /index.php [L]
注意我标注的地方,那一步就是一个过渡,说一下过程吧,假设现在访问:
http://zhong.iecn.cn/xxx
经第一步重写,变成 /zhong.iecn.cn/xxx
经第二步重写就是 /YourWwwRoot/zhong/xxx 了,其他的操作与我行前说的基本就差不多了。
再举一个可能更常见的实例,假设一个博客系统,要求把
http://xxx.iecn.cn
隐式的重写成
http://blog.iecn.cn/blog.php?u=xxx
这里面的xxx可以看做是一个用户名,想必类似这样的需求大家一定都见过很多了,不过多解释了。
同意先做范域名解析这里不多说。在Apache中做如下重写(只写Rewrite部分了):
RewriteCond %{HTTP_HOST} ^[a-z0-9\-]+\.iecn\.cn$
RewriteRule ^/?$ /%{HTTP_HOST}
RewriteRule ^/([a-z0-9\-]+)\.iecn\.cn/?$ /blog.php?u=$1 [L]
zz from http://blog.iecn.net/blog.php?do=showone&tid=1013
Apache下用rewrite实现任意域名的动态解析
Apache的mod_rewrite模块功能非常强大,我以后会写更多的实例出来。
关于mod_rewrite的使用,不想多说,提供两个相关文档的地址:
http://w.yi.org/ftp/FAPM/apache/Apache2/zh/mod/mod_rewrite.html
http://man.chinaunix.net/newsoft/Apache2.2_chinese_manual/mod/mod_rewrite.html
如果你只是想用一个现成的你可以直接把我的copy过去改改,如果想从技术上搞清楚,那么首先要掌握两方面的技术:
Apache下mod_rewrite的使用(可参照我上面提供的两个地址)
正则表达式(这是一门在很多地方都非常有用的技术)
废话不多说,说一下我在IECN.NET服务器的实际配置。
我习惯使用NameVirtualHost,如果你的服务器中只想用这种动态的解析,直接在配置文件中做是一样的,如果想保留自己一些特殊站点的配置,还是用NameVirtualHost吧。
在Apache中,如果启用了NameVirtualHost,在没有匹配到的解析的情况下,会默认到第一组VirtualHost中,所以我们的动态解析自然是放到第一组VirtualHost(有关apache的一些配置这里就不多说,自己查阅相关文档。),如下:
ServerAdmin yourmail@domain.com
DocumentRoot /YourWwwRoot/.default
ServerName all-sites
ErrorLog logs/all-sites-error_log
CustomLog logs/all-sites-access_log common
# 下面两行实现动态解析
RewriteCond /YourWwwRoot/%{SERVER_NAME} -d
RewriteRule ^/(.*)$ /YourWwwRoot/%{SERVER_NAME}/$1 [L]
# 没有解析到的情况下扔到自己的一个PHP中做一下处理
RewriteRule ^.*$ /index.php [L]
把YourWwwRoot换成你自己的路径,注意这里的ServerName没有让它起作用,关建看这两行:
RewriteCond /YourWwwRoot/%{SERVER_NAME} -d
RewriteRule ^/(.*)$ /YourWwwRoot/%{SERVER_NAME}/$1 [L]
第一行是一个rewrite条件,这里的条件是:如果存在路径/YourWwwRoot/%{SERVER_NAME},%{SERVER_NAME}就是你访问站点的域名,-d就表示存在这个路径的意思(如果是文件则是-f);
第二行是一个rewrite规则,这个规则执行的前提是:符合规则的正则表达式匹配;符合它前面(也就是刚才说的第一行)rewrite条件。这里面是的匹配的是.*,也就是所有了,也就是说只要第一行的条件成立,它就会被重写到/YourWwwRoot/%{SERVER_NAME}/$1,% {SERVER_NAME}是站点的域名,$1则是匹配到的.*。
OK,现在就很清楚了,假设现在有www.domain.com指向到这个服务器,当你访问它时(这里假设没有在其他VirtualHost解析这个域名),看看它是如何工作的:
首先它在没有找到匹配的解析时,就来到了这组默认的VirtualHost;
判断 /YourWwwRoot/www.domain.com 是否存在;
如果存在,重定向到 /YourWwwRoot/www.domain.com。
假设你访问 http://www.domain.com/test.html,就会重定向到系统的 /YourWwwRoot/www.domain.com/test.html。
那也就是说你在 YourWwwRoot 下建一个与域名同名的目录(并具备apache访问的权限),就实现了这个域名的解析。
rewriteengine on
rewritecond %{HTTP_HOST} [^.]+\.域名\.com$
rewriterule ^(.+) %{HTTP_HOST}$1 [C]
rewriterule ([^.]+)\.域名\.com(.*) /$1$2
其他配置文件
接着在DNS中开设一个泛解析到对应的IP地址。
就可以实现下面的方案。
域名:domain.com
绝对路径:/home/domain.com/
www.domain.com 自动解析到 /home/domain.com/www/
abc.domain.com 自动解析到 /home/domain.com/abc/
等等子域名都可以自动解析到 /home/domains.com/对应子域名名称的文件夹
直接建立子域名名称的文件夹即可使用。不需重启apache。
泛域名解析就是将客户的域名全部解析到同一个IP地址。
例如客户的域名a.com,之下所设的*.a.com全部解析到同一个IP地址上去。
比如客户设b.a.com就会自已自动解析到与a.com同一个IP地址上去。
泛域名是指 * IN A 123.123.123.123 或 * IN CNAME www.aaa.com
泛域名解析的用途:
1.可以让域名支持无限的子域名(这也是泛域名解析最大的用途)。
2.防止用户错误输入导致的网站不能访问的问题。
在DNS服务器里面设置泛域名解析有2种方式
1. 在域名解析里面设置 *.a.com的A记录或者CName 记录指向某一个IP/服务器名(这种方式 虚拟主机用户是不支持的)
2. 在域名转发里面设置 *.a.com 转发到 http://www.a.com( 虚拟主机可以支持这种转发方式,用户在自己的程序中可以判断访问者要访问的域名),我们会在程序技术文档里面讲解
例子二:
http://www.xuega.com/klein/blog/article_321.html
实现动态二级域名解析的一个关键就是,把特有的名字怎么能够提出来,因为RewriteRule中的匹配,是不包括域名的匹配的,其实这其中就是一层窗户纸,把域名先重写放到“路径”中,再对“路径”重写一次就可以了,也就是说加一步过渡。这样说大概还一头雾水,给个实例。
首先按我上次写的文章的那个需求写一个,假设动态解析*.iecn.cn。
注意要先做一个所谓的范域名解析,就是说把所有*.iecn.cn解析到某个IP上去,这不是本文章讨论范围就不细说了。
Apache中相关配置如下:
ServerAdmin yourmail@domain.com
DocumentRoot /YourWwwRoot/.default
ServerName all-sites
ErrorLog logs/all-sites-error_log
CustomLog logs/all-sites-access_log common
# 下面三行实现动态解析
RewriteCond %{HTTP_HOST} ^[a-z0-9\-]+\.iecn\.cn$
RewriteRule ^/(.*)$ /%{SERVER_NAME}/$1 ##注##
RewriteRule ^/([a-z0-9\-]+)\.iecn\.cn/(.*)$ /YourWwwRoot/$1/$2 [L]
# 没有解析到的情况下扔到自己的一个PHP中做一下处理
RewriteRule ^.*$ /index.php [L]
注意我标注的地方,那一步就是一个过渡,说一下过程吧,假设现在访问:
http://zhong.iecn.cn/xxx
经第一步重写,变成 /zhong.iecn.cn/xxx
经第二步重写就是 /YourWwwRoot/zhong/xxx 了,其他的操作与我行前说的基本就差不多了。
再举一个可能更常见的实例,假设一个博客系统,要求把
http://xxx.iecn.cn
隐式的重写成
http://blog.iecn.cn/blog.php?u=xxx
这里面的xxx可以看做是一个用户名,想必类似这样的需求大家一定都见过很多了,不过多解释了。
同意先做范域名解析这里不多说。在Apache中做如下重写(只写Rewrite部分了):
RewriteCond %{HTTP_HOST} ^[a-z0-9\-]+\.iecn\.cn$
RewriteRule ^/?$ /%{HTTP_HOST}
RewriteRule ^/([a-z0-9\-]+)\.iecn\.cn/?$ /blog.php?u=$1 [L]
zz from http://blog.iecn.net/blog.php?do=showone&tid=1013
Apache下用rewrite实现任意域名的动态解析
Apache的mod_rewrite模块功能非常强大,我以后会写更多的实例出来。
关于mod_rewrite的使用,不想多说,提供两个相关文档的地址:
http://w.yi.org/ftp/FAPM/apache/Apache2/zh/mod/mod_rewrite.html
http://man.chinaunix.net/newsoft/Apache2.2_chinese_manual/mod/mod_rewrite.html
如果你只是想用一个现成的你可以直接把我的copy过去改改,如果想从技术上搞清楚,那么首先要掌握两方面的技术:
Apache下mod_rewrite的使用(可参照我上面提供的两个地址)
正则表达式(这是一门在很多地方都非常有用的技术)
废话不多说,说一下我在IECN.NET服务器的实际配置。
我习惯使用NameVirtualHost,如果你的服务器中只想用这种动态的解析,直接在配置文件中做是一样的,如果想保留自己一些特殊站点的配置,还是用NameVirtualHost吧。
在Apache中,如果启用了NameVirtualHost,在没有匹配到的解析的情况下,会默认到第一组VirtualHost中,所以我们的动态解析自然是放到第一组VirtualHost(有关apache的一些配置这里就不多说,自己查阅相关文档。),如下:
ServerAdmin yourmail@domain.com
DocumentRoot /YourWwwRoot/.default
ServerName all-sites
ErrorLog logs/all-sites-error_log
CustomLog logs/all-sites-access_log common
# 下面两行实现动态解析
RewriteCond /YourWwwRoot/%{SERVER_NAME} -d
RewriteRule ^/(.*)$ /YourWwwRoot/%{SERVER_NAME}/$1 [L]
# 没有解析到的情况下扔到自己的一个PHP中做一下处理
RewriteRule ^.*$ /index.php [L]
把YourWwwRoot换成你自己的路径,注意这里的ServerName没有让它起作用,关建看这两行:
RewriteCond /YourWwwRoot/%{SERVER_NAME} -d
RewriteRule ^/(.*)$ /YourWwwRoot/%{SERVER_NAME}/$1 [L]
第一行是一个rewrite条件,这里的条件是:如果存在路径/YourWwwRoot/%{SERVER_NAME},%{SERVER_NAME}就是你访问站点的域名,-d就表示存在这个路径的意思(如果是文件则是-f);
第二行是一个rewrite规则,这个规则执行的前提是:符合规则的正则表达式匹配;符合它前面(也就是刚才说的第一行)rewrite条件。这里面是的匹配的是.*,也就是所有了,也就是说只要第一行的条件成立,它就会被重写到/YourWwwRoot/%{SERVER_NAME}/$1,% {SERVER_NAME}是站点的域名,$1则是匹配到的.*。
OK,现在就很清楚了,假设现在有www.domain.com指向到这个服务器,当你访问它时(这里假设没有在其他VirtualHost解析这个域名),看看它是如何工作的:
首先它在没有找到匹配的解析时,就来到了这组默认的VirtualHost;
判断 /YourWwwRoot/www.domain.com 是否存在;
如果存在,重定向到 /YourWwwRoot/www.domain.com。
假设你访问 http://www.domain.com/test.html,就会重定向到系统的 /YourWwwRoot/www.domain.com/test.html。
那也就是说你在 YourWwwRoot 下建一个与域名同名的目录(并具备apache访问的权限),就实现了这个域名的解析。
24
Jul
M600i 使用技巧汇总
分类:生活随笔 出处:本站原创
M600版本信息查看方法:上*下下*下* -服务信息-软件信息 或直接进入“菜单”-任选一个“图标”-“更多”-“系统信息”
键盘输入等号“=”:长按OK键的左边
是和否的选择:当出现提示选择是和否的时候,按Y键代表是,N键代表否
删除短信:L键旁边的向左指的箭头键按一下,会提示是否删除该条短信,按Y删除,按N不删除
输入法切换:左下角“上”键+“0”键,同时按,或依次按,在拼音、笔画、英文输入法间循环切换
插入符号:按住“,”或者“。”,会弹出符号对话框
英文大写:在输入英文时,按一次”上“,第一个字母大写,两次”上“,锁定大写,再按解除锁定;数字输入:在输入文本时,按一次“ALT”,再按相应数字键,可输入一个数字,按两次”ALT”,锁定输入多个数字,再按解除锁定
返回桌面:在子菜单视图,按住“返回”键快速返回待机桌面视图
手动键盘锁:在待机状态下 长按M600机身左侧的返回键 就可锁定 再长按就解锁了
静音:按住右下角的“右”键,开关静音
语音信箱:按住“1”键,访问语音信箱
语音拨号:按住滚轮或“OK”键,使用语音标签
通讯录:待机状态下,按住除特殊定义的键(如“OK”、“1”和滚轮等)外的其他键,可访问通讯录
工程模式:滚轮上>*键>滚轮下>滚轮下>*键>滚轮下>*键
文本选择:使用“向上”和“左”“右”键配合选择要编辑的文本
Web浏览:打开浏览器后,按Alt+1新建标签页;按Alt+2关闭当前标签页;按Alt+7在多个标签页间切换
键盘的复制粘贴键:在你编辑短信或是文本的时候,同时按住键盘最下排的 “向上”和 “向左” 或 “向上”和 “向右” 键,选中你要复制或剪切的内容!复制长按C 剪切长按X,再长按P键就能复制剪切
设置短信铃声:点左上角(或者右下的更多)—音量—右下的设置—信息提示—选择—信息(点默认音乐右边的箭头向下)—查找选择你要的声音
快捷键的图标自由更换:用滚轮选中要更改的图标,点选右下角更多,选择编辑
更改桌面图标:用滚轮选中要更改的图标,点选右下角更多,选择替换
更改桌面图标:用滚轮选中要更改的图标,点选右下角更多,选择替换
M600手写输入:从右至左划“一”,删除最近输入字;从下至上划“l”,在中文和英文输入法间切换;(点击已输入字左侧,向右拖动笔,可框选至笔抬起位置的文字,进行删除或编辑;屏幕右侧中间的三角符号为分屏符,虚拟将屏幕分成两个区域,在上半区域书写,被识别为数字,在下半区域或跨两区书写,识别为汉字或英文(取决于所选输入语言)
M2卡重命名的方法:进入主菜单—工具—控制面板—其他—格式化记忆棒—重命名
M600主题安装:可以用数据线或读卡器把主题文件xxx.utz的放到d:\other目录下,然后手机的文件管理器里其他里打开安装
M600 GPRS上网设置:工具-控制台-连线-互联网帐户
在帐户选项卡中,选择:更多-新增帐户-数据
帐户名称:中国移动
网址:cmwap
其它默认
点击:更多
选择:代理
勾上:使用代理伺服器
代理伺服器地址:010.000.000.172
代理伺服器接口:80
其它默认 OK
M600 彩信设置:工具-控制台-信息设定-MMS帐户
在MMS帐户中:
服务中心地址:http://mmsc.monternet.com
互联网用户:中国移动(选择刚才刚新建的帐户)
自动下载:(随你自己高兴怎么设)
下载档案大小:(同上)
保存 OK
M600 接挂电话 非触屏操作:拨打时按完号码后再按OK键即可呼叫
自己方拨出电话,通话后想主动挂断,可以连按两下侧键的“返回”即可挂断。或者按一下“滚轮”即可挂断(是向里按,不是上下拨)
对方拨入电话,接听后,可以按一下“滚轮”即可挂断(是向里按,不是上下拨)
如果对方拨入电话,按一下“滚轮”即可接听!
M600关机充电屏幕有亮情况的解决:开机充电 打开节电模式 记得是关闭无线电再充电 屏幕就会黑黑的了 哈哈
怎样打开很紧的电池后盖:将小6倒置,头部放在柔软的地方,左右手的拇指顶住机器底部,各用三只手指,总共六指向上摩擦
怎样快速切换输入法:在屏幕上从下向上划
为什么JAVA不能运行:java安装时的文件名要用全英文,否则不能运行
去掉待机的“今天”:待机状态下点 更多--选项
更换手写时的笔迹颜色:手写输入时:依次点击 更多--文本选项--手写设置
混血后媒体播放器里的文件名显示乱码的解决方法:主菜单-媒体播放器-音乐-更多-设置-选项-文件-语言(选择简体中文(GBK)
如何关掉3G网络 为了省电:工具--控制面板--连接--手机网络--更多--GSM/3G网络,选择“仅限GSM”
如何分离GPRS 为了省电:工具--控制面板--连接--互连网帐户--更多--选项--首选模式--“仅限CS”
消除听音乐时背景电流声的办法:工具-控制面板--通话设置--语音控制--便携免提,随便录一段魔音即可
键盘输入等号“=”:长按OK键的左边
是和否的选择:当出现提示选择是和否的时候,按Y键代表是,N键代表否
删除短信:L键旁边的向左指的箭头键按一下,会提示是否删除该条短信,按Y删除,按N不删除
输入法切换:左下角“上”键+“0”键,同时按,或依次按,在拼音、笔画、英文输入法间循环切换
插入符号:按住“,”或者“。”,会弹出符号对话框
英文大写:在输入英文时,按一次”上“,第一个字母大写,两次”上“,锁定大写,再按解除锁定;数字输入:在输入文本时,按一次“ALT”,再按相应数字键,可输入一个数字,按两次”ALT”,锁定输入多个数字,再按解除锁定
返回桌面:在子菜单视图,按住“返回”键快速返回待机桌面视图
手动键盘锁:在待机状态下 长按M600机身左侧的返回键 就可锁定 再长按就解锁了
静音:按住右下角的“右”键,开关静音
语音信箱:按住“1”键,访问语音信箱
语音拨号:按住滚轮或“OK”键,使用语音标签
通讯录:待机状态下,按住除特殊定义的键(如“OK”、“1”和滚轮等)外的其他键,可访问通讯录
工程模式:滚轮上>*键>滚轮下>滚轮下>*键>滚轮下>*键
文本选择:使用“向上”和“左”“右”键配合选择要编辑的文本
Web浏览:打开浏览器后,按Alt+1新建标签页;按Alt+2关闭当前标签页;按Alt+7在多个标签页间切换
键盘的复制粘贴键:在你编辑短信或是文本的时候,同时按住键盘最下排的 “向上”和 “向左” 或 “向上”和 “向右” 键,选中你要复制或剪切的内容!复制长按C 剪切长按X,再长按P键就能复制剪切
设置短信铃声:点左上角(或者右下的更多)—音量—右下的设置—信息提示—选择—信息(点默认音乐右边的箭头向下)—查找选择你要的声音
快捷键的图标自由更换:用滚轮选中要更改的图标,点选右下角更多,选择编辑
更改桌面图标:用滚轮选中要更改的图标,点选右下角更多,选择替换
更改桌面图标:用滚轮选中要更改的图标,点选右下角更多,选择替换
M600手写输入:从右至左划“一”,删除最近输入字;从下至上划“l”,在中文和英文输入法间切换;(点击已输入字左侧,向右拖动笔,可框选至笔抬起位置的文字,进行删除或编辑;屏幕右侧中间的三角符号为分屏符,虚拟将屏幕分成两个区域,在上半区域书写,被识别为数字,在下半区域或跨两区书写,识别为汉字或英文(取决于所选输入语言)
M2卡重命名的方法:进入主菜单—工具—控制面板—其他—格式化记忆棒—重命名
M600主题安装:可以用数据线或读卡器把主题文件xxx.utz的放到d:\other目录下,然后手机的文件管理器里其他里打开安装
M600 GPRS上网设置:工具-控制台-连线-互联网帐户
在帐户选项卡中,选择:更多-新增帐户-数据
帐户名称:中国移动
网址:cmwap
其它默认
点击:更多
选择:代理
勾上:使用代理伺服器
代理伺服器地址:010.000.000.172
代理伺服器接口:80
其它默认 OK
M600 彩信设置:工具-控制台-信息设定-MMS帐户
在MMS帐户中:
服务中心地址:http://mmsc.monternet.com
互联网用户:中国移动(选择刚才刚新建的帐户)
自动下载:(随你自己高兴怎么设)
下载档案大小:(同上)
保存 OK
M600 接挂电话 非触屏操作:拨打时按完号码后再按OK键即可呼叫
自己方拨出电话,通话后想主动挂断,可以连按两下侧键的“返回”即可挂断。或者按一下“滚轮”即可挂断(是向里按,不是上下拨)
对方拨入电话,接听后,可以按一下“滚轮”即可挂断(是向里按,不是上下拨)
如果对方拨入电话,按一下“滚轮”即可接听!
M600关机充电屏幕有亮情况的解决:开机充电 打开节电模式 记得是关闭无线电再充电 屏幕就会黑黑的了 哈哈
怎样打开很紧的电池后盖:将小6倒置,头部放在柔软的地方,左右手的拇指顶住机器底部,各用三只手指,总共六指向上摩擦
怎样快速切换输入法:在屏幕上从下向上划
为什么JAVA不能运行:java安装时的文件名要用全英文,否则不能运行
去掉待机的“今天”:待机状态下点 更多--选项
更换手写时的笔迹颜色:手写输入时:依次点击 更多--文本选项--手写设置
混血后媒体播放器里的文件名显示乱码的解决方法:主菜单-媒体播放器-音乐-更多-设置-选项-文件-语言(选择简体中文(GBK)
如何关掉3G网络 为了省电:工具--控制面板--连接--手机网络--更多--GSM/3G网络,选择“仅限GSM”
如何分离GPRS 为了省电:工具--控制面板--连接--互连网帐户--更多--选项--首选模式--“仅限CS”
消除听音乐时背景电流声的办法:工具-控制面板--通话设置--语音控制--便携免提,随便录一段魔音即可
23
Jul
查找某时间段修改的文件
分类:电脑技术 » linux shell 出处:本站原创
需要查找某目录下某个时间段的文件,考虑到目录的特殊性(例如含有空格),做了一些特别的处理(感谢阿阿飛兄弟)
执行:
./findfile /root 20080710 20080720
对于含有空格的目录如根目录下的test test
可以用./findfile /test\ test/ 20080701 20080723 这样来执行
有任何意见欢迎提出:)
#!/bin/bash
find "$1" | while read name; do
iname=`file "$name"|awk -F: '{print $2}'| sed -e 's/ //g'`
if [ ! "$iname" == 'directory' ] && [ ! "$iname" == 'symbolic' ]; then
filetime=`ls -l "$name" --time-style +%Y%m%d | awk '{print $6}'`
if [ $2 -le $filetime ] && [ $filetime -le $3 ]; then
echo $name
fi
fi
done
find "$1" | while read name; do
iname=`file "$name"|awk -F: '{print $2}'| sed -e 's/ //g'`
if [ ! "$iname" == 'directory' ] && [ ! "$iname" == 'symbolic' ]; then
filetime=`ls -l "$name" --time-style +%Y%m%d | awk '{print $6}'`
if [ $2 -le $filetime ] && [ $filetime -le $3 ]; then
echo $name
fi
fi
done
执行:
./findfile /root 20080710 20080720
对于含有空格的目录如根目录下的test test
可以用./findfile /test\ test/ 20080701 20080723 这样来执行
有任何意见欢迎提出:)
14
Jul
帮朋友写的一个脚本
分类:电脑技术 » linux shell 出处:本站原创
要求:
1、目录/FTP/下有很多用户目录,分别是某一个公司的英文缩写,FTP目录结构为
/FTP/AAA/DOWNLOAD
/FTP/BBB/DOWNLOAD
......
2、在每一个公司的DOWNLOAD下,每天会有很多文本文件上传过来,但为了便于数据统计,导入到XML乃至数据库中,需要对上传的文件进行批量重命名,命名的格式如:CCO_AAA_SZ2008071401_SZ_V04.test1.txt,其中2008071401是文件修改日期。
3、文件内容如:
重新命名文件之后,需要对每个文件的内容进行修改,修改要求如下:
以|为分隔符分割字段,删除文件的第一行,将剩下内容每一行|之前的字符删除(包括|符号),然后将|替换成||,最后判断剩下的内容,如果剩下文件内容的第一行不是以13开头,删除!
初步代码如下,还不完善,有不妥的地方希望大家批评指正。
1、目录/FTP/下有很多用户目录,分别是某一个公司的英文缩写,FTP目录结构为
/FTP/AAA/DOWNLOAD
/FTP/BBB/DOWNLOAD
......
2、在每一个公司的DOWNLOAD下,每天会有很多文本文件上传过来,但为了便于数据统计,导入到XML乃至数据库中,需要对上传的文件进行批量重命名,命名的格式如:CCO_AAA_SZ2008071401_SZ_V04.test1.txt,其中2008071401是文件修改日期。
3、文件内容如:
引用
AAA公司|上传数据|A经理
0012|560|jack|2006
1323|7787|rose|2008
abcd|yes|35|88
0012|560|jack|2006
1323|7787|rose|2008
abcd|yes|35|88
重新命名文件之后,需要对每个文件的内容进行修改,修改要求如下:
以|为分隔符分割字段,删除文件的第一行,将剩下内容每一行|之前的字符删除(包括|符号),然后将|替换成||,最后判断剩下的内容,如果剩下文件内容的第一行不是以13开头,删除!
初步代码如下,还不完善,有不妥的地方希望大家批评指正。
#!/bin/bash
#
for path in /FTP/*/DOWNLOAD ; do
cd $path
compay=`pwd | awk -F/ '{print $(NF-1)}'`
ls -l $1 | grep ^[^d] | awk '{print $9}' | sed -e '/^$/d' | while read name;do
if [ ! `echo $name | awk '/^CCO/'` ]; then
modifytime=`ls -l $name --time-style +%Y%m%d | awk '{print $6}'`
newname=CCO_"$compay"_SZ"$modifytime"01_SZ_V04."$name".txt
echo "rename $path/$name to $path/$newname ..."
mv $path/$name $path/$newname
echo "modify the content of $newname"
sed -i '1d; s/[^|]*|//; s/|/||/g' $newname
sed -i '1{/^13/!d}' $newname
fi
done
done
#
for path in /FTP/*/DOWNLOAD ; do
cd $path
compay=`pwd | awk -F/ '{print $(NF-1)}'`
ls -l $1 | grep ^[^d] | awk '{print $9}' | sed -e '/^$/d' | while read name;do
if [ ! `echo $name | awk '/^CCO/'` ]; then
modifytime=`ls -l $name --time-style +%Y%m%d | awk '{print $6}'`
newname=CCO_"$compay"_SZ"$modifytime"01_SZ_V04."$name".txt
echo "rename $path/$name to $path/$newname ..."
mv $path/$name $path/$newname
echo "modify the content of $newname"
sed -i '1d; s/[^|]*|//; s/|/||/g' $newname
sed -i '1{/^13/!d}' $newname
fi
done
done
10
Jul
美好的時光總是在人的不經意是暗處悄悄流逝
宛若流水向東,過去了,便再也追不回來
你看到的時光,在你眼前,卻不知道,而昨日的時光,
究竟從我們的指縫間流去了哪裏呢?
他是時光的孩子,憧憬著,可以不用長大,
可以生活在好看的漫畫、甜的巧克力、還有永遠喝不完的可樂裏
真誠的朋友可以永遠在一起不用分開,而心中摯愛的王子,會一直注視自己
爲什麽,只是這樣簡單的願望,卻仍是不可以?
朋友們逐漸長大,
脆弱的愛情,仿佛是融入泥土中逃逸的雨滴。
從此,漫畫變得不再好看,巧克力變得無味,
而床頭放置的超大瓶的可樂,漸漸地成爲了一首懷舊的歌。
不願長大的孩子,不知道在什麽時候,
變成了被遺忘在孤獨城堡裏的睡美人。
每一次在塵世的蘇醒,
她堅信只是一次短暫的旅行;
而在每一個快樂的夢境,
她卻聲稱那就是她的人生。
宛若流水向東,過去了,便再也追不回來
你看到的時光,在你眼前,卻不知道,而昨日的時光,
究竟從我們的指縫間流去了哪裏呢?
他是時光的孩子,憧憬著,可以不用長大,
可以生活在好看的漫畫、甜的巧克力、還有永遠喝不完的可樂裏
真誠的朋友可以永遠在一起不用分開,而心中摯愛的王子,會一直注視自己
爲什麽,只是這樣簡單的願望,卻仍是不可以?
朋友們逐漸長大,
脆弱的愛情,仿佛是融入泥土中逃逸的雨滴。
從此,漫畫變得不再好看,巧克力變得無味,
而床頭放置的超大瓶的可樂,漸漸地成爲了一首懷舊的歌。
不願長大的孩子,不知道在什麽時候,
變成了被遺忘在孤獨城堡裏的睡美人。
每一次在塵世的蘇醒,
她堅信只是一次短暫的旅行;
而在每一個快樂的夢境,
她卻聲稱那就是她的人生。




