0/vi的使用:
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+<h>|<j>|<k>|<l> 光标向左|下|上|右移动n次(常用)
n<Enter> 光标向下移动n行
/word 在光标之后查找一个名为word的字符串(常用)
?word 在光标之前查找一个名为word的字符串
:n1,n2s/word1/word2/g 在第n1与n2行之间查找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 复制光标所在行到最后一行的所有数据
y+<h>|<j>|<k>|<l> 复制光标向左|下|上|右的文本(常用)
p,P p为复制的数据粘贴在光标下一列,P则为粘贴在光标列(常用)
J 将光标所在行与下一行的数据结合成一行
u 恢复前一个动作(常用)
i, I 插入:在当前光标所在处插入输入的文字,已存在的字符会向后退(常用)
a, A 添加:由当前光标所在处的下一个字符开始输入,已存在的字符会向后退(常用)
o, O 插入新的一行:从光标所在处的下一行行首开始输入字符(常用)
r, R 替换:r会替换光标所指的那一个字符;R会一直替换光标所指的文字,直到按下Esc为止(常用)
:w 将编辑的数据写入硬盘文件中(常用)
:w! 若文件属性为只读,强制写入该文件
:q 退出vi(常用)
:q! 若曾修改过文件,又不想保存,使用!为强制退出不保存文件
:wq 保存后退出,若为:wq!,则为强制保存后退出(常用)
:w [filename] 将编辑数据保存为另一个文件(类似另存新文档)
:r [filename] 在编辑的数据中,读入另一个文件的数据。亦即将 filename这个文件内容加到光标所在行的后面
:set nu 显示行号,设定之后,会在每一行的前面显示该行的行号
:set nonu 与set nu相反,为取消行号
n1,n2 w [filename] 将n1到n2的内容保存为filename这个文件。
MSDN肯定没有vim方便。举个例子:
若想查找socket()函数的man page,只需在vim中把光标至于socket()上面,然后按K(大写),vim就会自动跳转,看完man后按q再按回车又可以回到原处。你可以试试,这样手不用离开键盘,比VC中按F1,转换到MSDN,然后Alt-Tab切换回VC快多了。
/
1.交换两个字符位置
xp
2.上下两行调换
ddp
3.把文件内容反转
:g/^/m0/ (未通过)
6.从当前位置删除到行尾
d$
7.从当前位置复制到行尾
y$ 如果要粘贴到其他地方 p 就可以了
8.
:ab string strings
例如在命令行中输入":ab usa United States of America"后 ,
当你在文章中输入usa 时
United States of America 就蹦出来了
9.
:map keys new_seq
定义你当前 键盘命令
10.
:set [all]
vi or ex 的编辑状态
如 显示每行 :set nu
11.
在命令状态下,nyy表示拷贝从光标行起的下n行内容,p表示paste,可刚复制的内容粘贴在光标处的
下面。
12.
单个字符替换用r,覆盖多个字符用R,用多个字符替换一个字符用s,整行替换用S
13.
:%s/old_word/new_word/g
这个指令是于在整个文件中替换特定字符串
14.光标控制
k:上移 nk 上移n行
j:下移 nj 下移n行
将光标移到第n行,按下 nG
在当前屏幕中
H 跳到第一行
M 跳到中间一行
L 跳到最后一行
15.
表8-2 删除命令
删除命令操作
d l 删除当前字符(与x命令功能相同)
d 0 删除到某一行的开始位置
d ^ 删除到某一行的第一个字符位置(不包括空格或TA B字符)
d w 删除到某个单词的结尾位置
d 3 w 删除到第三个单词的结尾位置
d b 删除到某个单词的开始位置
d W 删除到某个以空格作为分隔符的单词的结尾位置
d B 删除到某个以空格作为分隔符的单词的开始位置
d 7 B 删除到前面7个以空格作为分隔符的单词的开始位置
d) 删除到某个语句的结尾位置
d 4) 删除到第四个语句的结尾位置
d( 删除到某个语句的开始位置
d } 删除到某个段落的结尾位置
d { 删除到某个段落的开始位置
d 7 { 删除到当前段落起始位置之前的第7个段落位置
d d 删除当前行
d /t e x t 删除从文本中出现“ t e x t”中所指定字样的位置,一直向前直到下一个该字样所出现的
位置(但不包括该字样)之间的内容
d fc 删除从文本中出现字符“c”的位置,一直向前直到下一个该字符所出现的位置(包括
该字符)之间的内容
d tc 删除当前行直到下一个字符“ c”所出现位置之间的内容
D 删除到某一行的结尾
d $ 删除到某一行的结尾
5 d d 删除从当前行所开始的5行内容
d L 删除直到屏幕上最后一行的内容
d H 删除直到屏幕上第一行的内容
d G 删除直到工作缓存区结尾的内容
d 1 G 删除直到工作缓存区开始的内容
修改命令操作
c l 更改当前字符
c w 修改到某个单词的结尾位置
c 3 w 修改到第三个单词的结尾位置
c b 修改到某个单词的开始位置
c W 修改到某个以空格作为分隔符的单词的结尾位置
c B 修改到某个以空格作为分隔符的单词的开始位置
c 7 B 修改到前面7个以空格作为分隔符的单词的开始位置
c 0 修改到某行的结尾位置
c) 修改到某个语句的结尾位置
c 4) 修改到第四个语句的结尾位置
c( 修改到某个语句的开始位置
c } 修改到某个段落的结尾位置
c { 修改到某个段落的开始位置
c 7 { 修改到当前段落起始位置之前的第7个段落位置
c tc 修改当前行直到下一个字符c所出现位置之间的内容
C 修改到某一行的结尾
c c 修改当前行
5 c c 修改从当前行所开始的5行内容
. 重复上一次修改!
表8-4 替换命令
替换命令操作
s 将当前字符替换为一个或多个字符
S 将当前行替换为一个或多个字符
5 s 将从当前字符开始的5个字符替换为一个或多个字符
vi替换使用规则:
:g/s1/s/s2/s3/g
第一个g表示对每一个包括s1的行都进行替换,第二个g表示对每一行包括s1的行所有的s2都用s3替换
s表示替换,s2是要被替换的字符串,他可以和s1相同(如果相同的话用//代替),s3是替换字符串
16.
fx
往右移动到 x 字符上
Fx
往左移动到 x 字符上
tx
往右移动到 x 字符前
Tx
往左移动到 x 字符后
(注意:以上四个命令中,其中x是键入的字符)
;
分号,配合 f 和 t 使用,重复一次
,
逗号,配合 f 和 t 使用,反方向重复一次
17. vi 环境选项 Solaris ksh
noautoindent nomodelines noshowmode
autoprint nonumber noslowopen
noautowrite nonovice tabstop=8
nobeautify nooptimize taglength=0
directory=/var/tmp paragraphs=IPLPPPQPP LIpplpipnpbtags=tags /usr/lib/tags
noedcompatible prompt tagstack
noerrorbells noreadonly term=vt100
noexrc redraw noterse
flash remap timeout
hardtabs=8 report=5 ttytype=vt100
noignorecase scroll=11 warn
nolisp sections=NHSHH HUuhsh+c window=23
nolist shell=/bin/ksh wrapscan
magic shiftwidth=8 wrapmargin=0
mesg noshowmatch nowriteany
For C-Shell:
setenv EXINIT "set nu"
For Bourne or Korn Shell:
EXINIT="set nu"; export EXINIT
For Korn Shell Only (alternate method):
typeset -x EXINIT="set nu"
在 .profile 里设置 vi 的环境选项 , 以上均测试过
18.标记文本
mchar 用字母char标记当前光标的位置
`char 移至char所标记处
'char 移至char标记所在行的开头处
" 移至当前行上一次所在位置(在光标移动之后)――一个双引号
'' 移至当前行上第一次所在位置的行的开头处(在光标移动之后)――两个单引号
19.
同时vi多个文件时,CTRL-SHIFT-6回到上一个文件,在本次vi的文件和上次vi的文件之间切换。
但是我发现一个BUG:在用CTRL-SHIFT-6切换到上一个文件后,用:args查看多文件vi状态时,
屏幕底部仍然显示目前vi的是刚才的文件。
(在HP-UX,Solaris,AIX上通过)
也可以使用:
:e#
进行切换
20.
sco 下VI 要在文本前同样的字符加用
%s/^/要加的内容/g 要在文本后同样的字符加
%s/$/要加的内容/g
21.
如何去掉文本中的 ^M 硬回车?不必用binary传回去再ascii传回来的方式,用shell或者unix语句实现。
cat filename |tr -d '15' >;newfile
不同的unix系统还存在一些其他不同的命令,如:doscp
sed 也可以实现这个功能.
dos2unix filename filename2
反之
unix2dos filename filename2
在vi 中用:$s/^M//g
^是crtl-V crtl-M
22.如何在“unix命令行”下将一个文件的某字符串用另一个串换掉
sed 's/string1/string2/gp' file1 >; file2
23.将/etc/hosts下所有的地址都ping 2次
#/usr/bin/sh
#grad /etc/hosts and ping each address
cat /etc/hosts|grep -v '^#' | while read LINE
do
ADDR=`awk '{print $1}'`
for MACHINE in $ADDR
do
ping $MACHINE -n 2
done
done
/
1/安装完成后更新系统组件
yum -y update
2/安装wget以便于以后自动安装
yum -y install wget
3/查看iP地址
ifconfig
4/启动服务
service httpd start
5/停止服务
service httpd stop
6/新增用户
useradd
7/删除用户
userdel
8/修改用户
usermod
9/用户口令的管理
passwd
10/文本方式上网
links
11/列出系统中所有的进程
ps
12/列出指定名字的进程
pgrep
13/杀死指定名字或id号的进程
pkill
14/登录ftp:
ftp 192.168.128.3
bin: 二进制模式
asc: 文本模式
help: 列出所有可用的命令
ls: 列出服务器上的文件列表
!ls: 列出本地当前目录下的文件列表
15/su 命令切换到root用户的权限,但还是以前用户的环境变量。
当"exit"后又回到以前的用户身份下。
16/"su - root" 命令会使用root的环境变量。
17/"cd ~UserName" 进入UserName的home目录下。
/iptables
18/查看iptables当前的设置:
iptables -L -n
19/拒绝所有端口的INPUT:
iptables -P INPUT DROP
20/拒绝所有端口的OUTPUT
iptables -P OUTPUT DROP
21/打开所有端口的INPUT:
iptables -P INPUT ACCEPT
22/打开所有端口的OUTPUT:
iptable -P OUTPUT ACCEPT
23/保存所有的设置,否则在OS重启后,以前的设置失效:
service iptables save
24/查看当前机器的网络情况:
netstat -tnl
25/打开22端口(即使是在运行了第19和第20条命令后,也可以打开):
iptables -A INPUT -p tcp --dport 22 j ACCEPT
iptables -A OUTPUT -p tcp --sport 22 j ACCEPT
26/禁止某IP访问本机器:
iptables -A INPUT -p tcp -s 192.168.128.1 -j DROP
27/查看各规则的编号:
iptables -L -n --line-numbers
28/删除某条规则:
iptables -D INPUT 2
其中的"2"表示用上条命令看到的规则编号
29/只允许某个IP访问:
(1)禁止所有端口
(2)允许某个IP地址:
iptables -A INPUT -p tcp -s 192.168.128.1 -j ACCEPT
iptables -A OUTPUT -p tcp -d 192.168.128.1 -j ACCEPT
30/过滤无效数据包:
iptables -A OUTPUT -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT
31/查询网络名字服务:
nslookup
32/DNS工具:
host www.google.com
33/"/etc/services"这个文件中存放了本系统中端口与服务的对应关系。
如果想知道域名服务用了哪个端口,命令如下:
grep domain /etc/services
34/DNS和网关的配置文件:
"/etc/resolv.conf"指定"nameserver 192.168.128.1"即可
35/停用网卡:
sudo ifconfig eth0 down
36/修改网卡的MAC地址:
sudo ifconfig eth0 hw ether 00A010598805
37/启用网卡:
sudo ifconfig eth0 up
38/修改网卡的IP:
sudo ifconfig eth0 192.168.128.4 netmask 255.255.255.0
39/和网络相关的配置文件有/etc/network/interface和/etc/resolv.conf两个文件。
通过修改interface文件可以指定某个网络设备的静态IP地址或是动态IP地址。
40/重启网络服务:
/etc/init.d/network restart
41/打印到达网络主机的包路径:
traceroute www.google.com
42/填加网关:
route add default gw 192.168.128.2
43/配置系统服务:
ntsysv
44/CentOS的配置工具:
setup
45/"/etc/hosts"文件中记录了地址与名字的映射关系
46/"fdisk -l"查看当前系统中有多少磁盘分区及文件系统类型
47/du 查看文件系统的使用空间,目录容量
48/df - disk free
查看文件系统的可用磁盘空间
49/挂载分区:
mount deviceName mountPoint [-o options]
例如:
mount /dev/hda1 /etc/temp -o iocharset=cp936
50/挂载镜像文件:
mount filename mountPoint -o loop
51/挂载远程文件:
mount hostname:path mountPoint
例如:
mount 192.168.128.3:/mnt /etc/temp
52/取消挂载:
umount mountPoint
53/命令后加"&",则该命令会在后台执行。
54/jobs 命令列出当前所有的后台进程
55/"whereis 命令" 找出后面命令的绝对目录
56/启动vsftpd服务:
service vsftpd start
57/关防火墙:
service iptables stop
58/查看当前的配置:
chkconfig --list
59/列出当前所有进程:
ps -ef
60/hostname
61/whoami
63/which bash
64/上次一个命令运行的结果状态:
echo $?
65/目录结构:
/bin :可执行文件的目录(普通用户)
/boot :启动时用到的文件
/boot/grub :多启动时用到
/dev :存放了设备文件(linux中所有的设备都是文件)
/etc :存放了系统的配置文件
/etc/rc.d :不同的运行级别的配置文件
/home :用户的家目录
/lib :用于存储库文件
/mnt :习惯上用于挂载其他文件分区的目录
/proc :内存中的进程文件
/sbin :可执行文件的目录(超级用户<普通用户如果找不到该目录下的命令,可以用全路径>)
/tmp :临时目录
/usr/ :用户的应用程序有关的目录
/usr/src :应用程序的源文件目录
/usr/bin :应用程序的可执行文件目录
/usr/sbin :超级用户可以执行的应用程序可执行文件的存放目录
/usr/local :应用程序安装目录
/var :经常变动信息的目录
/var/log :日志目录
66/计算机信息:
CPU:
/proc/cpuinfo
内存:
/proc/meminfo
free
硬盘:
fdisk -l
显卡:
lspci
U盘:
lsusb -v
驱动driver:
lsmod
kernel版本:
uname
67/用户管理:
添加用户 :useradd
添加用户组 :groupadd
删除用户 :userdel
删除用户组 :groupdel
更改用户 :usermod
更改用户组 :groupmod
更改密码 :passwd
切换用户 :su
以其他用户执行 :sudo
查看当前用户的信息:id
68/查看当前的环境变量
env
69/lsattr - list file attributes on a Linux second extended file system
70/磁盘格式化:
mkfs
71/进程管理:
查看 :ps aux
进程树 :pstree
杀死进程 :kill PID
pkill PNAME
动态查看 :top
后台进程 :&
置到后台 :bg
调回前台 :fg
查看后台进程 :jobs
优先级调整 :renice
72/显示command执行的时间:
time command
ex:time ls
73/命令历史:
history
74/系统启动时的信息:
dmesg
75/日志文件存放在:
/var/log/
76/系统运行时间:
uptime - Tell how long the system has been running.
77/show listing of last logged in users
last
78/网络管理:
测试网络是否物理联通:
ping
show / manipulate the IP routing table:
route
查看DNS服务的配置:
/etc/resolv.conf
通过DHCP得到某网卡IP:
dhclient eth0
Print network connections, routing tables, interface statistics, masquerade connections, and multicast memberships:
netstat
show / manipulate routing, devices, policy routing and tunnels:
ip
ex:
ip addr
ip route
79/ 关机:
poweroff
80/重启:
reboot
90/查看前一个命令的执行结果:
echo $?
无错误为0,有错误为非0
91/print system information:
uname
92/列出man中与command所有有关的信息(指在哪个man页中):
man -f command
例:
man -f mv
93/利用关键词从man中查找资料:
man -k keyword
例:man -k ls
94/如果X Window发生问题而挂掉,那么可以按下[crtl]+[alt]+[backspace]来让 X window 重新启动