`
zhangym124
  • 浏览: 339770 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

linux学习心得(转)

阅读更多

一、 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操作
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics