您的位置:首页 > 运维架构 > Linux

linux学习心得

2010-07-01 17:01 281 查看
一、 vi使用场景&常用命令
命令含义
vi进入
vi file1打开文件
 
Vi命令模式:
进入vi之后默认的就是命令模式,此时可以执行一些常用的编辑命令,如:
命令含义命令含义
a在光标后输入(进入输入模式)A行尾插入(进入输入模式)
i在光标前输入(进入输入模式)I从光标所在列的第一个非空白字元前面开始插入(进入输入模式)
o光标所在行下面新加一行(进入输入模式)O光标所在行上面新加一行(进入输入模式)
y复制选择部分yw复制单词
yy复制行p粘贴
d删除选择部分dd删除行
数字n+dd删除n行gg到文件头
GG到文件尾h后退一个字符
l前进一个字符j前进一行
k后退一行n找到下一个匹配字符
N找到上一个匹配字符0到行首
$到行尾r替换
u撤销上一次操作v进入选择模式
x删除一个字符shift+v进入行选择模式
ctrl+v进入列选择模式ctrl+f向下翻屏
ctrl+b向上翻屏ctrl+u向上翻半屏
ctrl+d向下翻半屏  
 
vi行末模式
esc + “:” 进入行末模式
此时可以执行行末模式的命令和系统shell命令
Vi输入模式:
进入vi之后,可以像在windows记事本中一样进行文本编辑
命令含义命令含义
esc重新进入命令模式esc + “:”进入vi行末模式
q退出q!强制退出
wq保存并退出w保存
ls执行系统命令  
 
vi编辑多个文件
命令含义
vi file1 file2同时打开多个文件
vi file1先打开一个文件再打开另一个文件
Vi file1+行末模式+new file2在打开一个文件后,打开另一个文件(过程见系列图1)
 
系列图1
Step1:打开file1
vi file1
File1内容:
Step2:按esc,shift+: 进入行末模式,输入new file2
执行结果:
上半部分是file2内容,下半部分是file1内容
Step3:可以通过 ctrl+w 在两个文件中间进行切换(图省略)
Step4:跳到file1中第一行执行复制命令yy
Step5:跳到file2中最后一行执行粘贴命令p
Step6:到行末模式下执行wq保存文件并退出,每执行一次关闭一个文件
二、 vi正则表达式:
表示内容的元字符
模式含义
.匹配任意字符
[abc]匹配方括号中的任意一个字符。可以使用-表示字符范围,如[a-z0-9]匹配小写字母和阿拉伯数字。
[^abc]在方括号内开头使用^符号,表示匹配除方括号中字符之外的任意字符。
/d匹配阿拉伯数字,等同于[0-9]。
/D匹配阿拉伯数字之外的任意字符,等同于[^0-9]。
/x匹配十六进制数字,等同于[0-9A-Fa-f]。
/X匹配十六进制数字,等同于[^0-9A-Fa-f]。
/w匹配单词字母,等同于[0-9A-Za-z_]。
/W匹配单词字母之外的任意字符,等同于[^0-9A-Za-z_]。
/t匹配<TAB>字符。
/s匹配空白字符,等同于[ /t]。
/S匹配非空白字符,等同于[^ /t]。
/a所有的字母字符. 等同于[a-zA-Z]
/l小写字母 [a-z]
/L非小写字母 [^a-z]
/u大写字母 [A-Z]
/U非大写字母 [^A-Z]
 
表示数量的元字符
模式含义
*匹配0-任意个
/+匹配1-任意个
/?匹配0-1个
/{n,m}匹配n-m个
/{n}匹配n个
/{n,}匹配n-任意个
/{,m}匹配0-m个
/_.匹配包含换行在内的所有字符
/{-}表示前一个字符可出现零次或多次,但在整个正则表达式可以匹配成功的前提下,匹配的字符数越少越好
/=匹配一个可有可无的项
/_s匹配空格或断行
 
表示转义和位置的元字符
模式含义模式含义
/*匹配 * 字符$匹配行尾
/.匹配 . 字符^匹配行首
//匹配 / 字符/<匹配单词词首
//匹配 / 字符/>匹配单词词尾
/[匹配 [ 字符  
 
替换变量
在正规表达式中使用 /( 和 /) 符号括起正规表达式,即可在后面使用/1、/2等变量来访问 /( 和 /) 中的内容。
懒惰模式
/{-n,m} 与/{n,m}一样,尽可能少次数地重复
/{-} 匹配它前面的项一次或0次, 尽可能地少
/| "或"操作符
/& 并列
三、 vi查找替换
首先进入行末模式
查找:
模式含义
/abc查找含有abc的行
/^abc查找开头是abc的行
/abc$查找结尾是abc的行
/a[ab]c查找aac或者abc
/a[^b]c查找除abc之外的所有a*c
/a.*c查找含有a*c的行,.*是最长匹配
/a[0-9]c查找含有 “a任一数字c” 的行
/a[0-9a-z]c查找含有 “a任一数字或者小写字母c” 的行
 
替换:(abc和def可以为正则表达式)
模式含义
s/abc/def/将所在行的第一个abc替换成def
s/abc/def/g将所在行的所有abc替换成def
%s/abc/def/g将所有的abc替换成def
start,end s/abc/def/g将start和end行之间的abc替换成def
 
只要熟悉了正则表达式,就可以很容易的实现想要的查找功能
四、 Grep使用场景及常用命令
Grep是要在一个文件中过滤出需要的行或者单词
Grep “abc” file 在file中查找abc,过滤出所有包含abc的行
Grep 常用的命令选项:
选项含义
-e正则表达式
-i忽略大小写
-o只输出匹配到的字符串
-v输出未匹配到的行
-c输出匹配到的行数量
-l输出匹配到的文件,文件名可以是正则表达式
五、 Awk使用场景及常用命令
Awk是一个行编辑工具,可以轻松地实现查找、替换、输出定制等功能
awk 用法:awk ‘ pattern {action} ‘
变量名&含义
变量名含义变量名含义
FILENAME当前输入文件名NR当前文件中的记录号
FS输入域分隔符,默认为一个空格RS输入记录分隔符
NF当前记录里域个数NR到目前为止记录数
OFS输出域分隔符ORS输出记录分隔符
 
命令&含义
命令含义
Awk ‘/abc/’ file输出包含abc的行
Awk ‘/abc/,/def/ ’file输出包含abc和def的行
Awk ‘{FS=”/t”} {print $0}’ file文件以tab分隔,输出整行
Awk ‘{FS=”/t”} {print $1}’ file文件以tab分隔,输出第一列
Awk ‘{FS=”/t”} {print $1”/t”$2}’ file文件以tab分隔,输出第一列第二列,输出以/t分隔
Awk ‘{FS=”/t”} if($1>10){print $0}’ file文件以tab分隔,输出第一个列大于10的行
Awk ‘{FS=”/t”} if($1>$2){print $0}’ file文件以tab分隔,输出第一列大于第二列的行
Awk ‘{FS=”/t”} if($1%5==0){print $0}’ file文件以tab分隔,输出第一列与5取模为0的行
Awk ‘$2>5 && $2<=15’ file输出第二列大于5小于等于15的行
Awk ‘$1~/abc/ {print $0}’ file显示第一个域匹配abc的行
awk ‘BEGIN{a=1;} {if(a%2==0){print $0;}a++;}’输出偶数行
awk ‘{FS=”/t”} {if($1==”abc”){$1=”def”; print $0}}’将abc替换成def并输出
 
六、 sed使用场景及常用命令
sed也是一个行编辑工具,主要实现的功能是替换、定制化输出,很多功能和awk都是重叠的,一般都是用其做替换。
命令&含义
命令含义
Sed –e “s/abc/def/g” file将abc替换成def,然后输出,-e表示使用正则表达式
Sed –i “s/abc/def/g” file将abc替换成def,不输出,-i表示直接对文件进行操作
Sed –e “s/abc/def/g; s/aaa/bbb/g”进行多处替换,将abc替换成def,将aaa替换成bbb
Sed –e “/abc/d” file将匹配abc的行删除
Sed –e “1d”删除第一行
Sed –e “1,10d” file将第1行至第10行进行删除
Sed –e “1,$d” file将第1行至最后一行进行删除
 
七、 Cat使用场景及常用命令
将文件打印到屏幕上,当要输出而不是编辑文件的时候建议使用改命令
Cat file1 >> file2 将file1的内容追加到file2尾部
Cat file1 file2 > file3 将文件file1和file2合成为file3
Cat file1 file2 根据次序显示file1和file2的内容
八、 Man
查看linux命令的帮助文档,如:
Man ls
Man cd
九、 Mv
用户可以使用mv命令为文件或目录改名或将文件由一个目录移至另一个目录。
Mv file1 file2 文件file1命名为file2
Mv file1 dir1/ 文件file1移到文件夹file2
Mv dir1 dir2/ 如果不存在目录dir2,目录dir1命名为dir2,否则会移到dir2下面
十、 Cp
拷贝文件
Cp file1 file2 将file1拷贝为file2
Cp –r dir1 dir2 将目录dir1拷贝为dir2
十一、 Ps
查看当前进程
Ps xf 以进程目录树的形式查看目前用户下的进程
Ps aux 查看所有的进程
十二、 Curl
Curl可以模拟多种协议的请求,如:
FTP, FTPS, HTTP, HTTPS, GOPHER, TELNET, DICT, FILE 以及 LDAP
一般我们使用http请求
Curl –s http://www.taobao.com
十三、 Ssh
远程链接,链接的时候需要指定用户名和密码,如:
Ssh admin@192.168.1.1
也可以Ssh到远程机器上执行命令
Ssh admin@192.168.1.1 “ls”
十四、 Scp
远程传输工具,和ssh类似
Scp admin@192.168.1.1:~/file file
将远程机器上的file文件传输到本地
也可以
Ssh file admin@192.168.1.1:~/file
将本地的file文件传输到远程机器
Linux常用命令集锦:
命令含义
ls –ltr *按照修改时间来显示文件
find . –type f当前目录下查找普通文件
find . –name “file” | xargs –n1 grep “abc”当前目录下按照名字查找文件file并从中查找字符串abc
du –sh *查看文件大小
df –h查看磁盘空间
top查看机器运行状况
historydiff file1 file2查看历史命令查看两个文件的差异
vimdiff file1 file2比较并编辑两个文件
head –n file查看一个文件的前n行
tail –n file查看一个文件的后n行
tail –f file一直查看文件的变化(当文件的内容一直发生变化是,该命令能一直显示最新的内容)
sort file按照字母进行排序
sort –n file按照数字进行排序
sort –n –r file按照数字逆序排序
sort –u file按照字母排序并对结果进行uniq操作
sort –n –u file按照数字排序并对结果进行uniq操作
原文地址:http://qa.taobao.com/?p=7389
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息