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查看环境变量

原文地址:https://www.cnblogs.com/Coder-Pig/p/6599103.html