linux命令补遗 - 2

1、括号匹配:
% 可以让光标从它当前所在的括号跳转到与它相匹配的括号上去, 对花括号和
圆括号, 方括号都有效, 常用于手工检查括号是否匹对.

2、标示位置
你可以在档案□做些标记再随时返回被标记的位置.

m char (MARK) 把这个地方标示成 char
' char (quote character) 跳到被标为 char的那一行
'' (按两次') 回到刚才的位置

char 可以是小写的 a-z中的任一个 . 一个标记在除了下面的这两种情况
外会一直存在

1) 重覆使用相同的标示 char .
或 2) 删掉了被标示的那一行.

3、文字段落
有时候一段一段的移动游标会比较方便.我们可以用 {,},(,) 来达到这些功能

{ (左大括号) 跳到上一的开头
} (右大括号) 跳到下一的的开头.

( (左小括号) 移到这个句子的开头
) (右小括号) 移到下一个句子的开头

[[ 回到段落的开头处
]] 向前移到下一个段落的开头处

3、删除总结
:%s/r//g                                        删除DOS方式的回车^M
:%s= *$==                                     删除行尾空白

:%s/^(.*)n1/1$/                             删除重复行

:%s/^.{-}pdf/new.pdf/                 只是删除第一个pdf

:%s/<!--_.{-}-->//                     又是删除多行注释(咦?为什么要说「又」呢?)

:g/s*^$/d                                        删除所有空行 :这个好用有没有人用过还有其他的方法吗?
:g!/^dd/d                                         删除不含字符串'dd'的行
:v/^dd/d                                         同上 (译释:v ==&nbspg!,就是不匹配!)

:g/str1/,/str2/d                            删除所有第一个含str1到第一个含str2之间的行

:v/./.,/./-1join                                压缩空行
:g/^$/,/./-j                                    压缩空行

ndw 或&nbspndW                            删除光标处开始及其后的&nbspn-1 个字符。
d0                                                    删至行首。

Ctrl+u                                            删除输入方式下所输入的文本。
^R                                                    恢复u的操作
J                                                     把下一行合并到当前行尾
V                                                     选择一行
^V                                                    按下^V后即可进行矩形的选择了
aw                                                    选择单词
iw                                                    内部单词(无空格)
as                                                    选择句子
is                                                    选择句子(无空格)
ap                                                    选择段落
ip                                                    选择段落(无空格)
D                                                     删除到行尾
x,y                                                 删除与复制包含高亮区

dl                                                    删除当前字符(与x命令功能相同)
d0                                                    删除到某一行的开始位置
d^                                                    删除到某一行的第一个字符位置(不包括空格或TAB字符)
d3w                                                 删除到第三个单词的结尾位置
db                                                    删除到某个单词的开始位置
dW                                                    删除到某个以空格作为分隔符的单词的结尾位置
dB                                                    删除到某个以空格作为分隔符的单词的开始位置
d7B                                                 删除到前面7个以空格作为分隔符的单词的开始位置
d)                                                 删除到某个语句的结尾位置
d4)                                                删除到第四个语句的结尾位置
d(                                                 删除到某个语句的开始位置
d)                                                 删除到某个段落的结尾位置
d{                                                    删除到某个段落的开始位置
d7{                                                 删除到当前段落起始位置之前的第7个段落位置
dd                                                 删除当前行
d/text                                         删除从文本中出现“text”中所指定字样的位置, 一直向前直到下一个该字样所出现的位置(但不包括该字样)之间的内容
dfc                                                删除从文本中出现字符“c”的位置,一直向前直到下一个该字符所出现的位置(包括该字符)之间的内容
dtc                                                删除当前行直到下一个字符“c”所出现位置之间的内容
D                                                    删除到某一行的结尾
dL                                                 删除直到屏幕上最后一行的内容
dH                                                 删除直到屏幕上第一行的内容
dG                                                 删除直到工作缓存区结尾的内容
d1G                                                删除直到工作缓存区开始的内容    

4、yum安装
yum list |grep alibaba查看
[qaadmin@qa-qd-63-17 bin]$ yum list |grep alibaba
alibaba-asc-alog.x86_64                                        1.0.5-rc_3                                    update    
alibaba-asc-alog-devel.x86_64                            1.0.5-rc_3                                    update    
alibaba-asc-anet.x86_64                                        0.9.2-rc5                                     update    
...... 
yum install alibaba-cn-suite.x86_64 
会安装jboss,httpd,cronlog,openssl,java

5、vi中的删除

x:删当前光标下的一个字符
X:删除光标前的1个字符
dG:删至文档尾
dgg:删至文档首
D:删除至行尾,同d^
d0:删除至行首,同d$

6、复制(yank)
y^:复制到行首
y$:复制到行尾
yw:复制一个单词(是光标到当前单词的结尾
yG:复制到文档尾
y1G:复制到文档首

 P:粘贴到光标前(大写表示‘前’,小写表示‘后’)


7、搜索
f:搜索一行中匹配的字符
/:向下搜
?:向上搜
n/N:继续找
*:向下完整匹配光标下的单词
#:向上匹配
g*/g#:同上,但只要匹配部分即可

8、简单文本替换
r:取代光标处的字符
R:进入取代模式,直到按ESC结束
cc或S:取代一整行的内容
cw:替换一个单词
C:取代至行尾
c0 c^:取代到行首

9、简单排版
:ce(nter) 居中显示
:ri(ght) 文字靠右
:le(ft) 文字靠左
J 两行合并为一行

10、VI的各种模式
插入模式:
非插入模式
V(isual)模式:
R模式:

11、Linux命令行中解压RAR文件

在对Linux系统操作中,我们都知道用tar命令来操作.tar  .gz  .bz包;用unzip来操作.zip压缩文件。如果下载下来的是RAR压缩包,有的网友不知道如何解压。最简单的方法就是在windwos中,把RAR文件重新压成ZIP文件。这样操作如果文件比较大是相当浪费时间。有没有让他在命令行下支持ZIP文件呢?有。它就是rarlinux
      在Linux下安装rarlinux工具,让他支持对rar文件的操作:
      1,下载软件:
引用
[root@CentOS ~]# wget http://down1.chinaunix.net/distfiles/rarlinux-3.8.0.tar.gz
    
      2,解压并安装
引用
[root@CentOS ~]# tar zxvf rarlinux-3.8.0.tar.gz
[root@CentOS ~]# cd rar
[root@CentOS rar]# make
mkdir -p /usr/local/bin
mkdir -p /usr/local/lib
cp rar unrar /usr/local/bin
cp rarfiles.lst /etc
cp default.sfx /usr/local/lib

      3,解压rar文件
引用
[root@CentOS ~]# rar x abc.rar

      4,更多选项
引用
[root@CentOS ~]# rar -h

12、取得系统时间
(1).top命令
输出的第一行就是系统当前时间和已运行的时间长度,如
top
top - 23:15:59 up 9 days,  8:45,  1 user,  load average: 1.23, 0.87, 0.58
(2).uptime命令
输出和top命令的第一行类似:
uptime
 23:16:58 up 9 days,  8:46,  1 user,  load average: 1.57, 1.02, 0.64
(3).查看/proc/uptime/
cat /proc/uptime
809318.30 767841.27
(4).系统启动时间:运用系统工具date即可算出系统启动时间
[root@qa-qd-62-165 /root]
#date -d "$(awk -F. '{print $1}' /proc/uptime) second ago" +"%Y-%m-%d %H:%M:%S"
2010-09-03 17:46:30
13、sz、rz
sz(send zmodem):(从linux的角度来看)发送到客户端,对客户端即为下载
rz(receive zmodem):(从linux的角度来看)接收数据,对客户端即为上传
根据modem所采用的文件传输协议:xmodem,ymodem,zmodem将其分类   
  xmodem:简单通用,传输信息单位是“包=128B”,传输速度慢,适合电话线路质量差的情况下用   
  ymodem:由XMODEM演变来,效率可靠性高,包=128*8B;一次传输可发送或接受几个文件   
  zmodem:于上两种不同,已连续的数据流发送数据,效率更高 

14、VI中的查找, 忽略大小写

/abc: 向下查找abc
?abc:向上查找abc
/abc\c:向下查找abc, 且忽略大小写; 同理向上查找也是一样

15、windows下查看本机可以使用的DNS服务器

ipconfig /all

16、VI中删除中间某些行的行首符号
:.,$-1s/^#\ //:含义为将当前行倒数第二行#开头或空格开头的行的进行替换(//: 删掉)

17、telnet使用方式

     直接在命令行处(直接使用win+r)或者在命令行中键入‘telnet’打开telnet, 使用"open localhost 8888"直接接收来自于本机监听在8888端口的服务器端发过来的内容。
    帮助:?或者help

18、同一块网卡, 配置多个ip地址

检查当前的ip:ifconfig eth0        192.168.0.76
同块网卡上面配置另外的ip地址:
       ifconfig eth0:1 192.168.0.7 up
此时ping 192.168.0.7则是通的
 

19、VI的复制操作

  yy命令复制当前整行的内容到vi缓冲区
yw复制当前光标所在位置到单词尾字符的内容到vi缓存区,相当于复制一个单词
y$复制光标所在位置到行尾内容到缓存区
y^复制光标所在位置到行首内容到缓存区
#yy例如:5yy就是复制5行
#yw例如:2yw就是复制两个单词

如果要复制第m行到第n行之间的内容,可以在末行模式中输入m,ny例如:3,5y复制第三行到第五行内容到缓存区。

20.查找和替换
vi的查找和替换功能主要在末行模式完成:

至上而下的查找
/ 要查找的字符窜,其中/代表从光标所在位置起开始查找,例如:/ work

至下而上的查找
?要查找的字符窜 例如:/ work

替换
:s/old/new用new替换行中首次出现的old
: s/old/new/g 用new替换行中所有出现的old
:#,# s/old/new/g用new替换从第#行到第#行中出现的old
:% s/old/new/g用new替换整篇中出现的old

如果替换的范围较大时,在所有的命令尾加一个c命令,强制每个替换需要用户进行确认,例如:s/old/new/c 或s/old/new/gc

21、恢复文件
vi在编辑某一个文件时,会生成一个临时文件,这个文件以 . 开头并以 .swp结尾。正常退出该文件自动删除,如果意外退出例如忽然断电,该文件不会删除,我们在下次编辑时可以选择一下命令处理:

O只读打开,不改变文件内容
E继续编辑文件,不恢复.swp文件保存的内容
R将恢复上次编辑以后未保存文件内容
Q退出vi
D删除.swp文件
或者使用vi -r 文件名来恢复未保存的内容

21、Apache中常用的命令
apachectl -l: 检查加载了哪些模块
apachectl -t: 检查配置文件是否有误
apachectl -start
apachectl -stop
apachectl -restart

22、历史记录不进行保存,可以避免被管理员发现
 
  1. unset HISTORY HISTFILE HISTSAVE HISTZONE HISTORY HISTLOG;  export HISTFILE=/dev/null; export HISTSIZE=0; export HISTFILESIZE=0 

23、top命令中, 进程的启动时间

TIME    进程使用的CPU时间总计,单位
TIME+    进程使用的CPU时间总计,单位1/100秒

24、查询软件的安装路径:which

查询openssl的安装路径: which openssl

25、为Apache安装添加SSL的支持

./configure --prefix=/opt/www  --enable-ssl  --with-ssl=/opt/openssl

26、检查本机启动的所有服务

netstat -tnl
netstat -anp
27、telnet连接sendmail服务器
telnet localhost 25

28、md5校验软件是否遭到破坏

md5sum -c  httpd=2.0.51.tar.gz.md5

29 、telnet的使用

  1. telnet 
  2. set local_echo 打开回写功能 
  3. open www.163.com 80 
  4.  
  5. HEAD /index.html HTTP/1.1 
  6. Host: www.163.com 
  7. 连续的2次回车 
  8.  
  9. GET /index.asp HTTP/1.1 
  10. Connectionclose 
  11. Host: www.mybole.com.cn 
30、echo参数
-e:解析转义字符, 比如\c, \f, \t, \n
-n:回车不换行, linux系统默认回车换行。 执行完成之后,命令行的提示符显示在输出同一行的后面

31、RPM包安装指定参数

安装:yum install alibaba-jetty-7.2.0-1.x86_64.rpm

详细选项:  

-h (or --hash) 安装时输出hash记号 (``#'')  
--test 只对安装进行测试,并不实际安装。  
--percent 以百分比的形式输出安装的进度。  
--excludedocs 不安装软件包中的文档文件  
--includedocs 安装文档  
--replacepkgs 强制重新安装已经安装的软件包  
--replacefiles 替换属于其它软件包的文件  
--force 忽略软件包及文件的冲突  
--noscripts 不运行预安装和后安装脚本  
--prefix 将软件包安装到由 指定的路径下  
--ignorearch 不校验软件包的结构  
--ignoreos 不检查软件包运行的操作系统  
--nodeps 不检查依赖性关系  
--ftpproxy 用 作为 FTP代理  
--ftpport 指定FTP的端口号为  

通用选项  

-v 显示附加信息  
-vv 显示调试信息  
--root 让RPM将指定的路径做为"根目录",这样预安装程序和后安装程序都会安装到这个目录下  
--rcfile 设置rpmrc文件为  
 

 32、svn提交

svn st: 查看当前代码的修改状态, 带?的没关系, 带M的标示被修改过
svn ci -m "mock" --username zhangsan --password  abc123: 以用户名zhangsan、密码abc123提交代码,注释为mock
 33、For循环的使用
  1. #!/bin/bash 
  2. s=0 
  3. for (( i=1;  i<=100;  i=i+1 )) 
  4. do 
  5.    s=$(($s+$i)) 
  6. done 
  7. echo $s 
  8. exit 0 

 34、将文件内容转换为JSON格式:

在头部加上双引号:%s/^/"/g
 在尾部加上双引号逗号:%s/^/",/g
 

 35、利用lsof去查看Unix/Linux进程打开了哪些文件

在Linux下,我们使用ulimit -n 命令可以看到单个进程能够打开的最大文件句柄数量(socket连接也算在里面)。系统默认值1024。
  1. [admin@qa13629 ~]$ ulimit -n 
  2. 10240 
今天用了一下lsof,发现这个linux的小工具,功能非常强大而且好用。

    我们可以方便的用它查看应用程序进程打开了哪些文件或者对于特定的一个文件,哪些进程打开了他 等等

 

1)搜索被某一进程打开的相关文件:

      比如查看java进程(PID:5225)所打开相关文件的信息

      #lsof -p 5225

 

  2)查看被打开某一文件的相关进程信息:

     #lsof /proc

 

 

3)查看网络连接

   查看监听端口25的进程:

   #lsof -i:25

 

 查看活动的连接:

  #lsof -i @192.168.1.171

 

 4)查看某个用户的打开的文件

 #lsof -u root(root用户打开的文件)

 #lsof -u ^root(非root用户打开的文件)

 36、在VI/VIM中如何新增加一行

 

O在当前行前面新增一行
o在当前行后面新增一行

 37、显示前面多少行或多少个字符

head -c 10 antx.properties :显示antx.properties文件的前10个字符
head  -10 antx.properties  :显示antx.properties文件的前10行
 
tail -c 10 antx.properties :显示antx.properties文件的后10个字符
tail -10 antx.properties  :显示antx.properties文件的后10行

 38、VI中的复制单词、复制到行首和行尾

yw复制当前光标所在位置到单词尾字符的内容到vi缓存区,相当于复制一个单词
y$复制光标所在位置到行尾内容到缓存区
y^复制光标所在位置到行首内容到缓存区
 
39、查看某目录下面各个文件所占大小:du -sh * 
  1. [qaadmin@qa-qd-63-17 deploy1.4.0]$ du -sh * 
  2. 68K     httpd_server_root 
  3. 77M     jboss_home 
  4. 8.0K    out 
 40、Linux启动级别
简单的说,运行级就是操作系统当前正在运行的功能级别。这个级别从1到6 ,具有不同的功能。 

不同的运行级定义如下:(可以参考Red Hat Linux 里面的/etc/inittab) 

# 0 - 停机(千万不能把initdefault 设置为0 ) 

 # 1 - 单用户模式 

# 2 - 多用户,没有 NFS 

  # 3 - 完全多用户模式(标准的运行级) 

# 4 - 没有用到 

  # 5 - X11 (xwindow) 

# 6 - 重新启动 (千万不要把initdefault 设置为6 ) 

这些级别在/etc/inittab 文件里指定。这个文件是init 程序寻找的主要文件,最先运行的服务是放在/etc/rc.d 目录下的文件。在大多数的Linux 发行版本中,启动脚本都是位于 /etc/rc.d/init.d中的。这些脚本被用ln 命令连接到 /etc/rc.d/rcn.d 目录。(这里的n 就是运行级0-6) 
 
 41、VI中的剪切
用v进入visual模式,d是删除命令(和命令模式一样)。
dd之后用p可以粘贴,p粘贴在光标后,P在光标前。
【注意】用x或dd删除掉的东西也是要放在剪贴板里的,会覆盖当前剪贴板的内容。
 42、用户身份验证
id -u: 用户的id号, 如果为0则为root用户, 即最早的用户root; 其他的现实用户的id号
 
43、统计文件中某词出现的次数
统计双引号的个数:grep -o \" test | wc -l
 
 44、linux/unix中命令行如何实现-复制或移动多个文件到另一个目录,而且想复制的源文件名在一个文本文件中
在当前目录中有,
A.ext
B.ext
C.ext
D.ext
E.ext
F.ext
等文件

现在想将其中的
B.ext
D.ext
F.ext
等文件复制到另一个目录dest-folder中,而且这些欲复制的文件名称已经写在了一个
files-to-copy.txt
 
解决方案:
用tar代替靠谱应当比较合适
tar cvf - -T files-to-copy.txt | (cd dest-folder; tar cvf -) 

如果非要用cp命令的话也很简单
cat files-to-copy.txt|xargs -i cp {} dest-folder 
 

45、统一修改文件名

rename txt ext * : 将当前目录下面的所有txt文件修改为ext文件
 rename说白了就是替换

 46、跳过单词

移动到下一个单词第一个字母,按 w 键。
到下一个单词的最后一个字母,按 e 键。
W 跳到下一个长单词的第一个字母,E 跳到最后一个字母;
 
移动到前一个单词的第一个字母,按 b 键
B 移动到前一个单词的第一个字母。

47、SVN checkout出单个文件

http://tianya23.blog.51cto.com/1081650/359837

 48、时间格式化

date +%Y_%m_%d_%H_%M
  1. [normandy@PLATQA136020 normandy.output]$ date +%Y_%m_%d_%H_%M_%S 
  2. 2011_05_24_13_18_37 
 
49、windows命令行下面查看自己的字符集
(1)chcp,再查阅相应的编码
(2)set NLS_LANG=American_America.ZHS16GBK
 50、配置全局环境变量
/etc/profile
让配置的变量立即生效:source /etc/profile

51、远程复制且修改名称

将lib文件夹内容复制且修改其文件夹名称为emma:scp -r root@ip:/root/soft/lib ./emma

将emma.jar文件复制且修改其文件名为emma-1.jar: scp -r root@ip:/root/soft/lib/emma.jar ./emma-1.jar

 52、tar解压到某个目录下面: -C

tar zxvf apache-maven-2.2.1-bin.tar.gz  -C /home/admin/software/maven/

 53、cat  -v filename: 查看文件的不可显示字符

-v, --show-nonprinting   use ^ and M- notation, except for LFD and TAB

  1. #cat test.txt  
  2. efafefea 
  3.  
  4. feaf 
  5.  
  6. [Intranet root@PLATQA136004 /home/manager/demo] 
  7. #cat -v test.txt  
  8. efafefea^M 
  9. ^M 
  10. feaf^M 

ßcat  -v filename 查看特殊字符
ßVi 中,:set list 查看特殊字符

54、dirnamebasename

dirname - strip non-directory suffix from file name:取得非‘后缀’

basename - strip directory and suffix from filenames:取得‘后缀’

 

  1. #dirname /home/manager/demo 
  2. /home/manager 
  3.  
  4. [Intranet root@PLATQA136004 /home/manager/demo] 
  5. #basename /home/manager/demo 
  6. demo 

 

55、取得随机数:$RANDOM

 

 

  1. #echo $RANDOM 
  2. 21812 

 

 

56、Screen提供了更多的功能,比如共享桌面,分屏等

 

57、expectyu与tcl的使用:非交互式

 

58、字符串操作

 

字符串替换:${变量 / 查找字符/ 替换字符}

掐头:${value#pattern} ${value##pattern}  

去尾:${value%pattern} ${value%%pattern}  

取子串:${变量: 开始位置:结束位置}

59、脚本的调试

 

 

设计脚本的过程中,有可能会出现错误。熟悉debug,可以方便的跟踪bug。

sh –x  (读取每一句,并执行,可以方便的看到执行的语句)

Sh –n 只验证语法,不执行

Sh –v

Set –x 在当前shell中调试。

trap  相关的信号,包括ERR,DEBUG等

trap ‘cmd’  ERR

  60、列出目录下面的文件

ll -Sh:按照size大小排序

ll -th:按照修改的时间排序

 61、unix2dos、dos2unix转换

将‘^M’去掉:%s/\^M/$/g,必须加\进行转义操作

在每行的后面加上‘^M’,:%s/$/^M/g

在unix中通过cat -A filename进行查看非可见字符,例如:cat -A antx.properties 

 62、解压war、jar文件:jar -xvf  *.jar

jar -xvf web.war 

jar xvf leonardo.biz-1.2.0-SNAPSHOT.jar 

 63、Linux下统计各种信息----total-cpu-usage---- -dsk/total- -net/total- ---paging-- ---system--

安装:sudo yum install dstat

使用:dstat

  1. [qaadmin@qa-qd-63-18 ~]$ dstat 
  2. ----total-cpu-usage---- -dsk/total- -net/total- ---paging-- ---system-- 
  3. usr sys idl wai hiq siq| read  writ| recv  send|  in   out | int   csw  
  4.   1   0  99   0   0   0| 337B   98k|   0     0 |   0     0 | 479  1043  
  5.   0   0 100   0   0   0|   0     0 | 120B  170B|   0     0 | 304   836  
  6.   0   0 100   0   0   0|   0   432k|  60B  170B|   0     0 | 310   878  
  7.   0   0 100   0   0   0|   0     0 | 846B  376B|   0     0 | 307   870  
  8.   0   0 100   0   0   0|   0     0 | 697B  442B|   0     0 | 332   904 

 

 64、cd `dirname $0`

$0当前Shell程序的文件名
dirname $0,获取当前Shell程序的路径
cd `dirname $0`,进入当前Shell程序的目录

65、date时间格式化

[leonardo@PLATQA136029 logs]$ date +%Y_%m_%d_%H_%M

2010_12_23_15_31 

 66、locate filename

 

[oracle@PLATQA136007 bin]$ locate functions.sh

warning: locate: warning: database /var/lib/slocate/slocate.db' is more than 8 days old

需要在root用户下执行updatedb

 

 67、命令行下查找之前的命令

方法1:history

 方法2:ctrl+r,再ctrl+e切换

 68、去掉空行

cat *.txt | sed '/^$/d'

vi中操作::g/^s*$/d

 69、修改主机名

 

查看主机名:#hostname  -> qa-qd-63-18

 

修改主机名位置:#more /etc/sysconfig/network, 将HOSTNAME修改即可, 下次启动有效。本次有效可以直接hostname company-63-18

  1. NETWORKING=yes 
  2. NETWORKING_IPV6=yes 
  3. HOSTNAME=qa-qd-63-18 
  4. GATEWAY=172.29.63.254 

 

 70、修改ip地址

查看ip地址:ifconfig

修改ip地址且只本次有效:ifconfig etho0 172.29.63.180,且立即有效,修改之后可能会断开SecurCRT,一定要慎用

修改ip下次重新启动有效:vi /etc/sysconfig/network-scripts/ifcfg-eth0中的IPADDR修改为需要的ip地址

 71、VI插入模型转换:

a、A、i、I、o、O、s、S

s:删除当前字符,且转换为插入模式

i:在当前字母之前插; I在行首插入

a:当前字母之后插; A在行尾插入

o:当前行后面开启新行且进插入模式;O当前行前面开启新行且进插入模式

72、vi中直接替换某个字符

先按下‘r’,再按需要被替换成的字符 即可

R:在行内保持命令模式且可替换功能

 73、查找

grep '\<leonardo\>' antx.properties: 在antx.properties中查找单词leonardo,而不包含扩展的单词, 只包含leonardo开头和leonardo结尾的单词,即只匹配leonardo

 

74. vi小技巧(谨记vi是严格区分大小写的哦~~)

1.上下两行掉换位置
ddp
2.从当前位置往后的内容全部删除
dG

 75、vi中连续行注释     

:起始行,终止行s/要替换字符/替换为新字符/g

如c需注释第1行到第20行,可以执行:

:1,20s/^/#/g

 76、直接运行 命令不退VI

 :! pwd  

  :! ls -l

 77、可以直接将其他文件内容导入当前编辑文件中

 :r 文件名

如,需要导入文件/etc/issue的内容,执行:
        :r /etc/issue
根据这个技巧 可以很简单的把当前的日期插入到当前的文本中:
        :r !date

 78、直接保存

    一般我们保存文本时用 :wq
我们可以用:Ctrl + z 连续按两次,直接保存

 79、如何用vi 复制第5行到第10行并粘贴到第12行之后?

方法1:
光标放到第五行,
输入:y6y
光标放到第12行,
输入:p

方法2:
命令行模式下输入
:5,10 co 12

方法3:
我一般都是
先移到第五行 d6
p
再移到12行 
p

 80、vi中的排序:

默认排序按照字符顺序,则150会排在21的前面,因为1在2的前面

 

:1,$!sort

  按照数字排序:...

参考:http://www.ibm.com/developerworks/cn/aix/library/au-vitips.html?ca=drs-

 81、统一查找某目录下面的所有文件中某字符, 并进行统一替换

sed -i "s/oldString/newString/g" `grep oldString -rl /path`
例子:
QUOTE:
1.sed -i "s/大小多少/日月水火/g" `grep 大小多少 -rl /usr/aa`
2.sed -i "s/大小多少/日月水火/g" `grep 大小多少 -rl ./`

3.sed -i "s/172.29.62.165/10.20.153.22/g" `grep 172.29.62.165 -rl ./`

4、将文件中内容为/home/admin/AliWS-1.0.0.3/conf的部分替换为/home/leonardo/product/AliWS/leonardo-web01/conf,具体实现如下:

sed -i "s/\/home\/admin\/AliWS-1.0.0.3\/conf/\/home\/leonardo\/product\/AliWS\/leonardo-web01\/conf/g" `grep "/home/admin/AliWS-1.0.0.3/conf" -rl ./`

 82、Linux下的小工具

cscope :vi中C语言的编程工具,支持跳转等,方便调试程序

执行操作时,查看对系统的调用记录,推荐使用strace。 给个strace的使用文档:http://blog.chinaunix.net/u/22617/showart_268876.html

shell的调试,推荐:bash -x,或者sh -x

 83、查找目录下面的所有文件

查找目录下的所有文件:grep "abc" ./*

 查找目录下的所有文件及其子目录下面的所有文件:grep -r "abc" ./*

例如:grep 8080 ./* 没有找到; grep -r 8080 ./* 则存在3个文件。 具体如下:

  1. [qaadmin@qa-qd-63-18 web-deploy-2.0]$ grep 8080 ./* 
  2. [qaadmin@qa-qd-63-18 web-deploy-2.0]$ grep -r 8080 ./* 
  3. ./bin/env.sh:CONSOLE_PORT=8080 
  4. ./conf/META-INF/autoconf/auto-config.xml:               <property name="dubbo.registry.console.port" defaultValue="8080" description="注册中心控制台HTTP端口" /> 
  5. ./conf/dubbo.properties:dubbo.registry.console.port=8080 

 84、修改文件权限、目录及其包含的所有文件的权限: -R

chmod -R 755 ./*

 85、清空多个文件

方法一:

for i in a b c d
do
>$i
done

方法二:

cat /dev/null >a>b>c>d
或者
>a>b>c>d

 86、错误输出

 >会把正确的内容输出到某文件中,当产生错误时是不会输出到文件中的。比如ls /ttt > /root/test, 此时/ttt文件不存在, 产生的错误信息是只会在屏幕上显示。>表示正确的输出,2>表示错误的输出

 find / -name shrek > /tmp/findfile 2>&1

 find / -name shrek &> /tmp/findfile 

 87、vi中替换的特殊字符

斜杠/ ->用 \/转义

点. -> 用\. 转义

 88、行间跳转

1g:到第一行; 3g:到第三行

G:到最后一行

 ctrl+g:在页底显示当前在多少行,所处的位置等信息

 89、w

w:每次移动一个单词

[ :每次跳过一段

 90、当前的输入复制多次

例如:对要输入的内容welcome you!复制10次

先按下10,再按下i,输入welcome you!,最后按下esc则输入了10次welcome you! 

 91、多个剪贴板,双引号“表示要对剪贴板进行操作

”a5yy:把当前行及其后面的共5行复制到剪贴板a中

“b2yy:把当前行及其后面的共2行复制到剪贴板b中

到其他文件中,在命令行下按下”ap则 复制了剪贴板a先前的5行到当前文档中, 按下“bp则可复制剪贴板b中的2行到当前文档中。

 92、直接恢复到最初状态

:e!, 而不用连续的使用u来退多次

93、替换

:1,$s/nologin/bash/g 表示从第一行到最后一行中的nologin替换为bash,不用问直接替换

 :5,20s/nologin/bash/g 表示从第5行到第20行中的nologin替换为bash, 不用问直接替换

  :5,20s/nologin/bash/c 表示从第5行到第20行中的nologin替换为bash, 但要提示用户是否替换,有自己进选择

93、VI同时编辑多个文件

vim -o /etc/passwd /etc/group,则在同一屏幕下打开2个文件, 分上下多窗口, 使用ctrl+ww进行切换

vim -O /etc/passwd /etc/group,,则在同一屏幕下打开2个文件, 分左右多窗口, 使用ctrl+ww进行切换

94、set使用

:set nu[mber]显示行号

:set ru[ler] 显示光标所在行列的位置

:set autoindent 正文自动缩进

:set ignorecase 忽略规则表达式中大小写字母的区别

 95、查看进行号:pgrep

AAA=”`pgrep httpd`

 [ -z "$AAA"] && echo 'httpd is not running! ' && exit

for i in $AAA

   do

       kill -9 $i

   done

echo httpd is killed

 96、产生100个数

seq 1 100

 97、让history显示时产生时间

在环境变量中增加: export HISTTIMEFORMAT="%F %T -- "

再使用source使环境变量生效

 

 

p:粘贴到光标