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 命令常用来:
- 打印文件内容:cat a.txt
- 合并打印多个文件内容:cat a.txt b.txt
- 从标准输入创建文件:cat > c.txt,然后输入内容,用 Ctrl+D 结束例如:
cat > c.txt
# 输入内容:
hello
world
# Ctrl+D
cat c.txt
# hello
# world
我们输入的内容被保存在了 c.txt 文件中。
- 追加内容到文件: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 命令可以:
- 打印文件内容
- 合并并打印多个文件
- 从标准输入创建文件和追加内容到文件
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.txt、b.txt 和 c.txt 文件内容反向合并输出
所以,tac 命令主要用于:
- 反向打印单个或多个文件的内容
- 与 cat 命令组合,实现正常顺序和反向顺序输出这在需要查看文件内容的最后几行,或需要反向输出内容的场景下非常有用。
more - 分页显示文件内容
more 命令用于分页查看文件内容,它可以让用户一页一页的浏览文件内容。more 的基本语法是:
more 文件路径
例如:
more a.txt
# 会以一页一页的方式打印 a.txt 文件的内容
当我们运行 more a.txt 时:
- 会先打印文件的第一页内容。
- more 会停在页底,提示:--More--,等待用户输入。
- 用户可以输入以下命令:- 空格键:向下翻一页
- 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 时:
- 会先打印文件的第一页内容。
- less 会停在页底,提示用户输入命令。
- 用户可以输入更丰富的命令:- 空格键:向下翻一页
- 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 命令常用于:
- 查看文件头部内容:我们可以很快了解文件开头的内容,比如文件的格式、主要内容等。
- 与 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 行
- 实时监控日志文件:我们可以通过定期运行 head -n 10 some.log 命令来实时看到最新的日志内容。head 命令主要用于,查看文件头部内容,指定打印的行数。
- 与 tail 结合使用,可以选择文件的部分内容查看。
- 实时监控日志文件的新内容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 命令常用于:
- 查看文件尾部内容:我们可以很快了解文件结尾的内容,比如最近更改等。
- 与 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 行
-
实时监控日志文件:我们可以通过 tail -f some.log 命令来实时看到日志新增的内容。
-
备份和还原机制:通过 tail 命令也可实现基本的备份和还原功能。
-
与 head 结合使用,可以选择文件的部分内容查看。
-
实时监控日志文件新增内容。
-
实现基本的备份和还原功能tail 命令让我们有选择地查看文件尾部内容,尤其是监控日志文件,这在排查问题和故障发现方面有很大帮助。它与 head 命令一起,可以让我们更加灵活地查看文件内容,是 Linux 文本处理中必不可少的工具。
cut- 从行中剪切出指定的字段
cut 命令用于截取文件中的列 (字段)。cut 命令的基本语法是:
cut [选项] 文件
常用选项有:
- -f:选取字段,按字段编号提取
- -d:自定义分隔符,默认是制表符\t
- -c:按字符编号提取例如,有这样一个文件 a.txt:
name age gender
john 22 male
mary 20 female
tom 25 male
- 按字段提取:
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 命令主要用于:
- 按照列号或者字符位置,提取文件中的字段或字符
- 支持自定义分隔符,不只局限于空格分隔
常与其它命令如 awk、sort 等结合, implementing 较为复杂的文本处理cut 是 Linux 中一个重要的文本处理工具,熟练掌握和运用 cut 可以大大提高工作效率。
split - 分割文件为较小的部分
split 命令用于分割文件。它的基本语法是:split [选项] 文件名
例如:
split -b 100k 大文件
这会将大文件分割成多个大小为100kB的文件,文件名为xaa, xab, xac等。代码示例:
$ split -b 100k 大文件
这会生成文件xaa, xab, xac等。 解释:使用-b
选项以100kB为单位分割大文件。
split -l 100 大文件 前缀
这会将大文件分割成多个每100行一个文件的文件,文件名为前缀00,前缀01,前缀02等。代码示例:
$ split -l 100 大文件 前缀
这会生成文件前缀00, 前缀01, 前缀02等。 解释:使用-l
选项以100行为单位分割大文件,并指定分割后的文件名前缀为“前缀”。
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中的对应行。
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 命令的用法以及一些代表性的例子:
-
打开文件:
vi filename
例如:
vi file.txt
打开名为 "file.txt" 的文件。如果文件不存在,则会创建一个新文件。
下面是一些 vi 编辑器里常用的操作梳理:
Vi 是一款常用的文本编辑器,在 Linux 中经常用于编辑和查看文件。它具有强大的功能和灵活的操作方式。下面是一些 vi 命令的用法以及一些代表性的例子:
- 插入文本: 在 vi 的命令模式下按下
i
键,进入插入模式,可以开始编辑文本。 - 按 Esc 退出编辑模式。
- 保存文件: 在 vi 的命令模式下按下
:w
,然后按 Enter 键,将文件保存。 - 退出 vi: 在 vi 的命令模式下按下
:q
,然后按 Enter 键,退出编辑器。如果对文件进行了更改并且未保存,可以使用:q!
强制退出而不保存更改。 - 保存并退出: 在 vi 的命令模式下按下
:wq
,然后按 Enter 键,将文件保存并退出编辑器。 - 光标移动:
h
: 将光标向左移动。j
: 将光标向下移动。k
: 将光标向上移动。l
: 将光标向右移动。
- 删除文本:
x
: 删除光标所在位置的字符。dd
: 删除光标所在行。ndd
: 删除当前行及其后的 n-1 行。
- 搜索和替换:
/pattern
: 在文件中向前搜索指定的模式。?pattern
: 在文件中向后搜索指定的模式。:s/old/new/g
: 将当前行中的所有匹配项替换为新的文本。:%s/old/new/g
: 将文件中所有匹配项替换为新的文本。
这些是 vi 命令中的一些常见用法和示例。vi 还有许多其他功能和命令,可用于复制、粘贴、查找行号、跳转到指定行等操作。
4 文件压缩和解压
tar - 创建归档文件或提取归档文件的内容
Tar(tape archive)是一个在 Linux 命令行下常用的文件打包和压缩工具。它可以将多个文件或目录打包成一个单独的文件,并可以选择是否进行压缩。以下是 tar 命令的一些常见用法以及一些代表性的例子:
-
创建 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 文件。 -
解压 tar 文件:
tar -xvf archive.tar
例如:
tar -xvf archive.tar
将解压缩名为 "archive.tar" 的 tar 文件,将其中的文件和目录提取到当前目录。 -
压缩为 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"。 -
解压缩 tar.gz 文件:
tar -xzvf archive.tar.gz
例如:
tar -xzvf archive.tar.gz
将解压缩名为 "archive.tar.gz" 的 tar.gz 文件,并将其中的文件和目录提取到当前目录。 -
列出 tar 文件内容:
tar -tvf archive.tar
例如:
tar -tvf archive.tar
列出名为 "archive.tar" 的 tar 文件中的内容,包括文件和目录的详细信息。 -
追加文件到现有的 tar 文件:
tar -rvf archive.tar newfile
例如:
tar -rvf archive.tar newfile.txt
将名为 "newfile.txt" 的文件追加到现有的 tar 文件 "archive.tar" 中。
unzip- 解压缩 ZIP 文件
在 Linux 命令行中,"unzip" 是一个常用的解压缩工具,用于解压缩 Zip 格式的压缩文件。下面是 unzip 命令的一些常见用法和代表性的例子:
-
解压缩 Zip 文件:
unzip archive.zip
例如:
unzip archive.zip
将解压缩名为 "archive.zip" 的 Zip 文件,将其中的文件提取到当前目录。 -
解压缩指定文件到指定目录:
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"。 -
解压缩并覆盖现有文件:
unzip -o archive.zip
例如:
unzip -o archive.zip
将解压缩名为 "archive.zip" 的 Zip 文件,并强制覆盖现有的同名文件。 -
查看 Zip 文件内容列表:
unzip -l archive.zip
例如:
unzip -l archive.zip
列出名为 "archive.zip" 的 Zip 文件中的文件列表。 -
解压缩并保留文件的权限和时间戳:
unzip -K archive.zip
例如:
unzip -K archive.zip
将解压缩名为 "archive.zip" 的 Zip 文件,并保留文件的权限和时间戳。 -
解压缩密码保护的 Zip 文件:
unzip -P password archive.zip
例如:
unzip -P secret archive.zip
将解压缩名为 "archive.zip" 的密码保护 Zip 文件,需要提供密码 "secret" 才能解压缩。
gzip - 压缩文件并生成以
在 Linux 命令行中,"gzip" 是一种常用的压缩工具,用于压缩文件并添加 ".gz" 扩展名。下面是 gzip 命令的一些常见用法和代表性的例子:
-
压缩文件:
gzip file.txt
例如:
gzip file.txt
将文件 "file.txt" 压缩为 "file.txt.gz"。 -
压缩多个文件:
gzip file1.txt file2.txt
例如:
gzip file1.txt file2.txt
将文件 "file1.txt" 和 "file2.txt" 分别压缩为 "file1.txt.gz" 和 "file2.txt.gz"。 -
压缩并保留原始文件:
gzip -k file.txt
例如:
gzip -k file.txt
压缩文件 "file.txt" 并保留原始文件,生成 "file.txt.gz"。 -
压缩目录及其内容:
gzip -r directory
例如:
gzip -r directory
压缩名为 "directory" 的目录及其内容,并在压缩后的文件名后面添加 ".gz" 扩展名。 -
解压缩文件:
gzip -d file.txt.gz
例如:
gzip -d file.txt.gz
解压缩名为 "file.txt.gz" 的文件,恢复为 "file.txt"。 -
查看压缩文件信息:
gzip -l file.txt.gz
例如:
gzip -l file.txt.gz
显示名为 "file.txt.gz" 的压缩文件的信息,包括压缩比率、原始文件大小等。 -
强制压缩文件(忽略警告):
gzip -f file.txt
例如:
gzip -f file.txt
强制压缩文件 "file.txt",即使已存在同名的压缩文件。
zip - 创建 ZIP 归档文件
在 Linux 命令行中,"zip" 是一个常用的压缩工具,用于创建和管理 Zip 格式的压缩文件。下面是 zip 命令的一些常见用法和代表性的例子:
-
创建 Zip 文件:
zip archive.zip file1 file2 directory
例如:
zip archive.zip file1.txt file2.txt directory
将文件 "file1.txt"、"file2.txt" 和名为 "directory" 的目录打包成一个名为 "archive.zip" 的 Zip 文件。 -
添加文件到现有的 Zip 文件:
zip archive.zip newfile
例如:
zip archive.zip newfile.txt
将名为 "newfile.txt" 的文件添加到现有的 Zip 文件 "archive.zip" 中。 -
递归压缩目录及其内容:
zip -r archive.zip directory
例如:
zip -r archive.zip directory
将名为 "directory" 的目录及其内容递归压缩到一个名为 "archive.zip" 的 Zip 文件中。 -
查看 Zip 文件内容列表:
zip -sf archive.zip
例如:
zip -sf archive.zip
列出名为 "archive.zip" 的 Zip 文件中的文件列表。 -
解压缩 Zip 文件:
unzip archive.zip
例如:
unzip archive.zip
解压缩名为 "archive.zip" 的 Zip 文件,将其中的文件提取到当前目录。 -
解压缩指定文件到指定目录:
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"。