【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 bite2 hello bite3 hello bite4 hello bite5 hello bite6 hello bite7 hello bite...
# 修改temp.txt,使其携带多⾏空⾏
[whb@bite-alicloud test]$ vim temp.txt
# 测试 -b 对⾮空输出⾏编号
[whb@bite-alicloud test]$ cat -b temp.txt 1 hello bite2 hello bite3 hello bite4 hello bite5 hello bite6 hello bite7 hello bite...
# 测试-n 对输出的所有⾏编号
[whb@bite-alicloud test]$ cat -n temp.txt 1 hello bite2 hello bite3 hello bite4 5 6 7 hello bite8 hello bite9 10 hello bite11 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 02 hello 13 hello 24 hello 35 hello 46 hello 57 hello 68 hello 79 hello 810 hello 911 hello 1012 hello 1113 hello 1214 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]$ calJanuary 2023
Su Mo Tu We Th Fr Sa1 2 3 4 5 6 78 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 19491949 January February March
Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa1 1 2 3 4 5 1 2 3 4 52 3 4 5 6 7 8 6 7 8 9 10 11 12 6 7 8 9 10 11 129 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 -3December 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 44 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有所帮助,不要忘记给博主“一键四连”哦!
🗡博主在这里放了一只小狗,大家看完了摸摸小狗放松一下吧!🗡
૮₍ ˶ ˊ ᴥ ˋ˶₎ა