Linux 基础
Vim
仅仅列举一些相对基础的操作动作
编辑模式
主要用来移动光标,以及删除,复制粘贴
ctrl+f 在文件中前移一页(相当于 page down);
ctrl+b 在文件中后移一页(相当于 page up);
H 将光标移到屏幕上的起始行(或最上行);
M 将光标移到屏幕中间;
L 将光标移到屏幕最后一行。
0 数字0,左移光标到本行的开始;
$ 右移光标,到本行的末尾;
^ 移动光标,到本行的第一个非空字符。
gg 将光标定位到文件第一行起始位置;
G 将光标定位到文件最后一行起始位置;
NG或Ngg 将光标定位到第 N 行的起始位置。
/str1 正向搜索字符串 str1;
n 继续搜索,找出 str1 字符串下次出现的位置;
N 继续搜索,找出 str1 字符串上一次出现的位置;
Vim常规的删除命令是 d、 x (前者删除 行 ,后者删除 字符 )
d$ 从当前光标起删除字符直到行的结束;
d0 从当前光标起删除字符直到行的开始;
Vim常规的替换命令有 c 和 s cw 用输入的正文替换光标右侧的字; cd 用输入的正文替换光标的所在行; ncd 用输入的正文替换光标下面的 n 行; c$ 用输入的正文替换从光标开始到本行末尾的所有字符; c0 用输入的正文替换从本行开头到光标的所有字符。
粘贴
p 小写字母 p,将缓冲区的内容粘贴到光标的后面;
P 大写字母 P,将缓冲区的内容粘贴到光标的前面。
yy 复制当前行到内存缓冲区;
nyy 复制 n 行内容到内存缓冲区;
5yy 复制 5 行内容到内存缓冲区;
u 撤消前一条命令的结果;
. 重复最后一条修改正文的命令。
插入模式
i 在光标左侧插入正文
a 在光标右侧插入正文
o 在光标所在行的下一行增添新行
O 在光标所在行的上一行增添新行
I 在光标所在行的开头插入
A 在光标所在行的末尾插入
esc退出插入模式
命令模式
编辑模式输入:进入命令模式
在已经启动的Vim中打开一个文件需要用 :e 命令:
:e path_to_file/filename
保存当前编辑的文件需要用 :w 命令(单词 write 的缩写):
:w
将当前文件另存为 file_temp 则:
:w file_temp
在编辑模式下可以用 ZZ 命令退出Vim编辑程序,该命令保存对正文所作的修改,覆盖原始文件。如果只需要退出编辑程序,而不打算保存编辑的内容,可用下面的命令:
: q 在未作修改的情况下退出;
: q! 放弃所有修改,退出编辑程序
:345 将光标移到第 345 行
:345w file 将第 345 行写入 file 文件
:3,5w file 将第 3 行至第 5 行写入 file 文件
:1,.w file 将第 1 行至当前行写入 file 文件
:.,$w file 将当前行至最后一行写入 file 文件
:.,.+5w file 从当前行开始将 6 行内容写入 file 文件
:1,$w file 将所有内容写入 file 文件,相当于 :w file 命令
:r file 读取 file 文件的内容,插入当前光标所在行的后面
:/str/w file 正向搜索,并将第一个包含字符串 str 的行写入 file 文件、
:%s/str1/str2/ 用字符串 str2 替换行中首次出现的字符串 str1
:s/str1/str2/g 用字符串 str2 替换行中所有出现的字符串 str1
:.,$ s/str1/str2/g 用字符串 str2 替换正文当前行到末尾所有出现的字符串 str1
:1,$ s/str1/str2/g 用字符串 str2 替换正文中所有出现的字符串 str1
:g/str1/s//str2/g 功能同上
:m,ns/str1/str2/g 将从m行到n行的str1替换成str2
从上述替换命令可以看到:
1. g 放在命令末尾,表示对搜索字符串的每次出现进行替换,不止匹配每行中的第一次出现;不加 g,表示只对搜索字符串的首次出现进行替换;g 放在命令开头,表示对正文中所有包含搜索字符串的行进行替换操作;
2. s 表示后面跟着一串替换的命令;
3. % 表示替换范围是所有行,即全文。
基本程序
more/pg/less 逐屏显示文件
/pattern 模式匹配
/继续查找匹配
more :空格显示上一屏,回车上滚一行 pg:回车下一屏,l上滚一行
cat与od:列出文件内容
od: -t x1选项:以十六进制打印文件各字节
-c逐个、字符打印文件
head与tail
tail -f debug.txt
实时打印文件尾部被追加的内容(选项-f:forever)
head -15 ab.c
显示文件ab.c中前15行
wc:字计数
列出文件中一共有多少行,有多少个单词,多少字符
sort:对文件内容排序
-n选项(Numberic),对于数字按照算术值大小排序,而不是按照字符串比较规则
tee:三通
将从标准输入stdin得到的数据抄送到标准输出stdout显示,同时存入磁盘文件中
grep/egrep/fgrep
grep在文件中查找字符串
grep 模式 文件名列表
使用正则的时候可以‘’,单引号引起来
-E选项,可以使用扩展的正则表达式
egrep在文件中查找字符串
使用拓展的正则表达式,比如+ ?,限定重复次数{m,}
fgrep:快速grep
只能匹配字符串,不能使用正则
选项
-n 显示时每行前面显示行号 -v 显示所有不包含模式的行 -i 字母比较时忽略字母的大小写
tr:翻译字符
tr string1 string2
把stdin拷贝到stdout,string1中出现的字符替换为string2中的对应字符
两文件逐字节比较:cmp
求出两个文件的差别:diff
-b
逐行比较两个文件时忽略每行结尾处的多余空格
-e
为UNIX的行编辑程序ed生成脚本文件。ed命令使用这个脚本文件编辑file1文件,就可以变成文件file2
awk:文本处理语言
awk '程序' 文件名列表
其中程序:条件{动作}
awk是对于文本进行处理的,文本每行是一个记录,列是一个域
变量:
- NR 当前记录的编号
- $0 当前记录
- $1,$2.....域
- FILENAME 当前的文件名
条件: - 关系运算 - 正则表达式/regex/ - BEGIN END
动作:
- print 变量1, 变量2,……
- printf(”格式串”,变量1,变量2,……)
举例
awk '/^ *zhang / {printf("%s ", $2)}' filename
awk '$1 > 2000 { print $2 }' filename
注意‘’的使用
相关补充
pwd当前工作目录
env查看环境变量