‘Linux’ 分类的存档

Linux操作系统 服务器首选 目前正在学习中

没有评论Linode && SAE 开发者 站长 geek必备[1]

2011年11月4日

其实之前一直没怎么研究这些东西,但是GFW太强大了啊 搞得也没办法

不过在这个个人开发者的时代,很多东西还是有必要的,所以今天给大家推荐两个近期折腾比较多的东西~

Linode

先介绍一下vps是什么?

VPS = Virtual Private Server,虚拟专用服务器。VPS提供商把一台物理主机划分为多台虚拟服务器,每一台都有独立的内存,CPU,硬盘等,使用上和完整的一台服务器没有什么差别。

有什么用?为什么我需要?

  • GFW?VPS是一台你完全独享的主机,利用它你可以翻越GFW。常见的方式有ssh和VPN,通常也需要独立购买 并且不便宜,使用VPS你可以完全自己搭建。每台VPS都有独立的ip 及相对独享的带宽和流量。
  • DIY?如果你是一名开发者,如果你热爱编程或者喜欢互联网事物,你可以使用VPS经营自己的独立博客,搭建自己的应用,搭建自己的代码仓库,代理自己的网站等等,比如你在用GAE就可以通过nginx进行反响代理让国内用户可以顺畅访问
  • 价格!Linode的VPS有多种配置,最便宜一款$19.95。年付打9折。所有VPS配置列表可以在Linode首页找到。单纯从价格来看也许你会觉得小贵,但作为开发者、站长、geek的你能够通过每月19.95美元解决你的大部分问题,我相信也很值得了

linode的优势?

  • 机房选择余地大。一共6个机房(包括最新的tokyo机房),都在国外。目前我选择在东京的机房离国内近一些。
  • 速度。Linode官方专门建立了一个速度测试页面。每个机房都提供相同的100MB大小的测试文件以供下载。用浏览器测试,对于国内用户来说是日本的Tokyo机房最快。你可以在Linode Facilities Speedtest页面自己尝试一下。
  • 服务。Linode的服务支持向来口碑非常好,遇到问题提一个ticket,一般在数十分钟内就可以回复解决。

如果你觉得本文对你有帮助,心动了 可以使用我的推荐码购买
http://www.linode.com/?r=cc06b1729093a6ad51ac9f6601c5f42fe875581b

cc06b1729093a6ad51ac9f6601c5f42fe875581b

ok~如果你有相关lindoe的使用经验和问题可以和我一起讨论分享~

Linode && SAE 开发者 站长 geek必备[2]-SAE

3 条评论[原创]用Vmware Server搭建多虚拟环境 便于浏览器兼容性测试

2011年7月23日

目前正在梳理整个前端开发的流程及环境,也看了d2大家分享的关于前端各种自动化的演讲,便开始动手了
第一项是希望解决大家兼容性测试的问题,之前已经用虚拟机替换掉了ietester
但本地的虚拟机还是会出现团队成员不一致的情况,并且占用本地资源比较严重
在 美团 潘魏增 老兄帮助下,了解到美团目前在用的vmserver是很好的解决方案,再次感谢

同时参考了很多大家分享的东西,把自己遇到的问题也放出来和大家分享

下一步打算做一些前端自动化方面的脚本,希望和大家多学习,共进步

vmserver是vmware旗下的一款虚拟机服务器,可以通过web管理和操作虚拟机,同时支持多平台 windows、linux、macos等,免费的 可以在官网申请到授权码

这次我们选择的是linux版的vmware server

服务器环境:centos 5.5

vmserver版本:VMware-server-2.0.2-203138.i386

安装过程不详细叙述了 参考下面这篇文章即可,我也复制到最后给大家参考了

http://wuyizhaizhu.blog.163.com/blog/static/115151869201052201339515/

安装后通过web可以访问,进入管理端,在里面安装虚拟机即可



我就讲讲我们在搭建过程中遇到的问题吧

1.安装遇到提示

You cannot install VMware Server on a system running a xen kernel

解决方法:
http://zackofalltrades.com/2008/09/changing-to-a-non-xen-kernel-in-centos-5-so-you-can-run-vmware-server/

To do this, you first need to install the kernel. yum makes this easy:

yum install kernel

Then remove xen and the kernel-xen packages:

yum remove xen kernel-xen

Then you have to specify which kernel you want to run in /boot/grub/grub.conf. In that file there’s a list of kernels available to boot from:

#boot=/dev/sda

default=1

timeout=5

splashimage=(hd0,0)/boot/grub/splash.xpm.gz

hiddenmenu

title CentOS (2.6.18-92.1.10.el5)

root (hd0,0)

kernel /boot/vmlinuz-2.6.18-92.1.10.el5 ro root=LABEL=/1 rhgb quiet

initrd /boot/initrd-2.6.18-92.1.10.el5.img

title CentOS (2.6.18-92.1.10.el5xen)

root (hd0,0)

kernel /boot/xen.gz-2.6.18-92.1.10.el5

module /boot/vmlinuz-2.6.18-92.1.10.el5xen ro root=LABEL=/1 rhgb quiet

module /boot/initrd-2.6.18-92.1.10.el5xen.img

The line that says default= specifies which kernel to load, where 0 is the first one listed in the file. In my case, I had to change the line that says default=1 to default=0 to specify the non-xen kernel.

Reboot, and you’re good to go – the VMware RPM will install, and VMware server runs just fine.

2.安装好虚拟机后 通过NAT模式链接网络,web管理没有问题,如果想使用远程桌面登陆会发现没有网内ip,只有vm自带的虚拟ip

解决方案:通过iptables转发服务器某端口到虚拟机的端口 使我们可以访问虚拟机上面的某些服务,比如远程桌面

启用ipv4端口转发功能 /etc/sysctl.conf 文件修改net.ipv4.ip_forward =1 即可

然后通过iptables配置,vm的NAT机制其实是通过虚拟网卡来实现虚拟机的网络共享的,所以你的服务器上面会有一块vm虚拟网卡,可以通过ifconfig看到

我的是:

vmnet8    Link encap:Ethernet  HWaddr 00:50:56:C0:00:08

inet addr:172.16.20.1  Bcast:172.16.20.255  Mask:255.255.255.0

进入虚拟机也可以看到虚拟机的ip也是这个网段的

下面我们来把服务器的某个端口 转发到虚拟机即可 iptables配置如下

192.168.0.90是服务器ip dport 12346 是服务器端的端口

172.16.20.130是虚拟机的ip ,3389是虚拟机的远程终端端口

重启iptables,通过远程桌面链接服务器ip:12346端口 成功了!

-A PREROUTING -d 192.168.0.90 -p tcp -m tcp –dport 12346 -j DNAT –to-destination 172.16.20.130:3389

-A POSTROUTING -d 172.16.20.128 -p tcp -m tcp –dport 3389 -j SNAT –to-source 172.16.20.1

3.因为多人来使用虚拟机,xp默认仅支持一个用户链接,所以需要hack一下远程服务 目前采用较多的是替换dll的方法 百度一下即可找到很多,这里不再叙述了

4.我们还需要测试win7 发现在vmware server选择安装版本的时候没有win7的选项,这时可以通过选择Microsoft Windows Vista 安装即可

附:mac osx远程桌面下载 ,大家可以通过mac直接链接到虚拟机了
http://www.microsoft.com/china/office/mac/downloads?pid=Mactopia_RDC&fid=68346E0D-44D3-4065-99BB-B664B27EE1F0#viewer

至此,基本的环境搭建完毕了 放几张截图吧

成功通过远程桌面链接到虚拟机环境

由于vmserver web Console 只支持windows 我在mac下开了个本地虚拟机截了一张Console操作的图

转载请注明:http://www.iamued.com/qianduan/1951.html
参考:vmwareserver for centos 安装方法:

Install

1. 在 VMware 中注册并下载 VMware Server 的 rpm 安装包
注册的时候要注意一点,即问你准备在windows下和linux下各安装多少个copy,当然要填多点了 :)

2. 使用 root 用户登录要安装的主机

3. 安装 rpm

rpm -ivh VMware-server-2.0.1-156745.i386.rpm

4、进行配置

4.1运行

/usr/bin/vmware-config.pl

开始配置界面,下面,我们尽量详细的讲解一下配置过程

4.2

Do you want networking for your virtual machines? (yes/no/help) [yes]

是否需要配置网络,一般应该使用,所以使用缺省值。

4.3

Configuring a bridged network for vmnet0.

Please specify a name for this network.

[Bridged]vm-bridged

首先配置使用桥接的网络,如果你希望你的虚拟机直接暴露于外网(并不特指internet,通常是指暴露在宿主机所在的子网内),可通过桥接的方法,需要指定该网络的名称,例如 vm-bridged ,该名称将在创建和配置虚拟机时使用,请输入一个方便记忆的名称。

4.4

Your computer has multiple ethernet network interfaces available: eth0, eth1.

Which one do you want to bridge to vmnet0? [eth0]

选择在哪块网卡上配置桥接网络,一般应该选择你能够上网的网卡,当然,如果你比较熟悉网络,也可进行其它的配置。

4.5

Do you wish to configure another bridged network? (yes/no) [no]

是否需要在其它网卡上配置桥接网络,根据你的实际需要,一般是不需要的。

4.6

Do you want to be able to use NAT networking in your virtual machines? (yes/no) [yes]

是否需要通过NAT配置网络,如果你希望你的虚拟机暴露在外网(并不特指internet,通常是指暴露在宿主机所在的子网内),NAT是常用的一种虚拟机网络配置方法(类似你通过一台路由器上网),通过其往往能够得到更高的网速,通过在宿主机的iptables中进行配置,可以很容易让类似 BT,EMule等软件获得更高的下载速度,所以我们选择 yes。

4.7

Configuring a NAT network for vmnet8.

Please specify a name for this network. [NAT]vm-nat

配置使用NAT的网络名称,例如 vm-nat ,该名称将在创建和配置虚拟机时使用,请输入一个方便记忆的名称。

4.8

Do you want this program to probe for an unused private subnet? (yes/no/help) [yes]

是否自动配置NAT使用的子网,一般选择自动配置了,除非你希望对子网进行规划,通常会自动配置 172.16.*.* 这样的子网。

4.9

Do you wish to configure another NAT network? (yes/no) [no]

是否需要配置另外一个NAT网络,通常不需要。

4.10

Do you want to be able to use host-only networking in your virtual machines? [yes]

是否希望虚拟机支持 host-only 的网络,如果你不希望将虚拟机暴露于外网(并不特指internet,通常是指暴露在宿主机所在的子网内),应该在创建虚拟机时选择这种网络。

4.11

Configuring a host-only network for vmnet1.

Please specify a name for this network. [HostOnly] vm-hostonly

配置使用NAT的网络名称,例如 vm-hostonly ,该名称将在创建和配置虚拟机时使用,请输入一个方便记忆的名称。

4.12

Do you want this program to probe for an unused private subnet? (yes/no/help) [yes]

是否自动配置HostOnly使用的子网,一般选择自动配置了,除非你希望对子网进行规划,通常会自动配置 172.16.*.* 这样的子网。

4.13

Do you wish to configure another host-only network? (yes/no) [no]

是否需要配置另外一个HostOnly网络,通常不需要。

4.14

Please specify a port for remote connections to use [902]

指定远程连接端口,VMware Server安装完成后,可通过其一套Web界面进行访问,在这套界面中,有一个 Console(控制台)的功能,该功能通过在浏览器中安装一个插件,可以实现通过浏览器查看和管理被安装的虚拟机(如果你用过rdesktop、symantec pc-anywhere或KVM,你应该明白我在说什么),这个插件需要通过服务器上的这个端口获得数据(所以,如果你的宿主机前有防火墙,需要开通此端口的TCP协议),一般我们就用缺省的端口就好了,除非你的端口已经被占用,BTW,查看端口被谁打开的方法是:

lsof -i :902

如果出现结果,则可以通过进程号获得什么进程打开了此端口。

4.15

Please specify a port for standard http connections to use [8222]

同上,web访问界面使用的http端口,安装完成后,你可以通过 http://www.xxx.com:8222 来访问 VMware Server的Web管理界面,需要在防火墙内打开此端口的TCP协议。

4.16

Please specify a port for secure http (https) connections to use [8333]

同上,web访问界面使用的https端口,安装完成后,你可以通过 https://www.xxx.com:8333/ui 来访问 VMware Server的Web管理界面,需要在防火墙内打开此端口的TCP协议。

4.17

The current administrative user for VMware Server  is ”.  Would you like to specify a different administrator? [no]yes

这里我们一般不能用缺省选项,应该选择 yes ,这个配置的意思是说当前 VMware Server 的管理员尚未指定(”的意思可不就是没指定嘛,当然,也可能有别的含义,不过我们不是测试人员,没有必要都搞明白),是否需要指定–当然要指定了。

4.18

Please specify the user whom you wish to be the VMware Server administrator

选择宿主机上的一个已有的用户作为其管理员,这里的用户是指linux系统的用户,当然应该有密码了,一般为了安全起见,应该创建一个单独的用户,例如 vmware 什么的,并指定其密码,不过可能不需要有 home 目录,也最好不给它 shell。

4.19

In which directory do you want to keep your virtual machine files?

[/var/lib/vmware/Virtual Machines]

指定虚拟机存放的目录,即其 DataStore 的概念,这里可能会占用较多的空间(看你装多少操作系统,系统中有多少内容了),所以最好放置在有足够空间的位置,一般我们的 var 或 home 通常会是空间比较大的地方,所以,看你自己的情况了。

4.20

The path “/home/vmware/Virtual Machines” does not exist currently. This program

is going to create it, including needed parent directories. Is this what you

want? [yes]

如果你指定了一个不存在的目录,会提示你是否要自动创建,当然要创建了。

4.21

Please enter your 20-character serial number.

Type XXXXX-XXXXX-XXXXX-XXXXX or ‘Enter’ to cancel:

毕竟,只是一个free的软件,序列号还是需要的,在 VMware注册的时候会在激活邮件中获取到,你应该将其妥善保存好。

4.22

In which directory do you want to install the VMware VIX API binary files?

[/usr/bin]

选择 VMware VIX API binary files 的安装位置,VMware VIX API 是很有用的东东,特别是在你的虚拟机比较多,需要自己写脚本进行管理的情况下,你可以在脚本中通过调用VMware VIX API,完成虚拟机的启动、关闭、备份等日常工作,以后我们会对此进行专门的说明,请参看 VMware VIX API。

4.23

In which directory do you want to install the VMware VIX API library files?

[/usr/lib/vmware-vix/lib]

选择 VMware VIX API library files 的安装位置。

4.24

The path “/usr/lib/vmware-vix/lib” does not exist currently. This program is

going to create it, including needed parent directories. Is this what you want?

[yes]

是否自动创建 VMware VIX API library files 的安装目录,当然了。

4.25

In which directory do you want to install the VMware VIX API document pages?

[/usr/share/doc/vmware-vix]

指定VMware VIX API 的文档的安装位置。

4.26

The path “/usr/share/doc/vmware-vix” does not exist currently. This program is

going to create it, including needed parent directories. Is this what you want?

[yes]

是否自动创建 VMware VIX API 文档的安装目录,当然了。

4.27

The installation of VMware VIX API 1.6.2 build-156745 for Linux completed

successfully. You can decide to remove this software from your system at any

time by invoking the following command: “/usr/bin/vmware-uninstall-vix.pl”.

告诉你 VMware VIX API 已安装完成,可以在以后通过 /usr/bin/vmware-uninstall-vix.pl 进行卸载,如果你以后不想再使用 VMware Server(你可能有了更好的选择,例如开源的 KVM),你可以先使用 /usr/bin/vmware-uninstall-vix.pl 卸载 VIX API,然后使用rpm卸载VMware Server。

4.28

基本的配置过程就是以上这些,在配置完成后,系统会尝试自动启动虚拟机,并会在系统重启时自动启动 VMware Server。

5. 使用 VMware Server

作为安装和配置之后,下面我们来介绍一下如何使用 VMware Server。

5.1 配置防火墙

首先,如果你的宿主机上安装有防火墙,并且希望通过其它机器上的浏览器访问宿主机上的管理界面,需要在宿主机上的防火墙上进行设置,假设你使用 iptables,你可以

vi /etc/sysconfig/iptables

在其中适当的位置加入

-A RH-Firewall-1-INPUT -m state –state NEW -m multiport -p tcp –dport 902,8222,8333 -j ACCEPT

然后重启服务

service iptables restart

5.2 在浏览器中访问 VMware Server

在浏览器中输入 http://www.xxx.com:8222 ,其中 www.xxx.com 是你的宿主机的地址,如果你在本机访问,可以使用localhost ,此时,页面会自动跳转至 https://www.xxx.com:8333/ui ,并报出提示

www.xxx.com:8333 使用了无效的安全证书。

这是由于使用了非正式发布的证书,可以让浏览器接收该证书,当然,如果你愿意,也可以加入正式的证书,请参考 在VMware Server 中使用证书。需要注意的是,有时候会无法打开loading页面,例如在 firefox 的错误控制台内可以看到类似这样的错误

Error: vmtn is not defined

Source File: https://vm.myserver.com:8333/ui/

Line: 130

Error: unterminated string literal

Source File: https://vm.myserver.com:8333/ui/jslib-1.0.128374/.jslib.js

Line: 1, Column: 120

Source Code:

d(),TIMEOUT:vmtn.util.EventObject.nextId()});var $super=$class.parent.prototype;})(); (function(){var $class=new $Class(“vmtn.

Error: syntax error

Source File: https://vm.myserver.com:8333/ui/jslib-1.0.128374/.wbc.js

Line: 1, Column: 77

Source Code:

is._config.getFinalData();},setSelection:function(selection){var oldSelection=

Error: vmtn is not defined

Source File: https://vm.myserver.com.ch:8333/ui/

Line: 122

这时,我们清空浏览器的缓存,再重新访问,一般就可以解决问题了(如果你有更好的办法,请mail我:wanxiren@gmail.com )。

5.3 创建虚拟机
按照提示一步一步创建就可以了,需要注意的是,最好在创建时选择的CPU多一些,内存也大一些,将来在真正使用时可以从大改小,但不能从小改大。对于虚拟机来说,配置稍微多一些的内存是必要的,这可以尽量避免换页操作,从而减少IO操作,以提升虚拟机性能。

5.4 安装操作系统
将虚拟机关机,然后创建CD/DVD drive,选择你要安装的操作系统镜像文件(iso文件),然后开机,即可进行操作系统的安装工作。

5.5 复制虚拟机
如果我们已经安装好了一个虚拟机,为了方便下次安装,可将其复制出来,对虚拟机关机,然后到虚拟机的数据目录下找到刚才装好的操作系统,将整个目录进行备份即可。下次安装时,将该目录复制到虚拟机的数据目录下,改名成你希望的名字,然后在web管理界面中创建虚拟机(创建时直接选择刚才复制过来的目录)并开机,在开机时,有一个重要的提示,就是问你这个虚拟机是“移动过来的”还是“复制过来的”,一般应该选择是“复制过来的”(这样会对其重新进行配置),然后就可以使用了。

5.6 使用Console
在虚拟机开机后,点击 Console 标签,第一次点击时会提示是否需要“Install plug-in”,这个插件就是在浏览器中操作虚拟机的界面,安装之,重启浏览器,就可以访问虚拟机了。

1 条评论用Rsync来备份你的重要文件 for MacOs

2011年7月8日

昨天开始整理自己的硬盘…没有归类的习惯,整理的时候才发现好郁闷啊

今天开始研究一下备份机制,之前在用Time Machine(时间机器)来全盘备份整个系统,确实不错,不过随着系统的增大,移动硬盘不够用了,开始考虑只备份重要文件的想法

Rsync介绍

来自百度百科

rsync是类unix系统下的数据镜像备份工具,从软件的命名上就可以看出来了——remote sync。它的特性如下:

可以镜像保存整个目录树和文件系统。

可以很容易做到保持原来文件的权限、时间、软硬链接等等。

无须特殊权限即可安装。

优化的流程,文件传输效率高。

可以使用rcp、ssh等方式来传输文件,当然也可以通过直接的socket连接。

支持匿名传输,以方便进行网站镜象。

软件下载

rsync的主页地址为:http://rsync.samba.org/

目前最新版本为3.0.8。可以选择从原始网站下载:http://rsync.samba.org/ftp/rsync/。

Rsync for MacOs

macos默认是装了Rsync的,可以在终端下用一下命令看到

Richies-MBP:~ richie$ rsync –version

可以看到我的macos默认的rsync版本是2.6.9

rsync在3.0以后的版本添加了一个转码功能,能够比较好的备份同步中文文件,所以我们需要先升级rsync

rsync的安装方法

下载最新版本rsync,然后用下面的命令来安装

tar xvzf rsync-3.0.7.tar.gz
cd rsync-3.0.7
./configure --prefix=/usr/local/rsync
make
make install

安装后就可以使用/usr/local/rsync/bin/rsync来使用了 你可以先测试一下版本

rsync的使用我只用了一种最简单的备份机制 命令如下

//将workfile文件备份到移动硬盘
//看到其中的iconv就是3.0新加的功能,保证你的中文文件能够备份成功
/usr/local/rsync/bin/rsync -aE --progress --iconv utf8,utf-8 "/Users/richie/workfile/" "/Volumes/MacBak/backup"

还可以搭配定时器来实现定时同步~

分类: Linux, Mac 标签: , , , ,

9 条评论[转]用Windows命令行实现自动SSH代理

2010年10月26日

SSH Proxy就是通过SSH监听一个本地端口做代理转发,从而实现代理上网的功能,Windows下比较有名的SSH Proxy客户端就是Tunnelier了,设置简单方便。但是想在系统启动是运行并自动监听就比较麻烦了,没有相关的设置,而且客户端软件本身启动也需要一定的时间,如果能在命令行在做端口监听相比来说就要快多了。在Linux下可以轻松实现这个脚本,在Windows下,其实也很简单。

Windows的DOS命令行很原始也很强大,虽然在Linux shell面前显得有些渺小,但在需要的时候也能彰显自己的威猛。

原理:

Linux下用SSH命令来进行远程登录和本地监听,而windows下也有plink来实现同样的功能。如果实现了ssh,基本功能也就八九不离十了。

关键代码:

plink.exe -C -N -D 127.0.0.1:8080 用户名@服务器IP -pw 密码 -P 端口 -v

可以通过以上代码实现到本地8080端口的监听。

断线重连:

在cmd命令行下,是过程执行程序的,如果代码段中调用一个程序一直在执行,则它下面的代码段不会继续。可以通过这个原理来实现。一旦断线,就重复执行该代码段即可。

:relink
plink.exe -C -N -D 127.0.0.1:8080 用户名@服务器IP -pw 密码 -P 端口 -v
goto :relink

至此就 可以写一个简单的命令行脚本来实现本地监听并重连了。

后台执行:

总是开一个CMD窗口是不是看着很碍眼?那就让它后台执行吧。通过RunHiddenConsole.exe(本站下载)来实现。用法很简单

RunHiddenConsole.exe autossh.cmd

通过以上命令就可以在后台执行autossh.cmd脚本。

可执行脚本文件:

既然所有的功能都实现了,那就再写一些脚本来方便操作吧,可以一键开启/关闭,可以做开机启动,这样Dropbox(注册直接加送500M链接)就可以开机启动直接启动了。

一些方便SSH Proxy管理的脚本

Tips:

- 将start.cmd做一个链接放到Windwos启动文件夹内,就可以开机自启了。
– 将man.cmd做个快捷方式到桌面,使用起来更方便。
– autossh.run为运行文件,为了保证正常重连请不要随意删除。

命令行管理:

脚本都写好了,当然还需要一个管理界面。

实现了一个简单的管理界面

下载:

打了个包提供给大家用下,有什么问题可以留言。(压缩包已经包含了plink和RunHiddenConsole,不需要再单独下载)

下载地址:http://zhg.me/files/2010/sshproxy.v1.0.zip

附:plink下载 RunHiddenConsole下载

* 下载后请先配置autossh.cmd并运行来调试,如果最后一行是 Local port 127.0.0.1:8580 SOCKS dynamic forwarding 就说明成功了。

进阶:

经 @YuanKevin 老大指点,可以将bat文件做成exe文件,防止密码泄露问题。另外也可以做成系统服务来运行,更为安全,方便。对于bat转exe网上有很多这方面的软件,大家可以自己去探索一下。转成服务的话相对复杂一些吧,有兴趣可以研究下。

后记:

至于配合Chrome+Switchy或者Firefox+Autoproxy就不再说明了,也很简单,注意代理方式要选sokcet。

转自:http://zhg.me/2010/10/windows-shell-ssh-proxy.htm

分类: Linux, 其他技术 标签: , ,

1 条评论linux Vi常用命令学习

2010年7月9日

Vi常用命令

一般模式 光标移动
h或 向左方向键 光标向左移动一个字符
j或 向下方向键 光标向下移动一个字符
k或 向上方向键 光标向上移动一个字符
l或 向右方向键 光标向右移动一个字符
Ctrl+f 屏幕向前翻一页(常用)
Ctrl+b 屏幕向后翻一页(常用)
Ctrl+d 屏幕向前翻半页
Ctrl+u 屏幕向前翻半页
+ 光标移动到非空格符的下一列
- 光标移动到非空格符的上一列

n<space>

按下数字后再按空格键,光标会向右移动这一行的n个字符。例如20<space>,则光标会向右移动20个字符
0 (是数字0)动到这一行的第一个字符处(常用)
$ 移动到这一行的最后一个字符处(常用)
H 光标移动到这个屏幕最上方的那一行
M 光标移动到这个屏幕中央的那一行
L 光标移动到这个屏幕最下方的那一行
G 光标移动到这个屏幕最后一行
nG 移动到这个文件的第n行。例如20G,则会移动到这个文件的第20行(可配合:set nu
n<Enter> 光标向下移动n行(常用)
一般模式 查找与替换
/word 在光标之后查找一个名为word的字符串(常用)
?word 在光标之前查找一个名为word的字符串
:n1,n2s/word1/word2/g 在第n1n2行之间查找word1这个字符串,并将该字符串替换为word2(常用)
:1,$s/ word1/word2/g 在第一行与最后一行之间查找word1这个字符串,并将该字符串替换为word2(常用)

:1,$s/ word1/word2/gc

在第一行与最后一行之间查找word1这个字符串,并将该字符串替换为word2,且在替换前显示提示符让用户确认(conform)(常用)
一般模式 删除、复制与粘贴
x,X x为向后删除一个字符,X为向前删除一个字符(常用)
nx 向后删除n个字符
dd 删除光标所在的那一整行(常用)
ndd 删除光标所在列的向下n列,例如,20dd则事删除20列(常用)
d1G 删除光标所在行到第一行的所有数据
dG 删除光标所在列到最后一行的所有数据
yy 复制光标所在行(常用)
nyy 复制光标所在列的向下n列,例如,20yy则是复制20列(常用)
y1G 复制光标所在列到第一列的所有数据
yG 复制光标所在列到最后一列的所有数据
p,P p为复制的数据粘贴在光标下一列,P则为粘贴在光标上一列(常用)
j 将光标所在列与下一列的数据结合成一列
u 恢复前一个动作(常用)
编辑模式
i,I 插入:在当前光标所在处插入输入的文字,已存在
a,A 添加:由当前光标所在处的下一个字符开始输入,已存在的字符会向后退(常用)
o,O 插入新的一行:从光标所在行的下一行行首开始输入字符(常用)
r,R 替换:r会替换光标所指的那一个字符;R会一直替换光标所指的文字,直到按下Esc为止(常用)
Esc 退出编辑模式,回到一般模式(常用)
命令行模式
:w 将编辑的数据写入硬盘文件中(常用)
:w! 若文件属性为只读,强制写入该文件
:q 退出vi(常用)
:q! 若曾修改过文件,又不想保存,使用为强制退出不保存文件
:wq 保存后退出,若为:wq!,则为强制保存后退出(常用)
:w[filename] 将编辑数据保存为另一个文件(类似另存新文档)
:r[filename] 在编辑的数据中,读入另一个文件的数据。即将filename这个文件内容加到光标所在行的后面
:set nu 显示行号,设定之后,会在每一行的前面显示该行的行号
:set nonu ser nu相反,为取消行号
n1,n2 w[filename] n1n2的内容保存为filename这个文件
分类: Linux 标签: ,