【Linux指令 (三)】从理解到熟悉:探索Linux底层逻辑与指令的高效之道,理解Linux系统理论核心概念与基础指令

【Linux指令 (三)】从理解到熟悉:探索Linux底层逻辑与指令的高效之道,理解Linux系统理论核心概念与基础指令

🔥艾莉丝努力练剑:个人主页

专栏传送门:《C语言》《数据结构与算法》C/C++干货分享&学习过程记录Linux操作系统编程详解笔试/面试常见算法:从基础到进阶

⭐️为天地立心,为生民立命,为往圣继绝学,为万世开太平


🎬艾莉丝的简介:


🎬艾莉丝的Linux专栏简介:


目录

前期提示

1  ~>  本期指令

2  ~>  查看相关的指令

19  cat

19.1  概念

19.2  实践

19.2.1  写入一句话

19.2.2  追加写

19.2.3  -n:带行号

19.2.4  -s:不能输出多行空行

19.2.5  -b:非空带编号,空行不带编号

19.2.6  -sb

19.3  cat  && 重定向

19.4  常用选项

19.5  举例

19.6  大文件:刷屏问题

20  nano(补充)

20.1  概念

20.2  快捷键

21  tac

21.1  概念

21.2  实践

21.3  记忆

22  more

22.1  概念

22.2  功能

22.3  缺点

22.4  结论

22.5  常用选项

22.6  举例

22.7  实践

22.7.1  more的使用特点

22.7.2  more的下翻快捷键

22.7.3  more的搜索

23  less

23.1  概念

23.3  常用选项

23.4  实践

23.5  举例

24  head

24.1  概念

24.2  功能

24.3  常用选项

24.4  示例

24.5  实践

24.6  管道:匿名管道  &&  命名管道

25  tail

25.1  概念

25.2  功能

25.3  常用选项

25.4  示例:重定向  &&  管道

25.5  实践

26  date

26.1  概念

26.2  指定格式显示时间

26.3  功能

26.3.1  在显示方面

26.3.2  在设定时间方面

26.4  时间戳

26.5  博主手记

26.6  举例

26.7  实践

27  cal

27.1  概念

27.2  功能

27.3  常用选项

27.4  举例

27.5  实践

27.5.1  cal 年份

27.5.2  cal -数字

28  find

28.1  概念

28.2  本质

28.3  功能

28.4  常用选项

28.5  示例

29  whereis(不常用)

29.1  功能

29.2  举例

29.3  实践

30  grep(重点)

30.1  概念

30.2  功能——grep有什么用?

30.2.1  grep有什么用?

30.3  常用选项

30.4  博主手记

30.5  示例 / 实践

31  top

31.1  概念

31.2  任务管理器  &&  task

31.2.1  任务管理器

31.2.2  task(进程)

31.3  常见选项和退出键

31.4  实践

31.5  top task

32  zip / unzip

32.1  功能

32.2  常用选项

32.3  举例

32.3.1  将test2目录压缩

32.3.2  解压到tmp目录

32.4  下载

32.5  rzsz

32.5.1  SZ(send)

32.5.2  rz(receive):Windows -> Linux

结尾


前期提示

1  ~>  本期指令

2  ~>  查看相关的指令



19  cat

19.1  概念

查看目标文件的内容。

19.2  实践

19.2.1  写入一句话

19.2.2  追加写

19.2.3  -n:带行号

19.2.4  -s:不能输出多行空行

加了这个选项就不能输出多行空行了——

19.2.5  -b:非空带编号,空行不带编号

19.2.6  -sb

19.3  cat  && 重定向

19.4  常用选项

上面已经演示过了——

19.5  举例

# 命令⾏构建多⾏⽂本 [whb@bite-alicloud test]$ cnt=0; while [ $cnt -le 20 ]; do echo "hello bite"; let cnt++; done > temp.txt # 测试cat基本命令 [whb@bite-alicloud test]$ cat temp.txt hello bite hello bite hello bite hello bite hello bite hello bite hello bite hello bite hello bite hello bite hello bite hello bite hello bite hello bite hello bite hello bite hello bite hello bite hello bite hello bite hello bite # cat 输出携带⾏号 [whb@bite-alicloud test]$ cat -b temp.txt 1 hello bite 2 hello bite 3 hello bite 4 hello bite 5 hello bite 6 hello bite 7 hello bite ... # 修改temp.txt,使其携带多⾏空⾏ [whb@bite-alicloud test]$ vim temp.txt # 测试 -b 对⾮空输出⾏编号 [whb@bite-alicloud test]$ cat -b temp.txt 1 hello bite 2 hello bite 3 hello bite 4 hello bite 5 hello bite 6 hello bite 7 hello bite ... # 测试-n 对输出的所有⾏编号 [whb@bite-alicloud test]$ cat -n temp.txt 1 hello bite 2 hello bite 3 hello bite 4 5 6 7 hello bite 8 hello bite 9 10 hello bite 11 hello bite ... # 测试 -s 不输出多⾏空⾏,多⾏空⾏压缩成为⼀⾏ [whb@bite-alicloud test]$ cat -s temp.txt hello bite hello bite hello bite hello bite hello bite hello bite hello bite hello bite ... 

19.6  大文件:刷屏问题

cat不好使了——


20  nano(补充)

20.1  概念

类似于Windows的记事本,相当于Linux的记事本。

20.2  快捷键

^X:Ctrl + X —— 保存修改内容。

Y:y —— 确认。

我这里存了两次——


21  tac

如果我想倒着打印,可以怎么做?

21.1  概念

tac也可以查看,从前往后打。

21.2  实践

21.3  记忆

cat  ~>  tac(两个指令的拼写刚好是逆转,所以tac是倒着打印)


22  more

22.1  概念

按行向下翻查(Enter回车向下翻)——不会刷屏。

22.2  功能

more命令,功能类似 cat。

22.3  缺点

more命令不支持上翻(回翻不了),只能先按“Q”(quit)退出。

22.4  结论

more现在没什么用,可能公司里面还有老程序员在使用,现在主流的查看大文件的指令是接下来我要介绍的less。more没什么用,但是为了知识学习的完整性,还是要介绍。

22.5  常用选项

-n:指定输出行数

q(quit):退出more

22.6  举例

# 命令⾏输出多⾏⽂本 [whb@bite-alicloud test]$ cnt=0; while [ $cnt -le 2000 ]; do echo "hello bite"; let cnt++; done > temp.txt # -n 指定输出⾏数 [whb@bite-alicloud test]$ more -10 temp.txt hello bite hello bite hello bite hello bite hello bite hello bite hello bite hello bite hello bite hello bite --More--(0%)

22.7  实践

22.7.1  more的使用特点

more会打满一整行,然后就停下来了——

22.7.2  more的下翻快捷键

此时按“Enter”回车就可以逐行往下翻了!

22.7.3  more的搜索

/数字

23  less

23.1  概念

可上翻、下翻、搜索。

(1)less工具也是对文件或其它输出进行分页显示的工具,应该说是linux正统查看文件内容的工具,功能极其强大;
(2)less的用法比起more更加的有弹性,在more的时候,我们并没有办法向前面翻,只能往面看;

(3)但若使用了less时,就可以使用[pageup][pagedown]等按键的功能来往前往后翻看文件,更容易用来查看一个文件的内容;

(4)除此之外,在less里头可以拥有更多的搜索功能,不止可以向下搜,也可以向上搜。

23.2  功能

less与more类似,但使用less可以随意浏览文件,而more仅能向前移动,却不能向后移动,而且less在查看之前不会加载整个文件。

23.3  常用选项

23.4  实践

23.5  举例

# 命令⾏输出多⾏⽂本 [whb@bite-alicloud test]$ cnt=0; while [ $cnt -le 2000 ]; do echo "hello $cnt"; let cnt++; done > temp.txt # 测试搜索和-N等功能 [whb@bite-alicloud test]$ less -N temp.txt 1 hello 0 2 hello 1 3 hello 2 4 hello 3 5 hello 4 6 hello 5 7 hello 6 8 hello 7 9 hello 8 10 hello 9 11 hello 10 12 hello 11 13 hello 12 14 hello 13 ... # 其他选项也可以直接测试 

24  head

24.1  概念

head 与 tail就像它的名字一样的浅显易懂,它是用来显示开头或结尾某个数量的文字区块,head用来显示档案的开头至标准输出中,而tail想当然尔就是看档案的结尾。

24.2  功能

head用来显示档案的开头至标准输出中——查看头几个,默认head命令打印其相应文件的开头10行。

24.3  常用选项

-n<行数>显示的行数

24.4  示例

[whb@bite-alicloud test]$ head temp.txt hello 0 hello 1 hello 2 hello 3 hello 4 hello 5 hello 6 hello 7 hello 8 hello 9 [whb@bite-alicloud test]$ head -5 temp.txt hello 0 hello 1 hello 2 hello 3 hello 4

24.5  实践

查看开头三个——

24.6  管道:匿名管道  &&  命名管道

大家看我的【博主手记】吧!


25  tail

25.1  概念

tail命令从指定点开始将文件写到标准输出.使用tail命令的-f选项可以方便的查阅正在改变的日志文件,tail-ffilename会把filename里最尾部的内容显示在屏幕上,并且不断刷新,使你看到最新的文件内容。

25.2  功能

用于显示指定文件末尾内容,不指定文件时,作为输入信息进行处理。常用查看日志文件。

25.3  常用选项

-f:循环读取

-n:显示行数

25.4  示例:重定向  &&  管道

# 基本功能演⽰ [whb@bite-alicloud test]$ tail temp.txt hello 1991 hello 1992 hello 1993 hello 1994 hello 1995 hello 1996 hello 1997 hello 1998 hello 1999 hello 2000 [whb@bite-alicloud test]$ tail -3 temp.txt hello 1998 hello 1999 hello 2000

模拟动态日志查看功能。

# 综合问题 # 如何显⽰⽂件的[180,200]⾏的内容 [whb@bite-alicloud test]$ head -200 temp.txt | tail -20 hello 180 hello 181 hello 182 hello 183 hello 184 hello 185 hello 186 hello 187 hello 188 hello 189 hello 190 hello 191 hello 192 hello 193 hello 194 hello 195 hello 196 hello 197 hello 198 hello 199 

25.5  实践

查最后一行——

查看结尾三个——


26  date

26.1  概念

获取时间(提炼时间)。

这个时间指的是格林尼治时间。

26.2  指定格式显示时间

date +%Y:%m:%d

26.3  功能

26.3.1  在显示方面

使用者可以设定欲显示的格式,格式设定为一个加号后接数个标记,其中常用的标记列表如下——

%H:小时(00...23)

%M:分钟(00...59)

%S:秒(00...61)

%X:相当于%H:%M:%S

%d :日 (01...31)

%m:月份(01...12)

%Y:完整年份(0000.9999)

%F:相当于%Y-%m-%d

26.3.2  在设定时间方面

date-s  //设置当前时间,只有root权限才能设置,其他只能查看。
date-s20080523  //设置成20080523,这样会把具体时间设置成空00:00:00
date-s01:01:01  //设置具体时间,不会对日期做更改
date-s“01:01:012008-05-23"  //这样可以设置全部时间
date -S:“01:01:0120080523”  //这样可以设置全部时间
date-s“2008-05-23 01:01:01"  //这样可以设置全部时间
date-s“20080523 01:01:01"  //这样可以设置全部时间

26.4  时间戳

(1)时间->时间戳:date +%s

(2)时间戳->时间:date-d@1508749502

(3)Unix 时间戳(英文为Unix epoch,Unix time,POSIX time或Unix timestamp)是从1970年1月1日(UTC/GMT的午夜)开始所经过的秒数,不考虑闰秒

26.5  博主手记

26.6  举例

# 显⽰常规时间 [whb@bite-alicloud test]$ date Wed Jan 11 18:22:50 CST 2023 [whb@bite-alicloud test]$ date +%Y/%m/%d 2023/01/11 [whb@bite-alicloud test]$ date +%Y/%m/%d-%H:%M:%S 2023/01/11-18:23:20 # 显⽰时间戳 [whb@bite-alicloud test]$ date +%s 1673432636 # 时间戳转成可视时间 [whb@bite-alicloud test]$ date +%Y/%m/%d-%H:%M:%S -d @0 1970/01/01-08:00:00 [whb@bite-alicloud test]$ date +%Y/%m/%d-%H:%M:%S -d @100000 1970/01/02-11:46:40 [whb@bite-alicloud test]$ date +%Y/%m/%d-%H:%M:%S -d @1000000000 2001/09/09-09:46:40 

26.7  实践

获取年——

获取年月日时间——

格林尼治时间不符合中国人的时间观,我们这样看年月日就清楚多了。


27  cal

27.1  概念

获取日历。

现如今互联网时代,手机如此普及,打开软件就能看,不需要通过日历来看日子了。

27.2  功能

用于查看日历等时间信息,如只有一个参数,则表示年份(1-9999),如有两个参数,则表示月份和年份。

27.3  常用选项

-3:显示系统前一个月,当前月,下一个月的月历;
j:显示在当年中的第几天(一年日期按天算,从1月1号算起,默认显示当前月在一年中的天数);
-y:显示当前年份的日历。

27.4  举例

# 常规样例 [whb@bite-alicloud test]$ cal January 2023 Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 [whb@bite-alicloud test]$ cal 1949 1949 January February March Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa 1 1 2 3 4 5 1 2 3 4 5 2 3 4 5 6 7 8 6 7 8 9 10 11 12 6 7 8 9 10 11 12 9 10 11 12 13 14 15 13 14 15 16 17 18 19 13 14 15 16 17 18 19 16 17 18 19 20 21 22 20 21 22 23 24 25 26 20 21 22 23 24 25 26 23 24 25 26 27 28 29 27 28 27 28 29 30 31 ... [whb@bite-alicloud test]$ cal -3 December 2022 January 2023 February 2023 Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa 1 2 3 1 2 3 4 5 6 7 1 2 3 4 4 5 6 7 8 9 10 8 9 10 11 12 13 14 5 6 7 8 9 10 11 11 12 13 14 15 16 17 15 16 17 18 19 20 21 12 13 14 15 16 17 18 18 19 20 21 22 23 24 22 23 24 25 26 27 28 19 20 21 22 23 24 25 25 26 27 28 29 30 31 29 30 31 26 27 28 

27.5  实践

27.5.1  cal 年份

27.5.2  cal -数字


28  find

28.1  概念

(全局)全目录查找。

28.2  本质

本质:遍历(深度广度优先)目录结构——Linux的目录是多叉树结构。

28.3  功能

用于在文件树中查找文件,并作出相应的处理(可能访问磁盘)。

28.4  常用选项

-name按照文件名查找文件;

其他选项需要在查,这个命令其实比较复杂。

28.5  示例

# 在指定路径下搜索执⾏名称的⽂件 [whb@bite-alicloud test]$ find ~ -name test.c /home/whb/test_code/old_code/test.c /home/whb/test_code/test.c ...

29  whereis(不常用)

29.1  功能

用于找到程序的源、二进制文件或手册。

29.2  举例

[whb@bite-alicloud test]$ whereis ls ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz /usr/share/man/man1p/ls.1p.gz [whb@bite-alicloud test]$ whereis libc.so libc: /usr/lib64/libc.so /usr/lib64/libc.a /usr/share/man/man7/libc.7.gz 

29.3  实践


30  grep(重点)

30.1  概念

grep是一个对文本内容进行行过滤的工具。

30.2  功能——grep有什么用?

在文件中搜索字符串,将找到的行打印出来。

30.2.1  grep有什么用?

30.3  常用选项

-i:忽略大小写的不同,所以大小写视为相同;
-n:顺便输出行号;
-V:反向选择,即显示出没有 '搜寻字符串' 内容的那一行。

30.4  博主手记

30.5  示例 / 实践

[whb@bite-alicloud test]$ cat temp.txt abcd ABCD hello bite 1234 #基本查找 [whb@bite-alicloud test]$ grep "abcd" temp.txt abcd # 忽略⼤⼩写的不同,所以⼤⼩写视为相同 [whb@bite-alicloud test]$ grep -i "abcd" temp.txt abcd ABCD # 顺便输出⾏号 [whb@bite-alicloud test]$ grep -n "abcd" temp.txt 1:abcd [whb@bite-alicloud test]$ grep -ni "abcd" temp.txt 1:abcd 2:ABCD # 反向选择,亦即显⽰出没有 '搜寻字符串' 内容的那⼀⾏ [whb@bite-alicloud test]$ grep -v "abcd" temp.txt ABCD hello bite 1234 [whb@bite-alicloud test]$ grep -vn "abcd" temp.txt 2:ABCD 3:hello 4:bite 5:1234 [whb@bite-alicloud test]$ grep -vni "abcd" temp.txt 3:hello 4:bite 5:1234

31  top

31.1  概念

类似于Windows的任务管理器,相当于Linux的任务管理器。

31.2  任务管理器  &&  task

31.2.1  任务管理器

这就是Windows的任务管理器——

31.2.2  task(进程)

task就是进程,其实准确的翻译应该是“任务”,国内叫“进程”,主要是“任务”两个字没有动态感,而进程有。

31.3  常见选项和退出键

top -d 1 -n 5 -d: 刷新的时间间隔 -n: 刷新的次数 q:退出

31.4  实践

31.5  top task


32  zip / unzip

32.1  功能

将目录或文件压缩成zip格式。

32.2  常用选项

-r:(递归式的打包压缩)递归处理,将指定目录下的所有文件和子目录一并处理。

32.3  举例

32.3.1  将test2目录压缩

zip test2.zip test2/*

32.3.2  解压到tmp目录

unzip test2.zip -d /tmp

32.4  下载

32.5  rzsz

这个工具用于windows机器和远端的Linux机器通过XShell传输文件。安装完毕之后可以通过拖拽的方式将文件上传过去。

sudo yum/apt install -y lrzlz

32.5.1  SZ(send)

32.5.2  rz(receive):Windows -> Linux

也可以直接拖拽,也可以选择rz -E(没有-E回乱码)。


结尾

uu们,本文的内容到这里就全部结束了,感谢您的阅读!

往期回顾:

【Linux指令 (二)】不止于入门:探索Linux系统核心与指令的深层逻辑,理解Linux系统理论核心概念与基础指令

结语:本期我们在前一篇博客的基础上继续深入学习了Linux中的指令篇,希望对学习Linux指令相关内容的uu有所帮助,不要忘记给博主“一键四连”哦!

🗡博主在这里放了一只小狗,大家看完了摸摸小狗放松一下吧!🗡

૮₍ ˶ ˊ ᴥ ˋ˶₎ა

Read more

C++新手入门学习教程(完整版)

C++新手入门学习教程(完整版)

以下教程覆盖了 C++ 学习的各个方面,适合初学者循序渐进地学习。学习过程中,建议初学者多做练习和项目,以加深对理论知识的理解。希望这个教程能为你提供一个清晰的学习路径。 目录 第一章:C++ 简介 1.1 C++ 的历史与演变 1.2 C++ 的特点和优势 1.3 C++ 的应用领域 1.4 C++ 的未来展望 第二章:环境搭建 2.1 安装 C++ 编译器与 IDE Windows Linux Mac 2.2 配置开发环境 2.3 编译与运行示例程序 第三章:基本语法 3.1 C+

By Ne0inhk
C++幻象:内存序、可见性与指令重排

C++幻象:内存序、可见性与指令重排

C++ 井发的假象:内存序、可见性与指令重排 写在前面:当你第一次把 std::atomic、memory_order 这些词读到手软时,可能会觉得这是 OS 或硬件工程师的专属领域。但其实理解内存模型并不需要掌握每一条 CPU 手册的汇编,只要抓住核心概念与工程实践,你就能写出既高效又安全的并发代码。 本文面向有一定 C++ 并发基础的读者(知道线程、互斥量、基本的 std::atomic 用法),但想把“为什么这样”弄清楚。我们会从 std::atomic 的语义出发,讲清 CPU cache coherence、内存屏障(fence)、指令重排 和 happens-before 的关系——不是空洞的定义,而是大量实战例子、容易踩的坑和调试技巧。文风尽量自然、通俗,

By Ne0inhk

为什么单片机开发中C语言仍是主流?深入对比C++的生态与效率瓶颈

1. 单片机开发的编程语言选择现状 在嵌入式开发领域,特别是单片机编程中,C语言长期以来都是绝对的主流选择。我记得刚开始接触STM32开发时,导师第一句话就是"先把C语言基础打扎实",后来才明白这句话背后的深意。虽然C++作为更现代的编程语言,在桌面应用和服务器领域大放异彩,但在资源受限的单片机环境中,C语言依然牢牢占据着主导地位。 这不仅仅是技术偏好问题,更是由单片机本身的特性决定的。大多数单片机的Flash存储空间只有几十KB到几百KB,RAM更是以KB为单位计算。在这种苛刻的环境下,每个字节都显得格外珍贵。C语言生成的代码体积小,执行效率高,正好契合这种需求。而C++虽然提供了面向对象等高级特性,但带来的额外开销在单片机环境下往往难以承受。 从我多年的实际项目经验来看,90%以上的单片机项目都是用C语言开发的。特别是在工业控制、汽车电子、家电控制等领域,C语言的稳定性和可靠性经过了长期验证。虽然现在有些高性能单片机开始尝试使用C++,但这仍然只是少数情况,C语言的主流地位在可预见的未来都不会改变。 2. C语言在单片机领域的核心优势 2.1 极致的代码效率与资源控制

By Ne0inhk
【C++指南】STL stack 完全解读(一):从入门到掌握基础操作

【C++指南】STL stack 完全解读(一):从入门到掌握基础操作

.💓 博客主页:倔强的石头的ZEEKLOG主页 📝Gitee主页:倔强的石头的gitee主页 ⏩ 文章专栏:《C++指南》 期待您的关注 文章目录 * 引言 * 一、C++ STL stack全景解析 * 1.1 容器适配器的本质 * 1.2 核心价值剖析 * 二、stack核心操作深度解读 * 2.1 基础操作矩阵 * 2.2 实战代码演练 * 示例1:基础操作全流程 * 示例2:经典括号匹配算法 * 三、进阶应用场景 * 3.1 表达式求值 * 3.2 函数调用栈 * 3.3 算法优化 * 结语 引言 作为线性数据结构的经典代表,栈(stack)以其独特的后进先出(LIFO)

By Ne0inhk