Linux 高手都是键盘侠,命令速查,命令学习,命令练习(二)查看文件内容,文件压缩和解压

964 阅读19分钟

Linux 曾经是许多新人的“噩梦”,当你真的面对它、了解它时你会发现命令的操作方式才是最纯粹最高效的操作方式。Linux并不复杂,只是不符合人类对实物操作的“直觉”,只要适应一段时间就好。这里梳理了我们在使用linux时常用的命令和这些命令的用法与使用场景,我们不用全部死记硬背,只需简单过目留个印象,并在遇到相同使用场景时来速查便可。只要稍微有一点计算机的基础、经过几次Linux的实践,你会发现它并没有那么可怕,反而会觉得它很高效,很直接,享受这个过程吧~

如果内容对大家有帮助,请大家【点赞】【收藏】,给予作者鼓励,感谢阅读。

3 查看文件内容

cat- 连接文件并打印到标准输出

cat 命令用于连接文件并打印到标准输出。cat 的基本语法是:

cat 文件路径

例如:

cat a.txt
# 打印 a.txt 文件的内容

cat a.txt b.txt 
# 打印 a.txt 和 b.txt 文件内容合并的结果

cat > c.txt 
# 从标准输入读取内容,并保存到 c.txt 文件

cat 命令常用来:

  1. 打印文件内容:cat a.txt
  2. 合并打印多个文件内容:cat a.txt b.txt
  3. 从标准输入创建文件:cat > c.txt,然后输入内容,用 Ctrl+D 结束例如:
cat > c.txt 
# 输入内容:
hello 
world
# Ctrl+D

cat c.txt 
# hello 
# world

我们输入的内容被保存在了 c.txt 文件中。

  1. 追加内容到文件:cat >> c.txt例如先 cat c.txt,得到:
hello 
world

然后:


cat >> c.txt 
# 输入:
this 
is
# Ctrl+D

cat c.txt
# hello  
# world
# this
# is

我们输入的内容被追加到 c.txt 文件中。所以,cat 命令可以:

  1. 打印文件内容
  2. 合并并打印多个文件
  3. 从标准输入创建文件和追加内容到文件

tac- 反向打印文件的内容。

tac 命令是 cat 命令的反向,它会从最后一行开始打印文件内容。tac 的基本语法是:

tac 文件路径

例如:

cat a.txt 
# hello
# world 
# this 
# is

tac a.txt
# is 
# this  
# world
# hello

可以看到,cat 命令从上到下打印 a.txt 文件内容,而 tac 命令从下到上打印内容。tac 主要用来:1. 反向打印文件内容。如果要看某日志文件中的最后几行,tac 命令很有用。2. 反向输出文件内容。例如:

cat a.txt | tac 
# is 
# this  
# world
# hello 

这会将 a.txt 文件正常顺序输出,然后反向输出。3. 合并多个文件,并反向输出:

tac a.txt b.txt c.txt
# 会将 a.txtb.txt 和 c.txt 文件内容反向合并输出

所以,tac 命令主要用于:

  1. 反向打印单个或多个文件的内容
  2. 与 cat 命令组合,实现正常顺序和反向顺序输出这在需要查看文件内容的最后几行,或需要反向输出内容的场景下非常有用。

more - 分页显示文件内容

more 命令用于分页查看文件内容,它可以让用户一页一页的浏览文件内容。more 的基本语法是:

more 文件路径

例如:

more a.txt
# 会以一页一页的方式打印 a.txt 文件的内容

当我们运行 more a.txt 时:

  1. 会先打印文件的第一页内容。
  2. more 会停在页底,提示:--More--,等待用户输入。
  3. 用户可以输入以下命令:- 空格键:向下翻一页

- Enter:向下翻一行 - b:向上翻一页 - q:退出 more - 其它命令如 /字符串:向下搜索字符串4. 根据用户输入,more 会继续打印下一页内容,或者退出。所以,more 命令主要用来:- 分页查看文件内容,避免文件内容一次性打印太多阅读不方便。 - 通过 more 提供的简单命令,可以翻页、一行一行向下移动,或搜索内容等。 - 与 cat 命令相比,more 适合查看较大文件的内容。例如一个 100 行的文件,用 cat 打印会一次显示所有的内容,而用 more 可以一页(如30行)一页的浏览。当文件内容较长不方便一次性阅读时,more 提供了一个简单方便的分页查看命令。这在处理大文件时可以很好地提高工作效率,是 Linux 中非常实用的命令。

less- 以交互方式浏览文件内容

less 命令是 more 命令的增强版本,它用于分页查看和浏览文件内容。less 的基本语法是:

less 文件路径

例如:

less a.txt
# 会以一页一页的方式打印 a.txt 文件的内容

当我们运行 less a.txt 时:

  1. 会先打印文件的第一页内容。
  2. less 会停在页底,提示用户输入命令。
  3. 用户可以输入更丰富的命令:- 空格键:向下翻一页

- b:向上翻一页 - q:退出 less - g:跳到文件头 - G:跳到文件尾 - /字符串:向下搜索字符串 - ?字符串:向上搜索字符串 - n:重复上一个搜索 - p:翻上一页 - 等更多命令

根据用户输入,less 会翻页、搜索等。所以,less 命令相比 more 命令,主要增强在:- 更丰富的页面翻页、跳转命令:可以跳到头尾、上下页等 - 更强大的搜索功能:支持向上搜索、重复搜索等 - 支持回滚:可以随时回滚到上一页 - 其它功能:支持标记、复制、备份文件查看等例如,less 可以很方便的在一个大文件中快速搜索和翻阅我们需要的内容,这在提高工作效率方面有很大帮助。less 命令在功能和易用性方面,都超过了 more 命令,是分页查看大文件的首选命令。它是 Linux 运维者和开发人员必不可少的工具之一。

head- 显示文件的开头部分

head 命令用于打印文件头部的内容。head 命令的基本语法是:

head 文件路径

默认情况下,head 命令会打印文件的前 10 行内容。我们可以通过 -n 参数指定需要打印的行数,例如:

head -n 5 a.txt 
# 打印 a.txt 文件的前 5 行

head -n 20 b.log
# 打印 b.log 文件的前 20 行

head 命令常用于:

  1. 查看文件头部内容:我们可以很快了解文件开头的内容,比如文件的格式、主要内容等。
  2. 与 tail 命令结合使用,可以查看文件的开头、结尾内容:
head -n 10 a.txt | tail -n 5
# 查看 a.txt 的第 6-10 行

head -n 5 a.txt 
# 前 5 行

tail -n 10 a.log 
# 最后 10 行
  1. 实时监控日志文件:我们可以通过定期运行 head -n 10 some.log 命令来实时看到最新的日志内容。head 命令主要用于,查看文件头部内容,指定打印的行数。
  2. 与 tail 结合使用,可以选择文件的部分内容查看。
  3. 实时监控日志文件的新内容head 命令让我们有选择地查看文件头部内容,这在排查问题、实时监控日志等方面有很大帮助。它与 tail 命令一起,可以让我们更加灵活地查看文件内容,是 Linux 文本处理中非常有用的工具。

tail- 显示文件的末尾部分

tail 命令用于打印文件尾部的内容。tail 命令的基本语法是:

tail 文件路径

默认情况下,tail 命令会打印文件的最后 10 行内容。我们可以通过 -n 参数指定需要打印的行数,例如:

bash
tail -n 5 a.txt 
# 打印 a.txt 文件的最后 5 行

tail -n 20 b.log
# 打印 b.log 文件的最后 20 行

tail 命令常用于:

  1. 查看文件尾部内容:我们可以很快了解文件结尾的内容,比如最近更改等。
  2. 与 head 命令结合使用,可以查看文件的开头、结尾内容:
head -n 10 a.txt | tail -n 5 
# 查看 a.txt 的第 6-10 行 

head -n 5 a.txt
# 前 5 行

tail -n 10 a.log
# 最后 10 行
  1. 实时监控日志文件:我们可以通过 tail -f some.log 命令来实时看到日志新增的内容。

  2. 备份和还原机制:通过 tail 命令也可实现基本的备份和还原功能。

  3. 与 head 结合使用,可以选择文件的部分内容查看。

  4. 实时监控日志文件新增内容。

  5. 实现基本的备份和还原功能tail 命令让我们有选择地查看文件尾部内容,尤其是监控日志文件,这在排查问题和故障发现方面有很大帮助。它与 head 命令一起,可以让我们更加灵活地查看文件内容,是 Linux 文本处理中必不可少的工具。

cut- 从行中剪切出指定的字段

cut 命令用于截取文件中的列 (字段)。cut 命令的基本语法是:

cut [选项] 文件

常用选项有:

  1. -f:选取字段,按字段编号提取
  2. -d:自定义分隔符,默认是制表符\t
  3. -c:按字符编号提取例如,有这样一个文件 a.txt:
name    age   gender 
john    22    male
mary    20    female
tom     25    male 
  1. 按字段提取:
cut -f 1 a.txt 
# name 
# john   
# mary
# tom

cut -f 2 a.txt
# age
# 22
# 20
# 25

这会提取 a.txt 文件的第一列和第二列。2. 按字符范围提取:

cut -c 1-3 a.txt 
# nam
# joh 
# mar
# tom

这会提取每行的前 3 个字符。3. 指定自定义分隔符:如果文件使用 | 分隔,而不是空格,我们可以:

cut -d '|' -f 1 a.txt 
# 按 | 分隔,提取第一列

cut 命令主要用于:

  1. 按照列号或者字符位置,提取文件中的字段或字符
  2. 支持自定义分隔符,不只局限于空格分隔

常与其它命令如 awk、sort 等结合, implementing 较为复杂的文本处理cut 是 Linux 中一个重要的文本处理工具,熟练掌握和运用 cut 可以大大提高工作效率。

split - 分割文件为较小的部分

split 命令用于分割文件。它的基本语法是:split [选项] 文件名例如:

  1. split -b 100k 大文件 这会将大文件分割成多个大小为100kB的文件,文件名为xaa, xab, xac等。代码示例:
$ split -b 100k 大文件 

这会生成文件xaa, xab, xac等。 解释:使用-b选项以100kB为单位分割大文件。

  1. split -l 100 大文件 前缀 这会将大文件分割成多个每100行一个文件的文件,文件名为前缀00,前缀01,前缀02等。代码示例:
$ split -l 100 大文件 前缀

这会生成文件前缀00, 前缀01, 前缀02等。 解释:使用-l选项以100行为单位分割大文件,并指定分割后的文件名前缀为“前缀”。

  1. split -d 大文件
    这会将大文件分割成多个文件,文件名为大文件00,大文件01,大文件02等。使用数字作为后缀。代码示例:
bash
$ split -d 大文件 

这会生成文件大文件00, 大文件01, 大文件02等。 解释:使用-d选项分割大文件,并自动使用数字作为后缀。

paste- 将多个文件按列粘贴在一起

paste 命令用于合并文件。它的基本语法是: paste [选项] 文件1 文件2 ...它将多个文件中的相应行合并在一起。主要选项有: -d 分隔符 :指定合并行时使用的分隔符,默认为 TAB。

例如: 1. paste file1 file2 这会将file1和file2中的相应行合并,使用TAB作为分隔符。代码示例:

$ paste file1 file2

解释:默认使用TAB作为分隔符,合并file1和file2中的对应行。

  1. paste -d "," file1 file2 这会将file1和file2中的相应行合并,使用,作为分隔符。代码示例:
bash
$ paste -d "," file1 file2

sort - 对文件内容进行排序

sort 命令用于排序文件中的行。它的基本语法是:sort [选项] 文件名它将文件名中的内容按字母顺序排列。主要选项有:

-n :按数字排序。

-r :反向排序。

-u :去重,只保留重复的行。

-t 分隔符 :指定排序时使用的分隔符,默认为空格。

例如 1. sort file 这会将file中的内容按字母顺序排列。代码示例:

$ sort file

解释:默认按字母顺序对file中的内容排序。

例子 2. sort -n file 这会将file中的内容按数字顺序排序。 代码示例:

$ sort -n file

解释:使用-n选项按数字顺序排序file中的内容。

例子 3. sort -r file 这会将file中的内容按相反的字母顺序排序。代码示例:

$ sort -r file 

解释: 使用 -r 选项按相反的字母顺序排序file中的内容。 例子: file:

c a b 3 2 1

$ sort file

结果: a b c 1 2 3

$ sort -n file

结果: 1 2 3 a b c

$ sort -r file

结果: 3 2 1 c b a

uniq- 显示或过滤重复行

uniq 命令用于报告或删除文件中的重复行。它的基本语法是: uniq [选项] [输入文件] [输出文件]它会删除输入文件中的重复行,并将结果写入输出文件。主要选项有:

-c :报告每行出现的次数。

-d :只报告重复行。

-u :只报告非重复行。

例如: 1. uniq file 这会删除file中的重复行,并将结果写入file。 代码示例:

$ uniq file 

解释:删除file中的重复行。

例如 2. uniq -c file 这会报告file中的每行出现的次数。 代码示例:

$ uniq -c file

解释:报告file中每行出现的次数,不删除重复行。

例如 3. uniq -d file 这会只报告file中的重复行。 代码示例:

$ uniq -d file  

解释:只报告file中的重复行,不删除重复行。 例子: file: a a b b
c c c

uniq file

结果: a b c

uniq -c file

结果:
2 a 2 b
3 c

uniq -d file

结果: a b c

wc- 统计文件的字数、行数和字符数

wc 命令用于统计文件中的行数、单词数和字节数。它的基本语法是:wc [选项] 文件名它会统计文件名中的行数、单词数和字节数。主要选项有:

-l :只显示行数。

-w :只显示单词数。

-c :只显示字节数。

例如 1. wc file 这会显示file中的行数、单词数和字节数。代码示例:

$ wc file

解释:显示file的行数、单词数和字节数。

例如 2. wc -l file 这会只显示file中的行数。代码示例:

$ wc -l file

解释:只显示 file 中的行数。

例如 3 wc -w file这会只显示file中的单词数。 代码示例:

$ wc -w file

解释:只显示file中的单词数。例子: file: Hello World! How are you? I'm fine。

wc file

结果: 3 10 30

wc -l file

结果: 3

wc -w file 

结果: 10

解释:

- 3行 - 10个单词 - 30个字节

iconv - 转换文件的字符编码

iconv 命令用于转换文件中的字符编码。它的基本语法是:iconv -f orig_encoding -t new_encoding input_file > output_file它会将input_file中的字符编码从orig_encoding转换成new_encoding,并将结果写入output_file。

例如:1. iconv -f GBK -t UTF-8 input.txt > output.txt 这会将input.txt中的GBK编码转换成UTF-8编码,并将结果写入output.txt。代码示例:

$ iconv -f GBK -t UTF-8 input.txt > output.txt

解释:将GBK编码的input.txt转为UTF-8编码的output.txt。

例如 2. iconv -f ISO-8859-1 -t UTF-8< input.txt > output.txt 这会将input.txt中的ISO-8859-1编码转换成UTF-8编码,并将结果写入output.txt。代码示例:

$ iconv -f ISO-8859-1 -t UTF-8< input.txt > output.txt

解释:将ISO-8859-1编码的input.txt转为UTF-8编码的output.txt。

dos2unix - 将 DOS/Windows 格式的文件转换为 Unix 格式

dos2unix 命令用于将文本文件中的换行符从CRLF转换成LF。它的基本语法是:dos2unix [选项] [文件名]它会将文件名中的换行符从CRLF(\r\n,Windows格式)转换成LF(\n,Unix格式)。主要选项有:

-u 或 --unix :将CRLF转换成LF。

-d 或 --dos :将LF转换成CRLF。

例如:1. dos2unix file.txt 这会将file.txt中的CRLF转换成LF。代码示例:

$ dos2unix file.txt 

解释:将Windows格式的file.txt转换成Unix格式。

例如 2. dos2unix -u file.txt 这也会将file.txt中的CRLF转换成LF。代码示例:

$ dos2unix -u file.txt

解释:同上,-u选项指定转换为Unix格式。

diff\ - 比较两个文件的差异

diff 命令用于比较文件之间的差异。它的基本语法是:diff [选项] 文件1 文件2它会比较文件1和文件2的差异,默认以行为单位显示不同处。主要选项有:

-y :以字符为单位显示不同处。

-b :忽略比较中出现的空格。

-w :忽略比较中出现的空格,TAB和换行。

例如 1. diff file1 file2 这会比较file1和 file2的差异,默认以行为单位显示不同处。 代码示例:

$ diff file1 file2 

例如 2. diff -y file1 file2 这会以字符为单位显示file1和file2的差异。 代码示例:

$ diff -y file1 file2

例如 3. diff -b file1 file2 这会忽略比较中出现的空格,比较file1和file2的差异。代码示例:

$ diff -b file1 file2

例子:

file1: Hello World! Good Luck!

file2: HelloWorld! GoodLuck!

$ diff file1 file2

结果: 2c2 < Luck! ---

Luck!

解释:第2行不同,file1有空格,file2无空格。

$ diff -b file1 file2

无输出解释:忽略空格,file1和file2无实际差异。

vimdiff - 使用 Vim 的差异模式比较文件

vimdiff 命令用于比较并编辑文件之间的差异。它的基本语法是:vimdiff [选项] 文件1 文件2它会在vim编辑器中打开文件1和文件2,并标出两者的差异,允许你直接编辑两者的不同部分。主要选项有:

-d auction :设置diff算法。默认为 patience算法。

-w :设置窗口宽度。

-O :水平分割窗口。

例如: 1. vimdiff file1 file2 这会在vim中打开文件1和文件2,标出两者的差异。代码示例:

$ vimdiff file1 file2

解释:比较file1和file2的差异,在vim中直接编辑不同的部分。

例如 2. vimdiff -d algorithm file1 file2 这会使用指定的diff算法algorithm来比较file1和file2的差异。代码示例:

$ vimdiff -d patience file1 file2  

解释:使用patience算法比较file1和file2的差异,显示在vim中。

例如 3. vimdiff -O file1 file2这会使用垂直分割窗口比较file1和file2。代码示例:

$ vimdiff -O file1 file2

解释:比较file1和file2的差异,vim窗口垂直分割,文件并排显示。例子:同diff命令例子。vimdiff可以直接编辑显示的差异部分,方便修改后重新比较,直到文件一致。

rev- 反转文件中的字符顺序

rev 是一个 Linux 命令,它的功能是反转文件中的字符顺序,或反转字符串。例如:

# 反转文件内容
rev test.txt 

# 反转字符串
rev "hello"

输出:

olleh

列1 反转文件内容

bash
cat test.txt 
hello 
world

rev test.txt 
world
hello

列 2 反转字符串

bash
rev "hello"
olleh

列 3 结合其他命令使用

bash 
# 查看文件最后5行 
tail -n 5 test.txt | rev

# 删除文件最后5行
sed '1,5d' test.txt | rev > test1.txt 
rev test1.txt > test.txt

rev 命令通过反转文件的内容或字符串,可以与其他命令结合,实现一些实用的功能。

grep - 在文件中搜索指定的模式

grep 是一个 Linux 命令,它的功能是在文件中搜索字符串和正则表达式。

例1 : 搜索文件中包含指定字符串的行

cat test.txt 
hello 
world 
linux

grep "linux" test.txt
linux

输出中只包含包含 linux 的那一行。

例2: 搜索多个文件

grep "linux" test.txt test1.txt 

例3 搜索目录下所有文件

grep "linux" *

例4 搜索不包含指定字符串的行

grep -v "linux" test.txt 
hello
world  

例5 搜索忽略大小写

grep -i "Linux" test.txt 
linux

例6 搜索并显示行号

grep -n "linux" test.txt
3:linux

例7 搜索多个字符串

grep -e "hello" -e "world" test.txt 
hello
world

grep "hello|world" test.txt 
hello
world

grep 是一个强大的文本搜索工具,可以通过正则表达式和选项实现更强大的搜索功能,熟练使用 grep 能大大提高工作效率。

egrep- 在文件中使用扩展的正则表达式搜索模式

egrep 是 grep 的扩展版本,支持更加强大的正则表达式语法。

例子 1: 搜索多个字符串

egrep "hello|world" test.txt 
hello
world

例子 2:搜索范围

egrep "h[ae]llo" test.txt 
hello

例子 3:搜索指定次数的重复

egrep "o{2}" test.txt     # 搜索两个o的字符串
hello  
google
bash
egrep "o{2,5}" test.txt   # 搜索2-5个o的字符串
hello   
google  
wooooo 

例子4 : 搜索可选字符

egrep "colou?r" test.txt # 搜索color或colour
colour

例子5: 搜索零次或多次出现的字符

egrep "lo*" test.txt    # 搜索l后跟零个或多个o的字符串
l
lo
lol
hello
wooloo

例子6: 用定位符锚定搜索范围

bash
egrep "^hello" test.txt   # 搜索以hello开头的行
hello  

egrep "hello$" test.txt   # 搜索以hello结尾的行  
hello 

egrep 是一个功能强大的文本搜索工具,基于正则表达式实现灵活和高效的搜索。要真正掌握 egrep 还需要学习更深入的正则表达式知识。

join - 将两个文件中的行连接在一起

join 是一个 Linux 命令,它的功能是将两个文件根据共同的字段进行连接,即行级连接。

例1 : join 按默认的空格进行连接。

cat test1.txt 
1 hello 
2 world
3 linux

cat test2.txt
1 do
2 or 
3 not

join test1.txt test2.txt
1 hello do 
2 world or  
3 linux not

默认以空格为分隔符,将test1和test2文件中的行连接起来

例子2 :指定连接字段。

cat test1.txt 
1,hello 
2,world
3,linux

cat test2.txt
1,do
2,or
3,not

join -1 1 -2 1 test1.txt test2.txt
1,hello,do  
2,world,or
3,linux,not

-1 1 指定test1文件的连接字段为第1列 -2 1 指定test2文件的连接字段为第1列。连接结果中1,2列来自test1,第3列来自test2。

例子3 :连接未匹配行

cat test1.txt 
1,hello
2,world 
4,unix  

cat test2.txt
1,do  
3,not

join -a 1 test1.txt test2.txt
1,hello,do
2,world,
3,,not  
4,unix,

-a 1 代表将test1文件中未匹配的行连接,缺失的字段填充1个空格。

例子4:连接时忽略大小写

join -i test1.txt test2.txt 

-i 忽略连接字段的大小写差异join 是一个功能强大的用于行级连接的命令,熟练掌握join可以实现文件的合并、去重等功能,是Linux中的一个实用工具。

tr- 替换、删除或挤压字符

tr 是 Linux 中的一个转换命令,它的功能是替换、删除、压缩字符。

例1 :tr 命令替换字符

echo "hello" | tr 'e' 'a'
hallo

例2 : 删除字符

echo "hello" | tr -d 'e'
hllo

-d 代表删除,将 e 删除。

例子3:替换范围内字符

echo "hello" | tr 'a-z' 'A-Z'
HELLO

将 a-z 范围内的小写字母替换为 A-Z 范围内的大写字母。

例子4: 指定多个替换字符

echo "hello" | tr 'el' 'ip'
hippo

将 e 替换为 i,l 替换为 p。

例子 5: 压缩字符

echo "hello   world" | tr -s ' '
hello world

-s 代表压缩,将多个空格压缩为一个空格。

例子 6 :字符集

echo "hello" | tr 'a-z' '[:upper:]'
HELLO

[:upper:] 代表大写字母字符集, tr 支持多种字符集

vi/vim - 打开 Vim 编辑器

Vi 是一款常用的文本编辑器,在 Linux 中经常用于编辑和查看文件。它具有强大的功能和灵活的操作方式。下面是一些 vi 命令的用法以及一些代表性的例子:

  1. 打开文件:

    vi filename
    

    例如:vi file.txt 打开名为 "file.txt" 的文件。如果文件不存在,则会创建一个新文件。

下面是一些 vi 编辑器里常用的操作梳理:

Vi 是一款常用的文本编辑器,在 Linux 中经常用于编辑和查看文件。它具有强大的功能和灵活的操作方式。下面是一些 vi 命令的用法以及一些代表性的例子:

  1. 插入文本: 在 vi 的命令模式下按下 i 键,进入插入模式,可以开始编辑文本。
  2. 按 Esc 退出编辑模式。
  3. 保存文件: 在 vi 的命令模式下按下 :w,然后按 Enter 键,将文件保存。
  4. 退出 vi: 在 vi 的命令模式下按下 :q,然后按 Enter 键,退出编辑器。如果对文件进行了更改并且未保存,可以使用 :q! 强制退出而不保存更改。
  5. 保存并退出: 在 vi 的命令模式下按下 :wq,然后按 Enter 键,将文件保存并退出编辑器。
  6. 光标移动:
    • h: 将光标向左移动。
    • j: 将光标向下移动。
    • k: 将光标向上移动。
    • l: 将光标向右移动。
  7. 删除文本:
    • x: 删除光标所在位置的字符。
    • dd: 删除光标所在行。
    • ndd: 删除当前行及其后的 n-1 行。
  8. 搜索和替换:
    • /pattern: 在文件中向前搜索指定的模式。
    • ?pattern: 在文件中向后搜索指定的模式。
    • :s/old/new/g: 将当前行中的所有匹配项替换为新的文本。
    • :%s/old/new/g: 将文件中所有匹配项替换为新的文本。

这些是 vi 命令中的一些常见用法和示例。vi 还有许多其他功能和命令,可用于复制、粘贴、查找行号、跳转到指定行等操作。

4 文件压缩和解压

tar - 创建归档文件或提取归档文件的内容

Tar(tape archive)是一个在 Linux 命令行下常用的文件打包和压缩工具。它可以将多个文件或目录打包成一个单独的文件,并可以选择是否进行压缩。以下是 tar 命令的一些常见用法以及一些代表性的例子:

  1. 创建 tar 文件:

    tar -cvf archive.tar file1 file2 directory
    

    例如:tar -cvf archive.tar file1.txt file2.txt directory 将文件 "file1.txt"、"file2.txt" 和名为 "directory" 的目录打包成一个名为 "archive.tar" 的 tar 文件。

  2. 解压 tar 文件:

    tar -xvf archive.tar
    

    例如:tar -xvf archive.tar 将解压缩名为 "archive.tar" 的 tar 文件,将其中的文件和目录提取到当前目录。

  3. 压缩为 tar.gz 文件:

    tar -czvf archive.tar.gz file1 file2 directory
    

    例如:tar -czvf archive.tar.gz file1.txt file2.txt directory 将文件 "file1.txt"、"file2.txt" 和名为 "directory" 的目录打包成一个经过 gzip 压缩的 tar 文件 "archive.tar.gz"。

  4. 解压缩 tar.gz 文件:

    tar -xzvf archive.tar.gz
    

    例如:tar -xzvf archive.tar.gz 将解压缩名为 "archive.tar.gz" 的 tar.gz 文件,并将其中的文件和目录提取到当前目录。

  5. 列出 tar 文件内容:

    tar -tvf archive.tar
    

    例如:tar -tvf archive.tar 列出名为 "archive.tar" 的 tar 文件中的内容,包括文件和目录的详细信息。

  6. 追加文件到现有的 tar 文件:

    tar -rvf archive.tar newfile
    

    例如:tar -rvf archive.tar newfile.txt 将名为 "newfile.txt" 的文件追加到现有的 tar 文件 "archive.tar" 中。

unzip- 解压缩 ZIP 文件

在 Linux 命令行中,"unzip" 是一个常用的解压缩工具,用于解压缩 Zip 格式的压缩文件。下面是 unzip 命令的一些常见用法和代表性的例子:

  1. 解压缩 Zip 文件:

    unzip archive.zip
    

    例如:unzip archive.zip 将解压缩名为 "archive.zip" 的 Zip 文件,将其中的文件提取到当前目录。

  2. 解压缩指定文件到指定目录:

    unzip archive.zip file1 file2 -d /path/to/directory
    

    例如:unzip archive.zip file1.txt file2.txt -d /path/to/directory 将解压缩名为 "archive.zip" 的 Zip 文件中的 "file1.txt" 和 "file2.txt" 提取到指定目录 "/path/to/directory"。

  3. 解压缩并覆盖现有文件:

    unzip -o archive.zip
    

    例如:unzip -o archive.zip 将解压缩名为 "archive.zip" 的 Zip 文件,并强制覆盖现有的同名文件。

  4. 查看 Zip 文件内容列表:

    unzip -l archive.zip
    

    例如:unzip -l archive.zip 列出名为 "archive.zip" 的 Zip 文件中的文件列表。

  5. 解压缩并保留文件的权限和时间戳:

    unzip -K archive.zip
    

    例如:unzip -K archive.zip 将解压缩名为 "archive.zip" 的 Zip 文件,并保留文件的权限和时间戳。

  6. 解压缩密码保护的 Zip 文件:

    unzip -P password archive.zip
    

    例如:unzip -P secret archive.zip 将解压缩名为 "archive.zip" 的密码保护 Zip 文件,需要提供密码 "secret" 才能解压缩。

gzip - 压缩文件并生成以

在 Linux 命令行中,"gzip" 是一种常用的压缩工具,用于压缩文件并添加 ".gz" 扩展名。下面是 gzip 命令的一些常见用法和代表性的例子:

  1. 压缩文件:

    gzip file.txt
    

    例如:gzip file.txt 将文件 "file.txt" 压缩为 "file.txt.gz"。

  2. 压缩多个文件:

    gzip file1.txt file2.txt
    

    例如:gzip file1.txt file2.txt 将文件 "file1.txt" 和 "file2.txt" 分别压缩为 "file1.txt.gz" 和 "file2.txt.gz"。

  3. 压缩并保留原始文件:

    gzip -k file.txt
    

    例如:gzip -k file.txt 压缩文件 "file.txt" 并保留原始文件,生成 "file.txt.gz"。

  4. 压缩目录及其内容:

    gzip -r directory
    

    例如:gzip -r directory 压缩名为 "directory" 的目录及其内容,并在压缩后的文件名后面添加 ".gz" 扩展名。

  5. 解压缩文件:

    gzip -d file.txt.gz
    

    例如:gzip -d file.txt.gz 解压缩名为 "file.txt.gz" 的文件,恢复为 "file.txt"。

  6. 查看压缩文件信息:

    gzip -l file.txt.gz
    

    例如:gzip -l file.txt.gz 显示名为 "file.txt.gz" 的压缩文件的信息,包括压缩比率、原始文件大小等。

  7. 强制压缩文件(忽略警告):

    gzip -f file.txt
    

    例如:gzip -f file.txt 强制压缩文件 "file.txt",即使已存在同名的压缩文件。

zip - 创建 ZIP 归档文件

在 Linux 命令行中,"zip" 是一个常用的压缩工具,用于创建和管理 Zip 格式的压缩文件。下面是 zip 命令的一些常见用法和代表性的例子:

  1. 创建 Zip 文件:

    zip archive.zip file1 file2 directory
    

    例如:zip archive.zip file1.txt file2.txt directory 将文件 "file1.txt"、"file2.txt" 和名为 "directory" 的目录打包成一个名为 "archive.zip" 的 Zip 文件。

  2. 添加文件到现有的 Zip 文件:

    zip archive.zip newfile
    

    例如:zip archive.zip newfile.txt 将名为 "newfile.txt" 的文件添加到现有的 Zip 文件 "archive.zip" 中。

  3. 递归压缩目录及其内容:

    zip -r archive.zip directory
    

    例如:zip -r archive.zip directory 将名为 "directory" 的目录及其内容递归压缩到一个名为 "archive.zip" 的 Zip 文件中。

  4. 查看 Zip 文件内容列表:

    zip -sf archive.zip
    

    例如:zip -sf archive.zip 列出名为 "archive.zip" 的 Zip 文件中的文件列表。

  5. 解压缩 Zip 文件:

    unzip archive.zip
    

    例如:unzip archive.zip 解压缩名为 "archive.zip" 的 Zip 文件,将其中的文件提取到当前目录。

  6. 解压缩指定文件到指定目录:

    unzip archive.zip file1 file2 -d /path/to/directory
    

    例如:unzip archive.zip file1.txt file2.txt -d /path/to/directory 解压缩名为 "archive.zip" 的 Zip 文件中的 "file1.txt" 和 "file2.txt" 到指定目录 "/path/to/directory"。