文件内容管理

文件内容管理

概述

主要是文件内容的增删改查等操作,也可以通过输出重定向将标准输出作为文件内容进行修改。通过输入重定向以文件内容代替标准输入。

主要操作

文件内容的查看:cat、more、less、head、tail

查找文件内容:grep

管道符:|

文件内容编辑:vi、vim

输入、输出重定向

命令详解

cat命令

cat命令详解

cat(concatenate)命令将一个或多个文件的内容输出到标准输出(屏幕上)。如果只指定了一个文件名,那么cat命令会输出该文件的全部内容。如果指定了多个文件名,cat命令会按顺序输出这些文件的内容。

命令格式

cat [选项]... [文件]...

常用选项

  • n:显示行号
  • b:显示非空行号
  • s:压缩空白行
  • E:在每行末尾添加\\$符号
  • T:将制表符\\t显示为^I
  • v:显示不可打印字符

示例

显示单个文件的内容:

cat filename

将多个文件的内容连接起来显示:

cat file1 file2 file3

将多个文件的内容连接到一个新文件中:

cat file1 file2 file3 > newfile

将多个文件的内容追加到一个已有文件的末尾:

cat file1 file2 file3 >> existingfile

将标准输入的内容重定向到一个文件中:

cat > filename

注意事项

  • 如果一个文件很大,那么使用cat命令输出文件内容可能会导致屏幕滚动速度过快。在这种情况下,可以尝试使用morelessheadtail等命令来逐页或逐行地查看文件内容。

more命令

more命令详解

more命令可以用来逐页显示文件内容。如果一个文件很大,使用cat命令可能会导致屏幕滚动速度过快,这时可以使用more命令按页查看文件内容。

命令格式

more [选项] 文件名

常用选项

  • Enter:向下滚动一行
  • 空格键:向下滚动一页
  • /字符串:搜索字符串并定位到下一个匹配的字符串
  • q:退出more命令

示例

查看文件内容并逐页显示:

more filename

查看多个文件的内容并逐页显示:

more file1 file2 file3

注意事项

如果一个文件很大,使用more命令逐页显示文件内容时,需要等待一段时间才能看到全部内容。可以按空格键或Enter键来翻页,或者按q键退出more命令。

less命令

less命令详解

less命令用于逐页查看文件内容。和cat和more不同,它可以在文件查看过程中进行搜索、回滚、前进和退出等操作。

命令格式

less [选项] 文件名

常用选项

  • Enter:向下滚动一行
  • 空格键:向下滚动一页
  • b:向上滚动一页
  • /字符串:搜索字符串并定位到下一个匹配的字符串
  • ?字符串:向上搜索字符串并定位到上一个匹配的字符串
  • n:显示下一个匹配的字符串
  • N:显示上一个匹配的字符串
  • q:退出less命令

示例

查看文件内容并逐页显示:

less filename

查看多个文件的内容并逐页显示:

less file1 file2 file3

注意事项

如果一个文件很大,使用less命令逐页显示文件内容时,需要等待一段时间才能看到全部内容。可以按空格键或Enter键向下翻页,按b键向上翻页,或者按q键退出less命令。

head命令

head命令详解

head命令用于显示文件的开头几行内容。默认情况下,head命令会显示文件的前10行内容。

命令格式

head [选项]... [文件]...

常用选项

  • n:指定要显示的行数。例如,head-n 20 filename会显示文件的前20行。

示例

显示文件的前10行:

head filename

显示文件的前20行:

head -n 20 filename

注意事项

如果文件的行数少于指定的行数,head命令会显示文件的全部内容。

tail命令

tail命令用于显示文件的末尾几行内容。默认情况下,tail命令会显示文件的后10行内容。

命令格式

tail [选项]... [文件]...

常用选项

  • n:指定要显示的行数。例如,tail-n 20 filename会显示文件的后20行。

示例

显示文件的后10行:

tail filename

显示文件的后20行:

tail -n 20 filename

注意事项

如果文件的行数少于指定的行数,tail命令会显示文件的全部内容。

grep命令

grep命令用于在文本文件中查找指定的字符串。它可以在一个或多个文件中查找,也可以在标准输入中查找。grep命令会输出包含指定字符串的行。

命令格式

grep [选项]... 字符串 [文件]...

常用选项

  • i:忽略大小写
  • v:反向查找(查找不包含指定字符串的行)
  • n:显示行号
  • A:显示匹配行及其后面的若干行
  • B:显示匹配行及其前面的若干行
  • E:使用正则表达式进行匹配

示例

在文件中查找指定字符串:

grep 字符串 文件名

在多个文件中查找指定字符串:

grep 字符串 文件1 文件2 文件3

查找包含指定字符串的行及其后面的两行:

grep -A 2 字符串 文件名

查找包含指定字符串的行及其前面的两行:

grep -B 2 字符串 文件名

注意事项

  • 如果要在多个文件中查找指定字符串,可以使用通配符进行文件名匹配。例如,grep 字符串 *.txt会在所有扩展名为txt的文件中查找。
  • 如果要在标准输入中查找指定字符串,可以使用输入重定向。例如,grep 字符串 < 文件名会从文件中读取内容,并在其中查找指定字符串。
  • 如果要在文件名中包含空格或其他特殊字符,需要将文件名用引号括起来。例如,grep 字符串 "file name"会在名为"file name"的文件中查找。
  • grep与管道结合起来可以查询任何内容,例如: ps -ef | grep weblogic

管道符I

管道是Linux中非常有用的概念。管道允许将一个命令的输出作为另一个命令的输入。使用管道可以将多个命令串起来,以实现更复杂的操作。

管道符|用于将一个命令的输出传递给另一个命令。

管道是文件管理里比较重要的内容

管道的左边和右边都有命令

管道左边的命令会产生输出结果,输出结果经过了管道之后就变成右边命令的输入

管道右边的命令,总是接收输入的命令

示例

查找包含指定字符串的进程,下面的命令将ps的输出传递给grep,用于查找包含指定字符串的进程:

ps aux | grep 进程名

查找文件中包含指定字符串的行,下面的命令将cat的输出传递给grep,用于查找文件中包含指定字符串的行:

cat 文件名 | grep 字符串

查找文件中包含指定字符串的行并计算行数,下面的命令将cat的输出传递给grep,用于查找文件中包含指定字符串的行,并将结果传递给wc,用于计算行数:

cat 文件名 | grep 字符串 | wc -l

查找文件中包含指定字符串的行并输出行号,下面的命令将cat的输出传递给grep,用于查找文件中包含指定字符串的行,并将结果传递给grep,用于输出行号:

cat 文件名 | grep -n 字符串

注意事项

  • 管道符可以将任意数量的命令串起来,但是要注意命令的顺序,以确保每个命令都能够正确处理前一个命令的输出。
  • 管道符可以将命令的输出传递给另一个命令,但是如果输出过多,可能会导致性能问题或者内存不足。在处理大量数据时,可以考虑使用其他工具或编程语言来处理数据。

通配符

通配符是用于在Linux中匹配文件名的特殊字符。下面是一些常用的通配符:

  • ?:表示一个非空的空白字符
  • \\:表示转义字符,能够失去特殊字符的功能
  • [abc]:表示abc中的任意一个字符
  • [^abc]:表示不是abc中的任一字符的字符
  • *:表示任意数量的字符
  • [a-z]:表示所有小写字母
  • [A-Z]:表示所有大写字母
  • [a-Z]:表示所有字母
  • [0-9]:表示所有数字

通配符适用于所有文件管理命令,包括lstouch等。下面是一些示例:

  • ls ??:列出所有两个字符的文件
  • touch abc?:如果abc?匹配不到文件,则创建一个文件名为abc?的文件。如果abc?能匹配到文件,则更新匹配到的文件的时间。
  • touch a\\?:创建一个文件名为a?的文件
  • touch 'a?':生成一个a?的文件
  • ls a[abc]c:列出aacabcacc三个文件
  • ls [ab][ab][ab]:显示每一位上都是ab的、三个字符长度文件名的文件

输出重定向

当执行一个命令后,命令产生了结果,结果默认是输出到屏幕上的。默认情况,无论一个命令执行正确与否,结果都会默认输出到屏幕上。在有些情况下,我可能需要保留命令或者脚本输出的结果。当做log,用作后面分析。

输出重定向是将命令的输出结果保存到文件或设备中的操作。在Linux中,可以使用以下符号进行输出重定向:

  • >:将命令的输出结果保存到文件中。如果文件不存在,则创建一个新的文件;如果文件已经存在,则覆盖原来的文件内容。
  • >>:将命令的输出结果追加到文件中。如果文件不存在,则创建一个新的文件;如果文件已经存在,则在文件末尾追加新的内容。
  • 2>:将命令的错误输出重定向到文件中。例如,sh start.sh 2> error.log会将ls命令的错误输出保存到error.log文件中。
  • 2>>:将命令的错误输出追加到文件中。
  • &>:将命令的标准输出和错误输出都重定向到文件中。例如,ls no_such_file &> output.log会将ls命令的标准输出和错误输出都保存到output.log文件中。

示例

将命令的输出结果保存到文件中:

ls > file.txt

将命令的输出结果追加到文件中:

ls >> file.txt

将命令的错误输出重定向到文件中:

ls no_such_file 2> error.log

将命令的错误输出追加到文件中:

ls no_such_file 2>> error.log

将命令的标准输出和错误输出都重定向到文件中:

ls no_such_file &> output.log

注意事项

  • 输出重定向符号可以与管道符一起使用。例如,ls | grep keyword > file.txt会将ls命令的输出结果传递给grep命令,然后将grep命令的输出结果保存到file.txt文件中。
  • &>>/dev/null : /dev/null是一个特殊的文件,如果将重定向指向这个文件,那么就相当于将执行结果送到黑洞中。有些时候,我们不想让这个命令的输出显示到任何地方,就送到黑洞中。

输入重定向

输入重定向是将文件中的内容作为命令的输入数据的操作。在Linux中,可以使用以下符号进行输入重定向:

  • <:将文件中的内容作为命令的输入数据。例如,sort < file.txt会将file.txt文件中的内容作为sort命令的输入数据。
  • <<:将命令的输入数据指定为文本块。例如,cat << EOF会将下一个文本块作为cat命令的输入数据,直到遇到以EOF开头的行为止。

示例

将文件中的内容作为命令的输入数据:

sort < file.txt

将命令的输入数据指定为文本块:

cat << EOF
This is a text block.
It will be used as input to the 'cat' command.
EOF

注意事项

  • 输入重定向符号可以与管道符一起使用。例如,grep keyword < file.txt | wc -l会将file.txt文件中的内容作为grep命令的输入数据,然后将grep命令的输出结果传递给wc命令。

输入重定向的意义

可以将交互式的命令变为非交互式

shell脚本其实就是Linux命令的集合体,一个脚本里面可以有N个Linux命令,但是shell脚本里面要尽可能的是非交互式命令,这样才能让脚本“自己动”

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值