存档在 ‘【技术】’ 分类

VI命令一览

2011年1月29日

进入vi的命令

vi filename :打开或新建文件,并将光标置于第一行首
vi +n filename :打开文件,并将光标置于第n行首
vi + filename :打开文件,并将光标置于最后一行首
vi +/pattern filename:打开文件,并将光标置于第一个与pattern匹配的串处
vi -r filename :在上次正用vi编辑时发生系统崩溃,恢复filename
vi filename….filename :打开多个文件,依次进行编辑

移动光标类命令

h :光标左移一个字符
l :光标右移一个字符
space:光标右移一个字符
Backspace:光标左移一个字符
k或Ctrl+p:光标上移一行
j或Ctrl+n :光标下移一行
Enter :光标下移一行
w或W :光标右移一个字至字首
b或B :光标左移一个字至字首
e或E :光标右移一个字至字尾
) :光标移至句尾
( :光标移至句首
}:光标移至段落开头
{:光标移至段落结尾
nG:光标移至第n行首
n+:光标下移n行
n-:光标上移n行
n$:光标移至第n行尾
H :光标移至屏幕顶行
M :光标移至屏幕中间行
L :光标移至屏幕最后行
0:(注意是数字零)光标移至当前行首
$:光标移至当前行尾

屏幕翻滚类命令

Ctrl+u:向文件首翻半屏
Ctrl+d:向文件尾翻半屏
Ctrl+f:向文件尾翻一屏
Ctrl+b;向文件首翻一屏
nz:将第n行滚至屏幕顶部,不指定n时将当前行滚至屏幕顶部。

插入文本类命令

i :在光标前
I :在当前行首
a:光标后
A:在当前行尾
o:在当前行之下新开一行
O:在当前行之上新开一行
r:替换当前字符
R:替换当前字符及其后的字符,直至按ESC键
s:从当前光标位置处开始,以输入的文本替代指定数目的字符
S:删除指定数目的行,并以所输入文本代替之
ncw或nCW:修改指定数目的字
nCC:修改指定数目的行

删除命令

ndw或ndW:删除光标处开始及其后的n-1个字
do:删至行首
d$:删至行尾
ndd:删除当前行及其后n-1行
x或X:删除一个字符,x删除光标后的,而X删除光标前的
Ctrl+u:删除输入方式下所输入的文本

搜索及替换命令

/pattern:从光标开始处向文件尾搜索pattern
?pattern:从光标开始处向文件首搜索pattern
n:在同一方向重复上一次搜索命令
N:在反方向上重复上一次搜索命令
:s/p1/p2/g:将当前行中所有p1均用p2替代
:n1,n2s/p1/p2/g:将第n1至n2行中所有p1均用p2替代
:g/p1/s//p2/g:将文件中所有p1均用p2替换

选项设置

all:列出所有选项设置情况
term:设置终端类型
ignorance:在搜索中忽略大小写
list:显示制表位(Ctrl+I)和行尾标志($)
number:显示行号
report:显示由面向行的命令修改过的数目
terse:显示简短的警告信息
warn:在转到别的文件时若没保存当前文件则显示NO write信息
nomagic:允许在搜索模式中,使用前面不带“\”的特殊字符
nowrapscan:禁止vi在搜索到达文件两端时,又从另一端开始
mesg:允许vi显示其他用户用write写到自己终端上的信息

最后行方式命令

:n1,n2 co n3:将n1行到n2行之间的内容拷贝到第n3行下
:n1,n2 m n3:将n1行到n2行之间的内容移至到第n3行下
:n1,n2 d :将n1行到n2行之间的内容删除
:w :保存当前文件
:e filename:打开文件filename进行编辑
:x:保存当前文件并退出
:q:退出vi
:q!:不保存文件并退出vi
:!command:执行shell命令command
:n1,n2 w!command:将文件中n1行至n2行的内容作为command的输入并执行之,若不指定n1,n2,则表示将整个文件内容作为command的输入
:r!command:将命令command的输出结果放到当前行

寄存器操作

“?nyy:将当前行及其下n行的内容保存到寄存器?中,其中?为一个字母,n为一个数字
“?nyw:将当前行及其下n个字保存到寄存器?中,其中?为一个字母,n为一个数字
“?nyl:将当前行及其下n个字符保存到寄存器?中,其中?为一个字母,n为一个数字
“?p:取出寄存器?中的内容并将其放到光标位置处。这里?可以是一个字母,也可以是一个数字
ndd:将当前行及其下共n行文本删除,并将所删内容放到1号删除寄存器中。

VI的使用

VI命令可以说是Unix/Linux世界里最常用的编辑文件的命令了,但是因为它的命令集众多,很多人都不习惯使用它,其实您只需要掌握基本命令,然后加以灵活运用,就会发现它的优势,并会逐渐喜欢使用这种方法。本文旨在介绍VI的一些最常用命令和高级应用技巧。

一、基本命令介绍

1.光标命令

k、j、h、l——上、下、左、右光标移动命令。虽然您可以在Linux中使用键盘右边的4个光标键,但是记住这4个命令还是非常有用的。这4个键正是右手在键盘上放置的基本位置。
nG——跳转命令。n为行数,该命令立即使光标跳到指定行。
Ctrl+G——光标所在位置的行数和列数报告。
w、b——使光标向前或向后跳过一个单词。

2.编辑命令

i、a、r——在光标的前、后以及所在处插入字符命令(i=insert、a=append、r=replace)。
cw、dw——改变(置换)/删除光标所在处的单词的命令 (c=change、d=delete)。
x、d$、dd——删除一个字符、删除光标所在处到行尾的所有字符以及删除整行的命令。

3.查找命令

/string、?string——从光标所在处向后或向前查找相应的字符串的命令。

4.拷贝复制命令

yy、p——拷贝一行到剪贴板或取出剪贴板中内容的命令。

二、常见问题及应用技巧

1.在一个新文件中读/etc/passwd中的内容,取出用户名部分。

vi file
:r /etc/passwd 在打开的文件file中光标所在处读入/etc/passwd
:%s/:.*//g 删除/etc/passwd中用户名后面的从冒号开始直到行尾的所有部分。
您也可以在指定的行号后读入文件内容,例如使用命令“:3r /etc/passwd”从新文件的第3行开始读入 /etc/passwd的所有内容。
我们还可以使用以下方法删掉文件中所有的空行及以#开始的注释行。
#cat squid.conf.default | grep -v ^$ | grep -v ^#

2.在打开一个文件编辑后才知道登录的用户对该文件没有写的权限,不能存盘,需要将所做修改存入临时文件。

vi file
:w /tmp/1 保存所做的所有修改,也可以将其中的某一部分修改保存到临时文件,例如仅仅把第20~59行之间的内容存盘成文件/tmp/1,我们可以键入如下命令。
vi file
:20,59w /tmp/1

3.用VI编辑一个文件,但需要删除大段的内容。

首先利用编辑命令“vi file”打开文件,然后将光标移到需要删除的行处按Ctrl+G显示行号,再到结尾处再按Ctrl+G,显示文件结尾的行号。
:23,1045d 假定2次得到的行号为23和1045,则把这期间的内容全删除,也可以在要删除的开始行和结束行中用ma、mb命令标记,然后利用“:a,bd”命令删除。

4.在整个文件的各行或某几行的行首或行尾加一些字符串。

vi file
:3,$s/^/some string / 在文件的第一行至最后一行的行首插入“some string”。
:%s/$/some string/g 在整个文件每一行的行尾添加“some string”。
:%s/string1/string2/g 在整个文件中替换“string1”成“string2”。
:3,7s/string1/string2/ 仅替换文件中的第3行到第7行中的“string1”成“string2”。
注意: 其中s为substitute,%表示所有行,g表示global。

5.同时编辑2个文件,拷贝一个文件中的文本并粘贴到另一个文件中。

vi file1 file2
yy 在文件1的光标处拷贝所在行
:n 切换到文件2 (n=next)
p 在文件2的光标所在处粘贴所拷贝的行
:n 切换回文件1

6.替换文件中的路径。

使用命令“:%s#/usr/bin#/bin#g”可以把文件中所有路径/usr/bin换成/bin。也可以使用命令“:%s//usr/bin//bin/g”实现,其中“”是转义字符,表明其后的“/”字符是具有实际意义的字符,不是分隔符。

怎样在Linux下批量查找/替换文本内容

2011年1月26日

在图形界面上有许多工具软件可以做到批量查找/替换文本内容。比如sublime text、replace pioneer。

但是怎样在无图形界面的CentOS服务器上通过命令行操作呢?

需求1. 批量查找某个目录下的包含指定内容的文件

grep -rn "找查找的文本" ./

例如:

grep -rn "amon" /var/amon.org

在当前目录下的.c文件中查找字符串password

grep "password" *.c

需求2. 批量查找并替换文件内容

sed -i "s/要找查找的文本/替换后的文本/g" `grep -rl "要找查找的文本" ./`

例如:

sed -i "s/邮 箱/邮箱/g" `grep -rl "邮 箱" ./`

需求3. 查找包含指定文本的指定类型的文件

find . -type f -name "*"|xargs grep 'yourstring'

需求4. 查找并替换文件内容

find -name '要查找的文件名' | xargs perl -pi -e 's|被替换的字符串|替换后的字符串|g'

在当前目录及其多个子目录中查找文件test.c

find . -name “test.c” -print

比如以下例子就是将当前目录及所有子目录下的所有*文件中的“tom”替换为“jerry”.

find . -type f -name "*"|xargs perl -pi -e 's|tom|jerry|g'

这里用到了Perl语言:

perl -pi -e

在Perl 命令中加上-e 选项,后跟一行代码,那它就会像运行一个普通的Perl 脚本那样运行该代码。

从命令行中使用Perl 能够帮助实现一些强大的、实时的转换。认真研究正则表达式,并正确地使用,将会为您省去大量的手工编辑工作。

案例5. 批量修改文件夹权限

find . -type -d -name *|xargs chmod 755

案例6. 批量修改文件权限

find . -type -f -name *|xargs chmod 644

在当前目录及其多个子目录中查找.vbs文件并删除之
find . -name “*.vbs” -exec rm {} \;

在当前目录及其多个子目录下的.c文件中查找字符串”password”
find . -name “*.c” -print | xargs grep “password”

在当前目录下的.c文件中把字符串”password”替换成”pwd”
perl -pi -e ‘s/password/pwd/g’ *.c

在当前目录下的.c文件中把字符串”password”替换成”pwd”并以.bak扩展名备份
perl -pi.bak -e ‘s/password/pwd/g’ *.c

在当前目录及子目录下的.c文件中替换字符串”password”为”pwd”
find . -name “*.c” -print | xargs perl -pi -e ‘s/password/pwd/g’

参考:http://www.cnblogs.com/ikodota/p/3797645
参考:http://blog.csdn.net/fafa211/archive/2010/10/14/5940844.aspx

怎样设置301重定向

2011年1月5日

在老门的《2010年Alexa排名百强中文网站域名分析报告》中统计了其中未解析根域名的域名:cncmax.cn(联通)、icbc.com.cn(工商银行)、cmbchina.com(招商银行)三个。

“这么大的三家公司,竟然不解析根域名,尤其是身为宽带提供商的联通。 除了这三家,老门还发现排名125位的weather.com.cn(中国天气网)也没解析根域名,太不给力了。老门一直在想他们为什么不解析,不需要解析?可像老门这样的懒人经常不愿意多输入3个w。为安全考虑?做个域名重定向,没有任何安全问题啊。”

OK,即便把www.amon.org和amon.org都分别解析到网站,但这样做会分散搜索引擎对网站的权重。但301重定向能完美解决。

把下面的代码放到.htaccess文件,在最后一行加入吧:

Options +FollowSymlinks
RewriteEngine on
rewritecond %{http_host} ^amon.org [nc]
rewriterule ^(.*)$ http://www.amon.org/$1 [r=301,nc]

参考资料:

当启用新域名需要导入原网站所有内页的流量,或者利用闲置域名的流量,同时兼顾SEO问题的话,设置域名301转向,是一个较好的解决方法。

301转向是什么呢?301转向(或叫301重定向,301跳转))当用户或搜索引擎向网站服务器发出浏览请求时,服务器返回的HTTP数据流中头信息(header)中的状态码的一种,表示本网页永久性转移到另一个地址。其它常见的状态码还包括,200表示一切正常,404网页找不到,302暂时转向,等等。

网址转向方法主要包括:301转向,302转向,JavaScript转向,PHP/ASP/CGI转向,META REFRESH网页META刷新等。302转向可能会有URL规范化问题。其它方法都是常用的作弊手法,当然不是说不可以正当地用,方法本身没有错,但 被作弊者用多了,搜索引擎对这些可疑的转向都很敏感。何必冒险呢。
» 阅读更多: 怎样设置301重定向

PayPal注册及注意事项

2010年9月5日

PayPal(中国大陆品牌贝宝)是一个总部在美国加利福尼亚州圣荷西市的因特网服务商,允许在使用电子邮件来标识身份的用户之间转移资金,避免了传统的邮寄支票或者汇款的方法。

PayPal资费

参考:https://www.paypal.com/us/webapps/mpp/paypal-fees
中文:https://www.paypal.com/c2/webapps/mpp/paypal-fees

【付款】

购物或付款通常无需手续费

【销售】

每笔销售的手续费为4.4% + 0.30美元或更低
销量越高,您要支付的费率就越低。我们的费率简单透明,绝无任何隐性费用。您可以接受全球1.69亿用户的所有主流银行卡付款。成功售出商品或服务并收到付款后,您才需支付手续费。
接收数字商品付款时,您需要按标准费率付手续费或支付小额付款费用,以较低的费用为准。

在网站上销售,通过账单或电子邮件收款* 4.4% + 0.30美元或以收款币种计算的近似固定费用
在eBay上销售* 3.9% + 0.30美元或以收款币种计算的近似固定费用
数字商品小额付款* 6.0% + 0.05美元或以收款币种计算的近似固定费用
优惠商家费率 如果您的月度销售额符合条件并保持良好的账户记录,则可以申请优惠商家费率。

【提现】

当您从PayPal账户提现时,我们可能会从您提现的金额中扣除一笔手续费。您可以提现到中国或香港的银行账户或选择其他提现选项。

快捷人民币提现 人民币 提现金额的1.2%
电汇至中国的银行账户 美元 每笔35美元
提现至香港的银行账户 港币 提现1,000港币及以上,免费
提现1,000港币以下,每笔3.50港币
提现至美国的银行账户 美元 免费
通过支票提现 美元 每笔5美元

怎样检测shell漏洞

2010年9月4日

Web Shell Detector – is a php script that helps you find and identify php/cgi(perl)/asp/aspx shells. Web Shell Detector has a “web shells” signature database that helps to identify “web shell” up to 99%. By using the latest javascript and css technologies, web shell detector has a light weight and friendly interface.

https://github.com/emposha/PHP-Shell-Detector

Demo: http://www.emposha.com/demo/shelldetect/

Console version (python): https://github.com/emposha/Shell-Detector