本文是Linux命令行大全这本书第12章之后的阅读笔记部分。

VI简介

数字0 跳转至本行开头
Shift + 4 跳转至本行末尾
Shift + G 跳转至文件最后一行
dd 删除当前行
5dd 删除当前行和之后的4行
dG 删除当前行到文件末尾
d20G 删除从当前行至20行

复制命令

yy 复制当前行
5yy 复制当前行和之后4行
yG 复制当前行到文件末尾
y20G 复制当前行到文件第20行

合并行

将光标置于要合并的前一行,然后输入J,将完成合并,中间用空格分割。
搜索:
/字符串

全局搜索和替换:

:%s/查找字符串/替换新字符串/g
:%s/Line/line/g
将文件中的Line替换为line
如果在命令后加c,则每次替换都需要用户确认
:%s/Line/line/gc

编辑多个文件

vi file1 file2
默认显示file1,通过:n切换到下一个文件,:N切换到上一个文件。切换文件时,vi要求用户必须先保存对当前文件呕出的修改才能切换到其它文件。
使用:buffers命令可以查看正在编辑的文件列表
buffer 加文件编号可以切换到另一个文件,注意这个命令没有s.

>G 命令会增加从当前行到文档末尾处的缩进层级。

载入更多的文件

在现有的编辑会话中载入更多文件,使用:e命令。
vi foo.txt 然后:e ls-output.txt 此时屏幕将切换为文件ls-output.txt的内容,第一个文件仍然处在编辑状态,可以通过命令buffers查看。
定制提示符 提示符由名为PS1的环境变量定义,echo $PS1,可以看到PS1的值为[\u@\h \W]$ shell提示符中使用的转义字符

文件搜索

locate命令通过快速搜索数据库,以寻找路径名与给定子字符串相匹配的文件,同时输出所有匹配结果。
find ~列出当前用户主目录~下文件清单。此列表输出以标准输出,所以可以直接将此输出结果作为其他程序的输入。
find ~ | wc -l 使用该命令来计算find命令搜索到的该目录下文件的总量。
通过-type可以指定我们搜索文件的类型:

b   块设备文件
c   字符设备文件
d   目录
f    普通文件
l    符号链接

例如我们要搜索当前用户主目录下所有目录文件的个数:
find ~ -type d | wc -l
查找所有符合*.JPG通配符格式以及大小超过1MB的普通文件:
find -type f -name "*.JPG" -size +1M | wc -l
find命令支持多种test参数,我们以-perm mode为例进行讲解。
-perm mode寻找访问权限与给定模式匹配的文件或目录。既定模式可以八进制或符号形式表示。
例如我们要查找文件的访问权限为755的文件,可以使用如下命令:
find -type f -perm 755
下面的例子比较复杂,是查找对应的文件的访问权限不是600,或者目录的访问权限不是700
find ~(-type f -not -perm 0600) -or (-type d -not -perm 0700)
由于在shell环境中括号有特殊含义,所以我们必须对他们进行转义以防shell试图编译他们。
find ~产生了一个包含当前用户目录下所有文件和子目录的列表,-print是默认的。
find命令可以删除满足特定条件的文件,如下命令将删除当前用户下所有的.BAK文件
find ~ -type f -name '*.BAK' -delete
删除之前可以先打印要删除的内容,防止文件误删。
find ~ -type f -name '*.BAK' -print
每个test与action选项之间默认的逻辑关系是与(and),下面的命令等同于find ~ -type f -name '*.BAK' -delete
find ~ -type f -and -name '*.BAK' -and -delete

压缩算法

压缩算法一般分为两大类:无损压缩和有损压缩。
无损压缩保留文件中的所有数据,这种压缩方式还原时,还原后的文件与源文件一致。
有损压缩为了实现更大程度的压缩而删除了某些数据信息,因而这种压缩方式还原时,还原后的文件与源文件不一致。
JPEG(图像压缩技术)和MP3(音频压缩技术)是典型的有损压缩实例。
下面介绍无损压缩,因为计算机上的大多数数据无法容忍任何数据损失。
gzip命令用于压缩一个或更多文件。执行命令后,源文件会被其压缩文件取代。
gunzip命令将压缩文件还原为源文件。还原文件后,将删除压缩文件。

下面的命令创建了一个目录列表的压缩版本:
ls -l /etc | gzip >foo.txt.gz
如果想要查看某个压缩文件的内容,可以使用如下命令:
gunzip -c foo.txt | less
-c的意思是将输出内容写道标准输出端口并且保持原有文件。
zcat foo.txt.gz | less与上面实现的功能一样.
在上面的例子中我们可以看出,gunzip命令用于解压gzip的压缩文件,并且默认解压缩后缀为.gz的文件,所以没有必要明确指定,只要指定名与已存在的非压缩文件名不冲突就可以了。

sort命令

sort默认使用使用字典排序,即111111排在2前面,添加-n选项后就会compare according to string numerical value。
-t选项与-k选项配合,-t选项可以指定分隔符,-k选项是按照-t选项划分出来的第k个选项,sort将按照第k个选项进行排序。