致谢:Linux常用命令大全(手册) – 真正好用的Linux命令在线查询网站 提供的命令查询
这一期部分介绍借用了网站内容.
头部内容获取(head)
head命令的功能是显示文件开头的内容,默认值为前10行。
指令参数:
-n | 定义显示行数 |
-c | 指定显示头部内容的字符数 |
-v | 总是显示文件名的头信息 |
-q | 不显示文件名的头信息 |
实例:
head一个25行内容的文本文件可以看到默认显示头10行。
[root@machine ~]$ head filename
指定显示一个文本文件默认十行,且显示其文件名在上方。
[root@machine ~]$ head -v filename
指定显示文件的前20个字符:
head -c 20 filename
尾部内容获取(tail)
tail 命令用于查看文件的末尾内容。默认情况下,tail 会在终端中显示指定文件的最后 10 行。如果您同时指定多个文件,tail 会在每个文件内容之前添加文件名,以便于区分不同文件的输出。
通过使用 -f 参数,您可以实现对文件尾部最新内容的持续监控。这一功能非常适合于实时查看日志文件,类似于机场候机厅的大屏幕,始终显示最新消息,而无需手动刷新。使用 tail -f 文件名 命令,您将能够实时获取文件中新增的内容,便于及时了解文件的变化。
指令参数:
-c | 输出文件尾部的N(N为整数)个字节内容 |
-f | 持续显示文件最新追加的内容 |
-F | 与选项“-follow=name”和“--retry”连用时功能相同 |
-n | 输出文件的尾部N(N位数字)行内容 |
--retry | 即是在tail命令启动时,文件不可访问或者文件稍后变得不可访问,都始终尝试打开文件。 |
--pid= | 与“-f”选项连用,当指定的进程号的进程终止后,自动退出tail命令 |
--help | 显示指令的帮助信息 |
--version | 显示指令的版本信息 |
实例:
默认显示某个文件尾部的后10行内容:
tail initial test
指定显示某个文件尾部的后5行内容:
tail -n 5 filename
指定显示某个文件尾部的后15个字节:
tail -c 30 initial filename
- 持续刷新显示某个文件尾部的后10行内容:
tail -f /path1/path2/filename
下面是一个简单的 C 程序,它会不断地向当前路径下的 test 文件写入带行数的内容。你可以在一个终端中运行这个程序,并在另一个终端中使用 tail -f test 命令实时监视文件的变化。
C 程序代码:
#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;
}
使用方式:
- 编译代码,将上述代码保存为 writer.c,然后在终端中运行以下命令来编译:
gcc -o writer writer.c
- 运行程序在一个终端中运行编译好的程序:
./writer
- 监视文件
在另一个终端中使用 tail -f 命令监视文件 test 的变化:
tail -f test
效果:
- 当你运行 ./writer 后,程序将每秒向 test 文件追加一行内容,内容格式为 "This is line X",其中 X 是行号。
- 在另一个终端中使用 tail -f test 命令时,你会看到文件的变化,实时输出新添加的行。
通过这种方式,你可以同时观察 C 程序向文件写入的过程以及使用 tail -f 实时监视文件内容。
可以使用管道将 tail -f 的输出传递给 grep,筛选出特定的内容:
tail -f /var/log/syslog | grep "error"
中间部分内容获取:
cat tmp.txt
tail - 10.txt
思路是取到最大后截断尾部
使用文件处理指令对数据进行级联操作,这就叫做流水线处理
cat .txt | head -610 | tail-10|tac
tail-50 tep.txt | less
在Linux操作系统中,管道(|)是一个特殊的符号,用于连接两个或多个命令,将一个命令的输出作为另一个命令的输入。通过使用管道,可以将多个命令串联起来,实现更复杂的操作。例如,可以使用管道将一个命令的输出传递给另一个命令进行处理,或者将多个命令组合在一起以实现更复杂的功能。管道是Linux中非常强大和常用的功能之一,可以提高命令行操作的效率和灵活性。
以下是一些Linux中经典的流水线处理示例:
使用grep和wc命令统计文件中包含特定关键词的行数:
cat file.txt | grep "keyword" | wc -l
使用ps和grep命令查找特定进程:
ps aux | grep "process_name"
使用ls和sort命令列出目录中的文件并按文件大小排序:
ls -l | sort -k 5 -n
使用find和xargs命令查找特定类型的文件并执行操作:
find . -name "*.txt" | xargs rm
这些示例演示了如何使用管道将多个命令连接在一起,实现复杂的数据处理和操作。通过灵活使用流水线处理,可以大大提高在Linux系统上的命令行操作效率和灵活性。
统计行数(WC)
wc命令来自于英文词组“Word count”的缩写,其功能是用于统计文件的字节数、单词数、行数等信息,并将统计结果输出到终端界面。利用wc命令可以很快的计算出准确的单词数及行数,评估出文本的内容长度,要想了解一个文件,不妨先wc一下吧~
wc [参数] 文件
指令参数:
-w | 统计单词数 |
-c | 统计字节数 |
-l | 统计行数 |
-m | 统计字符数 |
-L | 显示最长行的长度 |
--help | 显示帮助信息 |
--version | 显示版本信息 |
实例:
统计指定文件的单词数量:
wc -w filename
统计指定文件的字节数量::
wc -c filename
集合:显示行数,字符数,字节数,单词数
wc -l -m -c -w test
去重(uniq)
uniq命令来自于英文单词unique的缩写,中文译为独特的、唯一的,其功能是用于去除文件中的重复内容行。uniq命令能够去除掉文件中相邻的重复内容行,如果两端相同内容中间夹杂了其他文本行,则需要先使用sort命令进行排序后再去重复,这样保留下来的内容就都是唯一的了。
uniq [参数] 文件
参数:
-c | 打印每行在文本中重复出现的次数 |
-d | 每个重复纪录只出现一次 |
-u | 只显示没有重复的纪录 |
实例:
对指定文件显示时执行去重操作:
只显示未重复文件:
uniq -u test
仅显示指定文件中存在一摸一样内容行的信息:
uniq -d Filename
排序(sort)
sort命令的功能是对文件内容进行排序。有时文本中的内容顺序不正确,一行行地手动修改实在太麻烦了。此时使用sort命令就再合适不过了,它能够对文本内容进行再次排序。
sort [参数] 文件
参数:
-b | 忽略每行前面开始出的空格字符 |
-c | 检查文件是否已经按照顺序排序 |
-d | 除字母、数字及空格字符外,忽略其他字符 |
-f | 将小写字母视为大写字母 |
-i | 除040至176之间的ASCII字符外,忽略其他字符 |
-m | 将几个排序号的文件进行合并 |
-M | 将前面3个字母依照月份的缩写进行排序 |
-n | 依照数值的大小排序 |
-o | 将排序后的结果存入制定的文件 |
-r | 以相反的顺序来排序 |
-t | 指定排序时所用的栏位分隔字符 |
-k | 指定需要排序的栏位 |
实例:
对指定的文件内容按照字母顺序进行排序:
cat Filename sort Filename
显示日历(cal)
cal命令的名字来自英语单词“Calendar”。改命令用来显示当前日历,或者指定日期的公历(公历是现在国际通用的历法,又称格列历,通称阳历。)如只有一个参数,则表示年份(1-9999),如有两个参数,则表示月份和年份 。
cal [参数] [月份] [年份]
参数:
-l | 单月分输出日历 |
-3 | 显示最近三个月的日历 |
-s | 将星期天作为月的第一天 |
-m | 将星期一作为月的第一天 |
-j | 显示在当年中的第几天(儒略日) |
-y | 显示当年的日历 |
实例:
显示当前月份的日历:
cal
显示近期三个月的日历(当前月,上一个月和下一个月):
cal -3
显示指定年月的日历,如显示1998年2月的日历:
cal 2 1998
显示该日期是当年中的第几天:
终端显示内容(cat)
cat命令来自于英文单词concatenate的缩写,其功能是用于查看文件内容。在Linux系统中有很多用于查看文件内容的命令,例如more、tail、head……等等,每个命令都有各自的特点。cat命令适合查看内容较少的、纯文本的文件。
对于内容较多的文件,使用cat命令查看后会在屏幕上快速滚屏,用户往往看不清所显示的具体内容,只好按Ctrl+c键中断命令的执行,所以对于大文件,干脆用more命令吧~
参数:
-n | 显示行数(空行也编号) |
-s | 显示行数(多个空行算一个编号) |
-b | 显示行数(空行不编号) |
-E | 每行结束处显示$符号 |
-T | 将TAB字符显示为 ^I符号 |
-v | 使用 ^ 和 M- 引用,除了 LFD 和 TAB 之外 |
-e | 等价于”-vE”组合 |
-t | 等价于”-vT”组合 |
-A | 等价于 -vET组合 |
--help | 显示帮助信息 |
--version | 显示版本信息 |
实例:
查看文件内容:
cat Filename
查看某个文件的内容,并显示行号:
cat -n Filename
搭配空设备文件和输出重定向操作符,将某个文件内容清空:
cat /dev/null > Filename cat Filename
持续写入文件内容,直到碰到EOF符后才会结束并保存:
cat > Filename << EOF
输出字符串或提取后的变量值(echo)
echo是用于在终端设备上输出指定字符串或变量提取后值的命令,能够给用户一些简单的提醒信息,也可以将输出的指定字符串内容同管道符一起传递给后续命令作为标准输入信息再来进行二次处理,又或者同输出重定向符一起操作,将信息直接写入到文件中。
如需提取变量值,需在变量名称前加入$符号做提取,变量名称一般均为大写形式。
echo [参数] 字符串/变量
参数:
-n | 不输出结尾的换行符 |
-e “\a” | 发出警告音 |
-e “\b” | 删除前面的一个字符 |
-e “\c” | 结尾不加换行符 |
-e “\f” | 换行,光标扔停留在原来的坐标位置 |
-e “\n” | 换行,光标移至行首 |
-e “\r” | 光标移至行首,但不换行 |
-E | 禁止反斜杠转移,与-e参数功能相反 |
—version | 查看版本信息 |
--help | 查看帮助信息 |
实例:
输出指定字符串到终端设备界面(默认为电脑屏幕):
echo hello echo
输出某个变量值内容
搭配输出重定向符一起使用,将字符串内容直接写入文件中:
echo "Hello echo" > Filename
搭配反引号执行命令,并将执行结果输出:
echo `uptime`
使用所有参数,猜猜结果:
echo -e "Hello \a\an\fecho\n123\r321\b\c"
致谢:Linux常用命令大全(手册) – 真正好用的Linux命令在线查询网站 提供的命令查询