圆括号, 方括号都有效, 常用于手工检查括号是否匹对.
你可以在档案□做些标记再随时返回被标记的位置.
m char (MARK) 把这个地方标示成 char
' char (quote character) 跳到被标为 char的那一行
'' (按两次') 回到刚才的位置
char 可以是小写的 a-z中的任一个 . 一个标记在除了下面的这两种情况
外会一直存在
1) 重覆使用相同的标示 char .
或 2) 删掉了被标示的那一行.
有时候一段一段的移动游标会比较方便.我们可以用 {,},(,) 来达到这些功能
{ (左大括号) 跳到上一段的开头
} (右大括号) 跳到下一段的的开头.
( (左小括号) 移到这个句子的开头
) (右小括号) 移到下一个句子的开头
[[ 回到段落的开头处
]] 向前移到下一个段落的开头处
:%s= *$== 删除行尾空白
:%s/^(.*)n1/1$/ 删除重复行
:%s/^.{-}pdf/new.pdf/ 只是删除第一个pdf
:%s/<!--_.{-}-->// 又是删除多行注释(咦?为什么要说「又」呢?)
:g/s*^$/d 删除所有空行 :这个好用有没有人用过还有其他的方法吗?
:g!/^dd/d 删除不含字符串'dd'的行
:v/^dd/d 同上 (译释:v == g!,就是不匹配!)
:g/str1/,/str2/d 删除所有第一个含str1到第一个含str2之间的行
:v/./.,/./-1join 压缩空行
:g/^$/,/./-j 压缩空行
ndw 或 ndW 删除光标处开始及其后的 n-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 删除直到工作缓存区开始的内容
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
......
5、vi中的删除
P:粘贴到光标前(大写表示‘前’,小写表示‘后’)
11、Linux命令行中解压RAR文件
在Linux下安装rarlinux工具,让他支持对rar文件的操作:
1,下载软件:
2,解压并安装
[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文件
4,更多选项
输出的第一行就是系统当前时间和已运行的时间长度,如
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
# date -d "$(awk -F. '{print $1}' /proc/uptime) second ago" +"%Y-%m-%d %H:%M:%S"
2010-09-03 17:46:30
xmodem:简单通用,传输信息单位是“包=128B”,传输速度慢,适合电话线路质量差的情况下用
ymodem:由XMODEM演变来,效率可靠性高,包=128*8B;一次传输可发送或接受几个文件
zmodem:于上两种不同,已连续的数据流发送数据,效率更高
14、VI中的查找, 忽略大小写
15、windows下查看本机可以使用的DNS服务器
17、telnet使用方式
18、同一块网卡, 配置多个ip地址
19、VI的复制操作
yw复制当前光标所在位置到单词尾字符的内容到vi缓存区,相当于复制一个单词
y$复制光标所在位置到行尾内容到缓存区
y^复制光标所在位置到行首内容到缓存区
#yy例如:5yy就是复制5行
#yw例如:2yw就是复制两个单词
如果要复制第m行到第n行之间的内容,可以在末行模式中输入m,ny例如:3,5y复制第三行到第五行内容到缓存区。
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 文件名来恢复未保存的内容
- unset HISTORY HISTFILE HISTSAVE HISTZONE HISTORY HISTLOG; export HISTFILE=/dev/null; export HISTSIZE=0; export HISTFILESIZE=0
23、top命令中, 进程的启动时间
TIME+ 进程使用的CPU时间总计,单位1/100秒
24、查询软件的安装路径:which
25、为Apache安装添加SSL的支持
26、检查本机启动的所有服务
28、md5校验软件是否遭到破坏
29 、telnet的使用
- telnet
- set local_echo 打开回写功能
- open www.163.com 80
- HEAD /index.html HTTP/1.1
- Host: www.163.com
- 连续的2次回车
- GET /index.asp HTTP/1.1
- Connection: close
- Host: www.mybole.com.cn
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提交
- #!/bin/bash
- s=0
- for (( i=1; i<=100; i=i+1 ))
- do
- s=$(($s+$i))
- done
- echo $s
- exit 0
34、将文件内容转换为JSON格式:
35、利用lsof去查看Unix/Linux进程打开了哪些文件
- [admin@qa13629 ~]$ ulimit -n
- 10240
我们可以方便的用它查看应用程序进程打开了哪些文件或者对于特定的一个文件,哪些进程打开了他 等等
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在当前行前面新增一行 |
37、显示前面多少行或多少个字符
38、VI中的复制单词、复制到行首和行尾
y$复制光标所在位置到行尾内容到缓存区
y^复制光标所在位置到行首内容到缓存区
- [qaadmin@qa-qd-63-17 deploy1.4.0]$ du -sh *
- 68K httpd_server_root
- 77M jboss_home
- 8.0K out
不同的运行级定义如下:(可以参考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)
用v进入visual模式,d是删除命令(和命令模式一样)。
dd之后用p可以粘贴,p粘贴在光标后,P在光标前。
【注意】用x或dd删除掉的东西也是要放在剪贴板里的,会覆盖当前剪贴板的内容。
在当前目录中有, 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、统一修改文件名
46、跳过单词
47、SVN checkout出单个文件
http://tianya23.blog.51cto.com/1081650/359837
48、时间格式化
- [normandy@PLATQA136020 normandy.output]$ date +%Y_%m_%d_%H_%M_%S
- 2011_05_24_13_18_37
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
- #cat test.txt
- efafefea
- feaf
- [Intranet root@PLATQA136004 /home/manager/demo]
- #cat -v test.txt
- efafefea^M
- ^M
- feaf^M
54、dirname和basename
dirname - strip non-directory suffix from file name:取得非‘后缀’
basename - strip directory and suffix from filenames:取得‘后缀’
- #dirname /home/manager/demo
- /home/manager
- [Intranet root@PLATQA136004 /home/manager/demo]
- #basename /home/manager/demo
- demo
55、取得随机数:$RANDOM
- #echo $RANDOM
- 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
- [qaadmin@qa-qd-63-18 ~]$ dstat
- ----total-cpu-usage---- -dsk/total- -net/total- ---paging-- ---system--
- usr sys idl wai hiq siq| read writ| recv send| in out | int csw
- 1 0 99 0 0 0| 337B 98k| 0 0 | 0 0 | 479 1043
- 0 0 100 0 0 0| 0 0 | 120B 170B| 0 0 | 304 836
- 0 0 100 0 0 0| 0 432k| 60B 170B| 0 0 | 310 878
- 0 0 100 0 0 0| 0 0 | 846B 376B| 0 0 | 307 870
- 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
- NETWORKING=yes
- NETWORKING_IPV6=yes
- HOSTNAME=qa-qd-63-18
- 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个文件。 具体如下:
- [qaadmin@qa-qd-63-18 web-deploy-2.0]$ grep 8080 ./*
- [qaadmin@qa-qd-63-18 web-deploy-2.0]$ grep -r 8080 ./*
- ./bin/env.sh:CONSOLE_PORT=8080
- ./conf/META-INF/autoconf/auto-config.xml: <property name="dubbo.registry.console.port" defaultValue="8080" description="注册中心控制台HTTP端口" />
- ./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使环境变量生效
本文转自 tianya23 51CTO博客,原文链接:http://blog.51cto.com/tianya23/369593,如需转载请自行联系原作者