【Linux】命令行下的增删查改之“查看”

致谢:Linux常用命令大全(手册) -- 真正好用的Linux命令在线查询网站 提供的命令查询

头部内容获取(head)

head命令的功能是显示文件开头的内容,默认值为前10行。

指令参数:

|----|--------------|
| -n | 定义显示行数 |
| -c | 指定显示头部内容的字符数 |
| -v | 总是显示文件名的头信息 |
| -q | 不显示文件名的头信息 |

实例:

head一个25行内容的文本文件可以看到默认显示头10行。

bash 复制代码
[root@machine ~]$ head filename

指定显示一个文本文件默认十行,且显示其文件名在上方。

bash 复制代码
[root@machine ~]$ head -v filename

指定显示文件的前20个字符:

bash 复制代码
head -c 20 filename

尾部内容获取(tail)

tail 命令是用于查看文件末尾内容的强大工具。默认情况下,它会显示指定文件的最后 10 行。如果同时指定多个文件,tail 会在每个文件内容之前添加文件名,方便用户区分输出。

指令参数:

|-----------|--------------------------------------------|
| -c | 输出文件尾部的N(N为整数)个字节内容 |
| -f | 持续显示文件最新追加的内容 |
| -F | 与选项"-follow=name"和"--retry"连用时功能相同 |
| -n | 输出文件的尾部N(N位数字)行内容 |
| --retry | 即是在tail命令启动时,文件不可访问或者文件稍后变得不可访问,都始终尝试打开文件。 |
| --pid= | 与"-f"选项连用,当指定的进程号的进程终止后,自动退出tail命令 |
| --help | 显示指令的帮助信息 |
| --version | 显示指令的版本信息 |

实例:

默认显示某个文件尾部的后10行内容:

bash 复制代码
tail initial test

指定显示某个文件尾部的后5行内容:

bash 复制代码
tail -n 5 filename

指定显示某个文件尾部的后15个字节:

bash 复制代码
tail -c 30 initial filename
  • 持续刷新显示某个文件尾部的后10行内容:
bash 复制代码
tail -f /path1/path2/filename

下面是一个简单的 C 程序,它会不断地向当前路径下的 test 文件写入带行数的内容。你可以在一个终端中运行这个程序,并在另一个终端中使用

bash 复制代码
tail -f test 

命令实时监视文件的变化。

C 程序代码:

cpp 复制代码
#include <stdio.h> 
#include <stdlib.h> 
#include <unistd.h> 
int main() 
{ 
    FILE *file = fopen("test", "a"); // 以追加模式打开文件 
    if (file == NULL) 
    { 
        perror("Error opening file"); 
        return 1; 
    } 
    int lineNum = 1; 
    while (1)
    {
         // 写入带有行号的内容 
        fprintf(file, "This is line %d\n", lineNum); 
        fflush(file); // 确保内容被写入文件 
        lineNum++; // 暂停一段时间以模拟写入间隔 
        sleep(1); // 每秒写入一行 
    } 
    fclose(file); 
    return 0; 
}

使用方式:

  1. 编译代码,将上述代码保存为 writer.c,然后在终端中运行以下命令来编译:
bash 复制代码
gcc -o writer writer.c
  1. 运行程序在一个终端中运行编译好的程序:
bash 复制代码
./writer
  1. 监视文件

在另一个终端中使用 tail -f 命令监视文件 test 的变化:

bash 复制代码
tail -f test

效果:

  • 当你运行 ./writer 后,程序将每秒向 test 文件追加一行内容,内容格式为 "This is line X",其中 X 是行号。
  • 在另一个终端中使用 tail -f test 命令时,你会看到文件的变化,实时输出新添加的行。

通过这种方式,你可以同时观察 C 程序向文件写入的过程以及使用 tail -f 实时监视文件内容。

可以使用管道将 tail -f 的输出传递给 grep,筛选出特定的内容:

bash 复制代码
tail -f /var/log/syslog | grep "error"

中间部分内容获取:

bash 复制代码
cat tmp.txt 
tail - 10.txt 

思路是取到最大后截断尾部

使用文件处理指令对数据进行级联操作,这就叫做流水线处理

bash 复制代码
cat .txt | head -610 | tail-10|tac 
tail-50 tep.txt | less

在Linux操作系统中,管道(|)是一个特殊的符号,用于连接两个或多个命令,将一个命令的输出作为另一个命令的输入。通过使用管道,可以将多个命令串联起来,实现更复杂的操作。例如,可以使用管道将一个命令的输出传递给另一个命令进行处理,或者将多个命令组合在一起以实现更复杂的功能。管道是Linux中非常强大和常用的功能之一,可以提高命令行操作的效率和灵活性。

以下是一些Linux中经典的流水线处理示例:

使用grep和wc命令统计文件中包含特定关键词的行数:

bash 复制代码
cat file.txt | grep "keyword" | wc -l

使用ps和grep命令查找特定进程:

bash 复制代码
ps aux | grep "process_name"

使用ls和sort命令列出目录中的文件并按文件大小排序:

bash 复制代码
ls -l | sort -k 5 -n

使用find和xargs命令查找特定类型的文件并执行操作:

bash 复制代码
find . -name "*.txt" | xargs rm

这些示例演示了如何使用管道将多个命令连接在一起,实现复杂的数据处理和操作。通过灵活使用流水线处理,可以大大提高在Linux系统上的命令行操作效率和灵活性。

统计行数(WC)

wc 命令是"Word Count"的缩写,用于统计文件的字节数、单词数和行数,并将结果输出到终端。使用 wc 可以迅速获取文本的基本信息.

bash 复制代码
wc [参数] 文件

指令参数:

|-----------|----------|
| -w | 统计单词数 |
| -c | 统计字节数 |
| -l | 统计行数 |
| -m | 统计字符数 |
| -L | 显示最长行的长度 |
| --help | 显示帮助信息 |
| --version | 显示版本信息 |

实例:

统计指定文件的单词数量:

bash 复制代码
wc -w filename

统计指定文件的字节数量::

bash 复制代码
wc -c filename

集合:显示行数,字符数,字节数,单词数

bash 复制代码
wc -l -m -c -w test

去重(uniq)

uniq 命令是"unique"的缩写,用于去除文件中的重复内容行。它只会删除相邻的重复行 ,因此在处理非相邻重复行时,需要先使用 sort 命令进行排序。通过这种方式,可以确保留下来的内容是都是唯一的。

bash 复制代码
uniq [参数] 文件

参数:

|----|-----------------|
| -c | 打印每行在文本中重复出现的次数 |
| -d | 每个重复纪录只出现一次 |
| -u | 只显示没有重复的纪录 |

实例:

对指定文件显示时执行去重操作:

只显示未重复文件:

bash 复制代码
uniq -u test

仅显示指定文件中存在一摸一样内容行的信息:

bash 复制代码
uniq -d Filename

排序(sort)

sort 命令的功能是对文件内容进行排序。它可以按照字母顺序数值大小特定列 进行排序,广泛应用于数据整理和分析。通过使用 sort,用户能够轻松地将文本文件中的数据按字母或数值顺序排列,便于查阅和管理。当与其他命令如之前提到的 uniq 结合使用时,它可以有效地去除重复行,确保数据的唯一性和整洁性。

bash 复制代码
sort [参数] 文件

参数:

|----|----------------------------|
| -b | 忽略每行前面开始出的空格字符 |
| -c | 检查文件是否已经按照顺序排序 |
| -d | 除字母、数字及空格字符外,忽略其他字符 |
| -f | 将小写字母视为大写字母 |
| -i | 除040至176之间的ASCII字符外,忽略其他字符 |
| -m | 将几个排序号的文件进行合并 |
| -M | 将前面3个字母依照月份的缩写进行排序 |
| -n | 依照数值的大小排序 |
| -o | 将排序后的结果存入制定的文件 |
| -r | 以相反的顺序来排序 |
| -t | 指定排序时所用的栏位分隔字符 |
| -k | 指定需要排序的栏位 |

实例:

对指定的文件内容按照字母顺序进行排序:

bash 复制代码
cat Filename sort Filename

显示日历(cal)

cal命令的名字来自英语单词"Calendar"。该命令用来显示当前月份的日历,或者指定日期的公历.如只有一个参数,则表示年份,如有两个参数,则表示月份和年份 。

bash 复制代码
cal [参数] [月份] [年份]

参数:

|----|-----------------|
| -l | 单月分输出日历 |
| -3 | 显示最近三个月的日历 |
| -s | 将星期天作为月的第一天 |
| -m | 将星期一作为月的第一天 |
| -j | 显示在当年中的第几天(儒略日) |
| -y | 显示当年的日历 |

实例:

显示当前月份的日历:

bash 复制代码
cal

显示近期三个月的日历(当前月,上一个月和下一个月):

bash 复制代码
cal -3

显示指定年月的日历,如显示1998年2月的日历:

bash 复制代码
cal 2 1998

显示该日期是当年中的第几天:

终端显示内容(cat)

cat 命令是"concatenate"的缩写,主要用于查看文件内容。它适合用于显示内容较少纯文本文件 。面对内容较多的文件时,cat 命令可能会导致屏幕快速滚动,用户难以阅读,因此对于大文件,使用 ++more++ 命令会更为合适。

参数:

|-----------|-------------------------------|
| -n | 显示行数(空行也编号) |
| -s | 显示行数(多个空行算一个编号) |
| -b | 显示行数(空行不编号) |
| -E | 每行结束处显示$符号 |
| -T | 将TAB字符显示为 ^I符号 |
| -v | 使用 ^ 和 M- 引用,除了 LFD 和 TAB 之外 |
| -e | 等价于"-vE"组合 |
| -t | 等价于"-vT"组合 |
| -A | 等价于 -vET组合 |
| --help | 显示帮助信息 |
| --version | 显示版本信息 |

实例:

查看文件内容:

bash 复制代码
cat Filename

查看某个文件的内容,并显示行号:

bash 复制代码
cat -n Filename

搭配空设备文件和输出重定向操作符,将某个文件内容清空:

bash 复制代码
cat /dev/null > Filename cat Filename

持续写入文件内容,直到碰到EOF符后才会结束并保存:

bash 复制代码
cat > Filename << EOF

输出字符串或提取后的变量值(echo)

echo 命令用于在终端输出指定字符串变量 的值。输出内容通过管道符 传递给后续命令进行二次处理,或通过输出重定向符 将信息写入文件中,其中管道符就是相当于一个文件看做一个基础汽车底座,然后每经过一个指令就会组装一个零件,然后到最后结束的时候就是我们想要的车的样子;输出重定向简单来说就是本来我们想要的内容会在屏幕上显示,但是我们把输出的内容转到别的文件里去了,就好比对着草坪浇水的喷头调转方向去洗车了。在使用echo提取变量值时,需要在变量名称前加上 $ 符号,通常++变量名称采用大写形式++。

bash 复制代码
echo [参数] 字符串/变量

参数:

|------------|-------------------|
| -n | 不输出结尾的换行符 |
| -e "\a" | 发出警告音 |
| -e "\b" | 删除前面的一个字符 |
| -e "\c" | 结尾不加换行符 |
| -e "\f" | 换行,光标扔停留在原来的坐标位置 |
| -e "\n" | 换行,光标移至行首 |
| -e "\r" | 光标移至行首,但不换行 |
| -E | 禁止反斜杠转移,与-e参数功能相反 |
| ---version | 查看版本信息 |
| --help | 查看帮助信息 |

实例:

输出指定字符串到终端设备界面(默认为电脑屏幕):

bash 复制代码
echo hello echo

输出某个变量值内容

搭配输出重定向符一起使用,将字符串内容直接写入文件中:

bash 复制代码
echo "Hello echo" > Filename

搭配反引号执行命令,并将执行结果输出:

bash 复制代码
echo `uptime`

使用所有参数,猜猜结果:

bash 复制代码
echo -e "Hello \a\an\fecho\n123\r321\b\c"

致谢:Linux常用命令大全(手册) -- 真正好用的Linux命令在线查询网站 提供的命令查询

相关推荐
筑梦之路12 分钟前
linux 系统找出磁盘IO占用元凶 —— 筑梦之路
linux·运维·服务器
cainiao0806051 小时前
Java 大视界:基于 Java 的大数据可视化在智慧城市能源消耗动态监测与优化决策中的应用(2025 实战全景)
java
LiQiang332 小时前
Ubuntu2404修改国内镜像
linux
杰哥技术分享2 小时前
Ubuntu 22.04安装SQL Server指南
linux·运维·ubuntu·sqlserver
遇见火星2 小时前
ubuntu18.04 升级Ubuntu 20.04
linux·运维·ubuntu·系统升级
长风破浪会有时呀2 小时前
记一次接口优化历程 CountDownLatch
java
x县豆瓣酱2 小时前
【第四节】ubuntu server安装docker
linux·ubuntu·docker
Gene_20222 小时前
【TOOL】ubuntu升级cmake版本
linux·运维·ubuntu
若兰幽竹2 小时前
【从零开始编写数据库:基于Python语言实现数据库ToyDB的ACID特性】
数据库·python
宇钶宇夕2 小时前
S7-200 SMART CPU 密码清除全指南:从已知密码到忘记密码的解决方法
运维·服务器·数据库·程序人生·自动化