
🔥小叶-duck:个人主页
❄️个人专栏:《Data-Structure-Learning》《C++入门到进阶&自我学习过程记录》
《Linux操作系统从入门到实践》
《算法题讲解指南》--优选算法
《算法题讲解指南》--递归、搜索与回溯算法
《算法题讲解指南》--动态规划算法
✨未择之路,不须回头
已择之路,纵是荆棘遍野,亦作花海遨游
目录
[26、uname -r指令](#26、uname -r指令)
[Shell 以及运行原理](#Shell 以及运行原理)
[核心角色定位:Shell 是 "翻译官",内核是 "执行者"](#核心角色定位:Shell 是 “翻译官”,内核是 “执行者”)
Linux基本指令
文件压缩与远程传输指令
23、tar指令(文件归档与压缩利器)
功能 :打包/解包,不打开它,直接看内容
语法:tar[-cxtzjvf]文件与目录
参数:
- -c:建立一个压缩文件的参数指令(create的意思);
- -x:解开一个压缩文件的参数指令!
- -t:查看tarfile里面的文件!
- -z:是否同时具有gzip的属性?亦即是否需要用gzip压缩?
- -j:是否同时具有bzip2的属性?亦即是否需要用bzip2压缩?
- -v:压缩的过程中显示文件!这个常用,但不建议用在背景执行过程!
- -f:使用档名,请留意,在f之后要立即接档名喔!不要再加参数!
- -C:解压到指定目录
参数组合:(这里需要注意 -f后不能再加别的参数)
- tar -czf:静默打包并压缩目录,适合脚本中后台执行(不输出过程信息)
- tar -xzf:静默解压 .tar.gz 格式的压缩包,快速恢复文件
- tar -xzf -C:指定解压目录,避免文件散落在当前目录(-C 后接目标路径)
- tar -cvzf:带详细输出的打包压缩(-v 参数显示每个处理的文件)
- tar -xvzf:带详细输出的解压(适合确认解压内容是否正确)
实际案例:
bash
#===============================================
# 示例 1: 使用 tar -czf 打包并压缩目录(不显示过程)
#===============================================
# 创建测试目录和文件
[root@iZbp12ear9ufvimc78fddkZ test]# mkdir test
[root@iZbp12ear9ufvimc78fddkZ test]# echo "测试文件1" > test/file1.txt
[root@iZbp12ear9ufvimc78fddkZ test]# echo "测试文件2" > test/file2.txt
[root@iZbp12ear9ufvimc78fddkZ test]# ls ./test
file1.txt file2.txt
# 打包并压缩 test_dir 目录为 archive.tgz(-c:创建 -z:gzip压缩 -f:指定文件名)
[root@iZbp12ear9ufvimc78fddkZ test]# tar -czf archive.tgz test
[root@iZbp12ear9ufvimc78fddkZ test]# ls
archive.tgz test
#==========================================
# 示例 2: 使用 tar -xzf 解压压缩包(不显示过程)
#==========================================
# 先删除原目录
[root@iZbp12ear9ufvimc78fddkZ test]# rm -rf test
[root@iZbp12ear9ufvimc78fddkZ test]# ls
archive.tgz
# 解压 archive.tgz(-x:解压 -z:识别gzip压缩 -f:指定压缩包)
[root@iZbp12ear9ufvimc78fddkZ test]# tar -xzf archive.tgz
[root@iZbp12ear9ufvimc78fddkZ test]# ls
archive.tgz test
[root@iZbp12ear9ufvimc78fddkZ test]# ll test
total 8
-rw-r--r-- 1 root root 14 May 8 19:40 file1.txt
-rw-r--r-- 1 root root 14 May 8 19:40 file2.txt
#=======================================
# 示例 3: 使用 tar -xzf -C 解压到指定目录
#=======================================
# 创建目标目录
[root@iZbp12ear9ufvimc78fddkZ test]# mkdir target_dir
[root@iZbp12ear9ufvimc78fddkZ test]# ls
archive.tgz target_dir test
# 解压到指定目录 target_dir(-C:指定解压路径)
[root@iZbp12ear9ufvimc78fddkZ test]# tar -xzf archive.tgz -C target_dir
[root@iZbp12ear9ufvimc78fddkZ test]# tree ./target_dir
./target_dir
└── test
├── file1.txt
└── file2.txt
1 directory, 2 files
# ======================================
# 示例 4: 使用 tar -cvzf 打包压缩并显示过程
# ======================================
# -v:显示详细过程(verbose)
[root@iZbp12ear9ufvimc78fddkZ test]# tar -cvzf visible__archive.tgz test
test/
test/file1.txt
test/file2.txt
[root@iZbp12ear9ufvimc78fddkZ test]# ls
archive.tgz target_dir test visible__archive.tgz
# ===================================
# 示例 5: 使用 tar -xvzf 解压并显示过程
# ===================================
# 清理已经存在的测试文件
[root@iZbp12ear9ufvimc78fddkZ test]# rm -rf test
[root@iZbp12ear9ufvimc78fddkZ test]# ls
archive.tgz target_dir visible__archive.tgz
# -v:显示解压的每个文件
[root@iZbp12ear9ufvimc78fddkZ test]# tar -xvzf visible__archive.tgz
test/
test/file1.txt
test/file2.txt
[root@iZbp12ear9ufvimc78fddkZ test]# ls
archive.tgz target_dir test visible__archive.tgz
#====================================
#补充:在任意 tar 命令末尾加 &,例如:
#====================================
tar -czf big_archive.tar.gz /path/to/large_dir & # 后台打包
tar -xzf big_archive.tar.gz -C /target & # 后台解压
# 所以我们大部分时候也可以不用v
24、scp指令(跨机文件传输工具)
功能:scp 基于 SSH 协议实现远程文件拷贝,无需手动登录即可传输,适合服务器间文件同步
- 本地到远程:scp local_file user@remote_ip:/remote/path,如 scp test.txt admin@47.98.198.24:/home/(将本地 test.txt 传到远程 /home 目录)。
- 远程到本地:scp user@remote_ip:/remote/file local_path,如 scp root@47.98.198.24:/etc/hosts ./(将远程 hosts 文件下载到当前目录)。
- 传输目录:加 -r 参数递归传输,scp -r local_dir user@remote_ip:/remote/path。
细节优势:密码不回显,且本地到远程时要输入的密码是要传给的目标机器的密码。
25、bc指令(交互式计算器工具)
功能:bc 解决了 Linux 终端默认不支持浮点运算的问题,是简单计算的高效工具
- 基础使用:直接输入 bc 进入交互模式,支持 + - * / 运算,如 2+5 回车返回 7;输入 quit 退出。
- 结合管道使用:输入 echo "1+2+3+4+5" | bc 直接返回结果15
bash
# 基础使用
[root@iZbp12ear9ufvimc78fddkZ test]# bc
bc 1.06.95
Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'.
2+5
7
2*5
10
5/2
2
5-3
2
quit
#结合管道
[root@iZbp12ear9ufvimc78fddkZ test]# echo "1+2+3+4+5" | bc
15
26、uname -r指令
语法:uname [选项]
功能:uname 用来获取电脑和操作系统的相关信息。
补充说明:uname 可显示 linux 主机所用的操作系统的版本、硬件的名称等基本信息。
常用选项:
-a 或 -all:详细输出所有信息,依次为内核名称,主机名,内核版本号,内核版本,硬件名,处理器类型,硬件平台类型,操作系统名称
lsb_release-a:查看操作系统版本
bash
[root@iZbp12ear9ufvimc78fddkZ test]# uname -r
3.10.0-1160.119.1.el7.x86_64
[root@iZbp12ear9ufvimc78fddkZ test]# uname -a
Linux iZbp12ear9ufvimc78fddkZ 3.10.0-1160.119.1.el7.x86_64 #1 SMP Tue Jun 4 14:43:51 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux
附面试题
1.你的计算机体系结构是什么?
2.如何查看你的 Linux 版本?
3.如何查看你的具体系统发行版?

27、常用热键(Linux中的高频访问键位)
| 热键组合 | 功能描述 |
|---|---|
| Ctrl+c | 强制终止当前运行的程序或进程,常用于中断终端中正在执行的命令(如 ping 测试、长时间运行的脚本等)。 |
| Ctrl+r | 快速搜索历史指令,输入关键字后会匹配最近执行过的含该关键字的指令,方便快速重复执行或编辑历史命令。 |
| Ctrl+d | 等效于 exit 命令,可用于退出当前 Shell 会话(如远程登录后退出服务器),也可在输入模式中表示"输入结束"(如 cat 命令中输入内容后按此键结束输入)。 |
| Tab | 自动补全指令或路径,输入指令前几个字符或路径前几个部分时,按此键会自动补全为完整的指令或路径,减少拼写错误,提升操作效率。 |
以下命令作为扩展:
- 安装和登录命令:login、shutdown、halt、reboot、install、mount、umount、chsh、exit、last;
- 文件处理命令:file、mkdir、grep、dd、find、mv、ls、diff、cat、ln;
- 系统管理相关命令:df、top、free、quota、at、lp、adduser、groupadd、kill、crontab;
- 网络操作命令:ifconfig、ip、ping、netstat、telnet、ftp、route、rlogin、rcp、finger、mail、 nslookup;
- 系统安全相关命令:passwd、su、umask、chgrp、chmod、chown、chattr、sudo ps、who;
- 其它命令:tar、unzip、gunzip、unarj、mtools、man、unendcode、uudecode。
Shell 以及运行原理
核心原理解析
Linux严格意义上说的是⼀个操作系统,我们称之为**"核心(kernel)"** ,但我们⼀般用户,不能直接使用 kernel。而是通过 kernel 的"外壳"程序,也就是所谓的shell,来与 kernel 沟通。如何理解?为什么不能直接使用kernel?

从技术角度:shell的最简单定义,命令行解释器主要包含:
- 将使用者的命令翻译 给核心处理
- 同时,将核心的处理结果 翻译给使用者。
核心角色定位:Shell 是 "翻译官",内核是 "执行者"
以目前的知识储备,我们可能无法很好的理解,那么接下来博主将通过一个故事带大家感性理解一下先:
**故事阶段一:**在一个村子里,老王是村长,他的儿子小王事业有成回到家乡。老王催小王找对象,但小王不擅长与女孩交流。于是,老王请来村里有名的媒婆------王婆。王婆到小王家询问他的心意,小王说:"我喜欢隔壁的如花。"王婆便去如花家说媒。如花表示不认识小王,王婆提醒:"他是你小学同学呀。"如花想起来了,但是认为小王小时候邋遢还是拒绝了。王婆只好回去告诉小王。
故事阶段一理解Shell:
-
小王不亲自去,是因为他不擅长与女孩交流。
-
在Linux中,用户 (小王)通常不直接与内核 (如花)打交道,而是通过Shell (王婆)传递用户输入的指令("喜欢如花")。
-
Shell解析并执行命令,内核处理请求,执行失败则需要反馈给用户。
故事阶段二:小王不死心,请王婆再去争取。王婆刚走到如花家附近,就看见如花正和隔壁的小帅及他家人一起吃饭,顿时明白如花已有对象。王婆没有将消息传给如花就直接返回,告诉小王此事不可为。
故事阶段二理解Shell:
-
王婆在传递请求前,先判断情况,拒绝了不合理的要求。
-
正如Shell能在一定程度上拦截非法或危险请求 ,保护内核免受直接干扰。
故事阶段三:小王仍不放弃,王婆本要拒绝,但又想到小王的父亲老王是村里的村长,碍于情面只好答应。但她担心事情办不成会砸招牌,于是想出一个办法:成立"王婆婚介公司",招聘实习生去执行任务。成功了说明是王婆指导有方,失败了也无妨,只能说明是实习生能力不行,换一个实习生再去试试即可。
故事阶段三理解Shell:
-
王婆不亲自冒险,而是派实习生去尝试。
-
这好比Shell不直接执行可能崩溃的任务,而是创建子进程(实习生)去执行。子进程若失败,不影响Shell本身。
总结:
Shell与Bash :Linux 中常用的Shell程序 就是Bash (如which bash所示),用户登录后自动启动,常以"死循环"方式等待用户输入指令。
王婆是Bash,媒婆是Shell ------Shell 是命令行界面的统称 ,Bash 是其中一种具体实现。外壳的多样性 : Windows也有Shell,如图形化界面(GUI)。安卓基于Linux内核,其GUI也是一种Shell。这就是为什么手机厂商常宣传"基于安卓深度定制"(实为定制Shell),而非"优化Linux内核"。
内核才是核心: 我们学习的应是操作系统最核心的部分------内核。无论Shell如何变化,内核始终是基础,选择哪种外壳反而次要。
通过这个故事,我们形象地理解了用户-Shell-内核之间 的关系:Shell作为用户-内核之间的桥梁,既传递指令,也提供保护,还能通过子进程机制增强系统稳定性。内核才是真正的力量中心,而Shell只是我们与它对话的窗口。
结束语
到此,Linux的大部分基础指令我们就全部讲解完了,指令的学习才是我们正式步入Linux系统编程学习的开始。**四篇文章的指令要点,能帮你后续用指令时更精准高效;拆解的 Shell 与内核交互逻辑,也让你不再对 "指令生效" 一知半解。后续操作 Linux 时,试着结合这些认知去选择指令、排查问题,不仅能少踩很多误区,还能更快找到优化方向,让 Linux 技能稳步提升。**希望对大家学习Linux能有所收获!