【Linux】保姆级认识常见指令(二)

文件内容查看与编辑

1. echo 指令

语法:echo [选项] [字符串或变量]
功能:echo 是一个用于在终端输出文本或变量的命令。它
通常用于打印简单的文本消息、变量值或者将文本写入文件。
常用选项:
-n:不输出末尾的换行符,使输出在同一行。
-e:
启用转义字符的解释,可以使用转义字符表示特殊字符。
-E:
禁用转义字符的解释,即不解释转义字符。
\\:在输出中显示反斜杠。
\a:发出警告声音。
\b:后退一格。
\c:不输出换行符。
\n:换行。
\t:水平制表符(Tab)。
\r:回车。
\":双引号。
\':单引号。

举例:

这里把 "hello world" 打印到了屏幕上,这里加不加双引号都是可以的。在Linux中,遵循这样一个理念:一切皆文件。这样Linux就能够以统一的方式来进行文件或设备的访问。我们可以把显示器(终端)也看做是一个显示器文件,因此这里就是把 "hello world" 写入到显示器(终端)这个文件上。

echo 后面什么都不跟时,默认是打印空字符串,里面会有一个换行符。使用 echo 时,不管打印什么内容,末尾都会自带一个换行符。


2. 输出重定向:>

语法:command > file
功能:输出重定向是一种将命令的标准输出(stdout)
定向到文件或设备的方法。它允许你将命令的输出保存到文件中,而不是在终端上显示。
> :将命令的标准输出
覆盖写入到文件中。如果文件不存在,则创建文件并写入;如果文件存在,则覆盖文件内容

举例:

这里 "hello world" 并没有打印在终端上,并且当前目录还多了一个 test.txt 文件,我们用 cat 指令查看一下这个文件的内容(cat指令在下面会讲,这里先知道它用来查看文件内容就可以了),可以看到 "hello world" 被打印了出来,原来 "hello world" 被写入到了这个文件中。输出重定向,顾名思义就是改变输出本来 "hello world" 这个输出应该被写入到显示器文件的,然后我们把它重定向为写入到 test.txt 这个普通文件中。那么是不是这个文件必须存在呢,我们来试验一下。

这里我们原本没有 a.txt 这个文件,重定向后自动帮我们生成了,所以进行输出重定向时,如果目标文件不存在,则会先创建一个文件

这里我们 echo 指令后面并没有跟内容,而是直接重定向到了一个文件中,发现同样生成了这个文件,只不过文件里面没有内容,所以进行输出重定向的时候,如果没有要写入的内容,它只是创建了一个文件,有内容的话则会写入

现在我们直接使用输出重定向就能创建一个空文件了。那如果进行输出重定向的时候已经存在了这个文件,并且里面是有内容的,又会怎么样呢,我们来试验一下。

原本我们的文件是有内容的,我们使用输出重定向后发现原本的内容被清空了,这是因为进行输出重定向的时候,如果这个文件是存在的,它上来二话不说就给你把文件清空了,接着才进行文件内容的写入,可见输入重定向在写入时是覆盖写入的。因此在使用输出重定向的时候要特别小心。


3. 追加重定向:>>

语法:command >> file
功能:追加重定向是一种将命令的标准输出(stdout)
追加写入到文件中的方法。与输出重定向不同,追加重定向不会覆盖文件内容,而是在文件末尾追加新的输出
>> :将命令的标准输出
追加写入到文件中。如果文件不存在,则创建文件并写入;如果文件存在,则在文件末尾追加内容

举例:

使用追加重定向允许我们在末尾进行内容写入,这样就不会覆盖文件原本的内容了。

用追加重定向来创建一个空文件也是允许的。

在C语言中,我们学习过文件的相关操作,在打开文件前要选择打开的方式,如 ‘r’ 为只读模式,‘w’ 为写入模式,‘a’ 为追加模式。而在使用 cat 对文件操作时需要先打开文件,因此我们可以这样理解:使用输出重定向是以写入模式 ‘w’ 打开文件,因此会清空原有内容,而使用追加重定向是以追加模式 ‘a’ 打开文件,因此不会清空原有内容。


4. cat 指令

语法:cat [选项][文件]
功能:
查看目标文件的内容
常用选项:
-b 对
非空输出行编号
-n 对输出的所有行编号
-s 不输出多行空行

举例:

cat 指令非常简单,就是查看文件的内容。一般用来查看内容比较少的文件。

当使用 cat 命令时,如果没有指定文件名作为参数,它将等待用户从键盘输入内容,然后读取这些内容并输出到终端,当我们想退出时,只需要按 crtl + c 即可。我们可以将它理解为从键盘文件读取数据并写入到显示器文件中。 

tac 指令就是将 cat 指令倒过来,这样就能让文件的内容也倒过来输出


5. 输入重定向:<

语法:command < file
功能:输入重定向是一种用于改变命令从标准输入读取数据的方式。通过输入重定向,可以
将文件中的内容作为命令的输入,而不是等待键盘输入。

举例: 

cat 命令通过输入重定向,将 test.txt 文件中的内容显示在终端上,即本来应该从键盘文件中读取数据,通过输入重定向更改为从指定的文件中进行输入(读取),实现从该文件中读取数据最终输出到终端。其实就是以只读的方式打开文件。

对比一下输入重定向与普通的 cat 指令:
cat test.txt:
cat 命令接收文件名作为参数,它会
打开文件并将其内容直接输出到终端。 这种方式是直接读取文件的内容,而不涉及输入重定向
cat < test.txt:
< 是输入重定向符号,它将文件 test.txt 中的内容重定向到命令的标准输入。
这种方式是通过标准输入接收来自文件的内容。当使用输入重定向时,可以将文件内容发送到命令的标准输入,而不是通过键盘输入。

在实际使用中,两者的效果是相同的,都能够显示文件的内容。然而,使用输入重定向的方式,命令不直接操作文件,而是通过标准输入接收内容


 6. nano 指令

语法:nano [选项] 文件名
功能:nano 是一个
文本编辑器,旨在提供简单且对用户友好的界面,适用于终端环境。通过 nano,用户可以创建、编辑文本文件。

举例:

这里我们写上一段简单的程序,然后按下 ctrl + x,再按 y 确认,然后按回车就退出来,这时候我们就编辑成功了。

cat 一下,的确写入了我们的代码。

我们用 gcc 编译一下。-o 后面接文件名可以指定生成的可执行文件的名称。 

这里我们可以使用相对路径或者绝对路径来打开这个可执行程序。特别要注意的是,如果我们处于当前路径下,需要使用 ./文件名 的方式来打开可执行程序。这确保了系统知道我们在当前路径中查找可执行文件。在成功执行后,我们得到了"hello linux"的输出。


7. more 指令

语法:more 文件
功能:more命令,功能类似 cat,适合用来
查看大文件

举例:


这个big.txt 是一个内容较多的文件,如果使用 cat 命令查看不太方便。因此可以使用 more 命令来更有效地查看文件内容。它会逐屏显示文件内容,通过按下空格键或回车键可以向下翻阅,其中回车键每次向下翻动一行,而空格键每次更新一整屏。然而,如果需要回头查看文件上方的内容,我们则需要通过鼠标滚轮向上移动,这可能会稍显繁琐。当我们不想查看了,只需要按下 q 就可以退出。更推荐使用接下来要介绍的 less 指令来查看大文本。


8. less 指令 

语法:less [参数] 文件
功能:less 与 more 功能类似,但
使用 less 可以随意浏览文件,而且 less 在查看之前不会加载整个文件。除此之外,less 还有更多的搜索功能,不止可以向下搜,也可以向上搜
选项:
-i:忽略搜索时的大小写
-N:显示每行的行号
/字符串:
向下搜索“字符串”
?字符串:
向上搜索“字符串”
n:
重复前一个搜索(与 / 或 ? 有关)
N:
反向重复前一个搜索(与 / 或 ? 有关)
q:quit

举例:

使用 less 查看大型文本文件时,可以灵活运用键盘上的上箭头键和下箭头键进行自由浏览。同时,空格键和回车键仍然可以用于向下翻阅文件内容。如果想要退出查看,只需下键盘上的 q 键即可。良好的翻阅体验使得以后可以用 less 来查看一些源代码或者日志。


当输入200并回车时,将会向下滚动文本直到显示200行后的内容,这是 less 的一个很有用的功能,可以快速导航到文件的特定部分,而不必逐行滚动。(行数可以任意给,最多到末尾)

当我们输入 /要查找的内容 时,less 会启动查找功能向下查找文本中包含指定内容的位置。一旦找到匹配的内容,less 会跳转到该内容所在的行,并且高亮显示查找的关键字

当我们想回过头来查找 200 时,只需要输入 ?200,就可以向上查找200这个内容了。

如果我们用的是 / 来查找,此时按下回车键后,我们发现它查找的是 "1000" 而不是我们期望的 "100"。这是因为此时 less 是向下查找的。我们只需按下大写字母 N 键,它会反向重复前一个搜索,即从向下查找变成了向上查找。同理,如果输入小写字母 n 键,则会同向重复前一个搜索


9. head 指令

语法:head [参数][文件]
功能:head 用来显示文件的开头至标准输出中,
默认 head 命令打印其相应文件的开头10行
选项:
-n<行数> 显示的行数

举例:

这样就打印了文件的前十行。

通过指定行数来打印内容。


10. tail 指令

tail 命令从指定点开始将文件写到标准输出。使用tail命令的 -f 选项可以方便的查阅正在改变的日志文件,tail -f filename 会把 filename 里最尾部的内容显示在屏幕上,并且不但刷新,使你看到最新的文件内容。
语法:tail[必要参数][选择参数][文件]
功能:
显示指定文件末尾内容,不指定文件时,作为输入信息进行处理。常用来查看日志文件。
选项:
f 循环读取
-n<行数> 显示行数

举例:

通过 -n 选项查看文件的最后20行,不指定行数时默认是最后十行。


11. 管道:|

语法:command1 | command2
其中,command1 和 command2 是两个独立的命令,| 表示将 command1 的输出作为 command2 的输入。
功能:

连接命令: 管道用于连接两个或多个命令使一个命令的输出成为另一个命令的输入
实现流式处理: 管道允许数据在命令之间流动,实现流式处理。输出流从一个命令传递到另一个命令,以便进行复杂的数据处理。
并行执行: 管道允许多个命令并行执行,每个命令都在其自己的进程中运行。这提高了系统资源利用率。
过滤和转换数据: 管道是一个强大的工具,可以用于过滤和转换数据。例如,可以使用 grep 过滤文本,然后使用 awk 对结果进行转换。

举例:

echo 命令原本会在终端打印 "hello world",但添加了管道后,将输出传递给了下一个命令 cat 。最终通过 cat 将内容打印在了终端上。这个场景有点脱裤子放屁,但只是为了更好地理解管道的作用而举得例子。接下来举一个实用的例子,假如我们要查找某个文件的第8000到8010行,应该怎么办呢?我们前面学习了 head 指令和 tail 指令,这时候使用管道来级联它们就行了。

首先,通过使用 head 命令,我们将文件的前 8010 行内容传递到管道中。接着,我们利用管道将这些内容作为 tail 命令的输入,同时指定要显示的行数为最后的 11 行。这样我们就成功地查看了文件的第 8000 行到第 8010 行的内容。通过管道级联多条命令可以实现许多功能。

还可以这样玩,让它倒过来打印


12. wc 指令

语法:wc [选项] 文件名
功能:wc 是一个用于
统计文件中字节数、字数、行数的命令。
选项:
-l 选项:显示
行数
-w 选项:显示
字数
-c 选项:显示
字节数
如果没有使用任何选项,则
默认显示行数、字数和字节数

举例:

这样就统计了文件的行数。


13. grep 指令

语法: grep [选项] 搜寻字符串 文件
功能: 在文件中
搜索字符串将找到的行打印出来
常用选项:
-i :
忽略大小写的不同,大小写视为相同
-n :顺便输出
行号
-v :反向选择,亦即显示出没有 '搜寻字符串' 内容的那一行

举例:

这里在 test.txt 中查找含有 big 字符串的行,并将改行打印出来,而且要搜索的字符串会高亮显示。

带上 -n 选项可以顺便打印行号。

再带上 -v 选项就会匹配不带有字符串 big 的行,并打印。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值