一. 基础指令首尾与总结

1.1 文件压缩与远程传输指令

1.1.1 tar:文件归档与压缩利器

功能:打包/解包,不打开它,直接看内容
参数组合:(这里需要注意 -f后不能再加别的参数)

  • tar -czf:静默打包并压缩目录,适合脚本中后台执行(不输出过程信息)
  • tar -xzf:静默解压 .tar.gz 格式的压缩包,快速恢复文件
  • tar -xzf -C:指定解压目录,避免文件散落在当前目录(-C 后接目标路径)
  • tar -cvzf:带详细输出的打包压缩(-v 参数显示每个处理的文件)
  • tar -xvzf:带详细输出的解压(适合确认解压内容是否正确)

实际案例

# ==================================================
# 示例 1: 使用 tar -czf 打包并压缩目录 (不显示过程)
# ==================================================
# 创建测试目录和文件
[root@VM-0-3-centos lesson5]# mkdir -p test_dir
[root@VM-0-3-centos lesson5]# echo "测试文件1" > test_dir/file1.txt
[root@VM-0-3-centos lesson5]# echo "测试文件2" > test_dir/file2.txt
[root@VM-0-3-centos lesson5]# ls ./test_dir
file1.txt  file2.txt

# 打包并压缩 test_dir 目录为 archive.tgz (-c:创建 -z:gzip压缩 -f:指定文件名)
[root@VM-0-3-centos lesson5]# tar -czf archive.tgz test_dir
[root@VM-0-3-centos lesson5]# ls
archive.tgz  test_dir


# ==================================================
# 示例 2: 使用 tar -xzf 解压缩包 (不显示过程)
# ==================================================
# 先删除原目录
[root@VM-0-3-centos lesson5]# rm -rf test_dir
[root@VM-0-3-centos lesson5]# ls
archive.tgz

# 解压 archive.tgz (-x:解压 -z:识别gzip压缩 -f:指定压缩包)
[root@VM-0-3-centos lesson5]# tar -xzf archive.tgz
[root@VM-0-3-centos lesson5]# ls
archive.tgz  test_dir
[root@VM-0-3-centos lesson5]# ls -l test_dir
total 8
-rw-r--r-- 1 root root 14 Oct 16 10:28 file1.txt
-rw-r--r-- 1 root root 14 Oct 16 10:28 file2.txt


# ==================================================
# 示例 3: 使用 tar -xzf -C 解压到指定目录
# ==================================================
# 创建目标目录
[root@VM-0-3-centos lesson5]# mkdir -p target_dir
[root@VM-0-3-centos lesson5]# ls
archive.tgz  target_dir  test_dir

# 解压到指定目录 target_dir (-C:指定解压路径)
[root@VM-0-3-centos lesson5]# tar -xzf archive.tgz -C target_dir
[root@VM-0-3-centos lesson5]# ls ./target_dir
test_dir


# ==================================================
# 示例 4: 使用 tar -cvzf 打包压缩并显示过程
# ==================================================
# -v:显示详细过程 (verbose)
[root@VM-0-3-centos lesson5]# tar -cvzf visible__archive.tgz test_dir
test_dir/
test_dir/file2.txt
test_dir/file1.txt
[root@VM-0-3-centos lesson5]# ls
archive.tgz  target_dir  test_dir  visible__archive.tgz


# ==================================================
# 示例 5: 使用 tar -xvzf 解压并显示过程
# ==================================================
# 清理已经存在的测试文件
[root@VM-0-3-centos lesson5]# rm -rf test_dir
# -v:显示解压的每个文件
[root@VM-0-3-centos lesson5]# tar -xvzf visible__archive.tgz
test_dir/
test_dir/file2.txt
test_dir/file1.txt
[root@VM-0-3-centos lesson5]# ls
archive.tgz  target_dir  test_dir  visible__archive.tgz


# ==================================================
#补充: 在任意 tar 命令末尾加 &, 例如:
# ==================================================
tar -czf bigarchive.tar.gz /path/to/large_dir &  # 后台打包
tar -xzf bigarchive.tar.gz -C /target &          # 后台解压
# 所以我们大部分时候也可以不用v
1.1.2 scp:跨机文件传输工具

功能scp 基于 SSH 协议实现远程文件拷贝,无需手动登录即可传输,适合服务器间文件同步

  • 本地到远程scp local_file user@remote_ip:/remote/path,如 scp test.txt Lotso@192.168.1.1:/home/(将本地 test.txt 传到远程 /home 目录)。
  • 远程到本地scp user@remote_ip:/remote/file local_path,如 scp root@192.168.1.1:/etc/hosts ./(将远程 hosts 文件下载到当前目录)。
  • 传输目录:加 -r 参数递归传输,scp -r local_dir user@remote_ip:/remote/path
1.1.3 bc:交互式计算器工具

功能bc 解决了 Linux 终端默认不支持浮点运算的问题,是简单计算的高效工具

  • 基础使用:直接输入 bc 进入交互模式,支持 + - * / 运算,如 2+5 回车返回 7;输入 quit 退出。
  • 结合管道使用:输入 echo "1+2+3+4+5"|bc 直接返回结果15

实际案例

# 基础使用
[root@VM-0-3-centos lesson5]# 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@VM-0-3-centos lesson5]# echo "1+2+3+4+5"|bc
15

1.2 面试题讲解(附带两个指令)

面试题
1.你的计算机体系结构是什么?
2.如何查看你的 Linux 版本?
3.如何查看你的具体系统发行版?

1.3 常用热键

热键组合 功能描述
Ctrl+C 强制终止当前运行的程序或进程,常用于中断终端中正在执行的命令(如 ping 测试、长时间运行的脚本等)。
Ctrl+R 快速搜索历史指令,输入关键字后会匹配最近执行过的含该关键字的指令,方便快速重复执行或编辑历史命令。
Ctrl+D 等效于 exit 命令,可用于退出当前 Shell 会话(如远程登录后退出服务器),也可在输入模式中表示“输入结束”(如 cat 命令中输入内容后按此键结束输入)。
Tab 自动补全指令或路径,输入指令前几个字符或路径前几个部分时,按此键会自动补全为完整的指令或路径,减少拼写错误,提升操作效率。

补充一个关机指令 shutdown

语法shutdown [选项]

常见选项

  • -h:停止系统服务后,立即关机。
  • -r:停止系统服务后,重新启动系统。
  • -t sec:指定延迟 sec 秒后执行关机操作。

以下命令作为扩展:

  • 安装和登录命令: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 与内核交互原理:拆解 “指令生效” 的关键环节

2.1 核心原理解析

Linux严格意义上说的是⼀个操作系统,我们称之为 “核心(kernel)“ ,但我们⼀般用户,不能直接使用kernel。而是通过kernel的“外壳”程序,也就是所谓的shell,来与kernel沟通。如何理解?为什么不能直接使用kernel?

从技术角度:shell的最简单定义,命令行解释器主要包含:

  • 将使用者的命令翻译给核心处理
  • 同时,将核心的处理结果结果翻译给使用者。

2.2 核心角色定位:Shell 是 “翻译官”,内核是 “执行者”

以目前的知识储备,我们可能无法很好的理解,那么接下来博主将通过一个故事带大家感性理解一下先。

故事阶段一:在一个村子里,老王是村长,他的儿子小王事业有成回到家乡。老王催小王找对象,但小王不擅长与女孩交流。于是,老王请来村里有名的媒婆——王婆。王婆到小王家询问他的心意,小王说:“我喜欢隔壁的如花。”王婆便去如花家说媒。如花表示不认识小王,王婆提醒:“他是你小学同学呀。”如花想了想,还是拒绝了。王婆只好回去告诉小王。

阶段一理解

  • 小王不亲自去,是因为他不擅长与女孩交流。

  • 在Linux中,用户(小王)通常不直接与内核(如花)打交道,而是通过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只是我们与它对话的窗口。

2.3 Shell与内核交互过程图解(对应上面的故事)

阶段一:正常命令执行流程

┌─────────┐   请求    ┌─────────┐   传递    ┌─────────┐
│   小王   │ ────────> │  王婆   │ ────────> │  如花   │
│ (用户)  │          │ (Shell) │          │ (内核)  │
└─────────┘          └─────────┘          └─────────┘
     │                    │                    │
     │  "喜欢如花"        │  解析命令          │  处理请求
     │                    │                    │
     │                    │                    │
     │  ←──────────────── ──────────────────── │
     │        反馈结果(拒绝)                    │

关键理解:用户不直接操作内核,需要通过Shell中介

阶段二:Shell拦截非法请求

┌─────────┐   再次请求  ┌─────────┐
│   小王   │ ────────> │  王婆   │
│ (用户)  │           │ (Shell) │
└─────────┘           └─────────┘
                          │
                          │ 检测到异常情况
                          │ (如花已有对象)
                          │
                     ┌─────┴─────┐
                     │ 拒绝执行  │
                     │ 保护内核  │
                     └─────┬─────┘
                           │
     │  ←────────────────── │
     │     直接返回拒绝       │

关键理解:Shell能在传递前拦截危险请求,保护系统

阶段三:创建子进程执行任务

┌─────────┐   坚持请求  ┌─────────┐
│   小王   │ ────────> │  王婆   │
│ (用户)  │           │ (Shell) │
└─────────┘           └─────────┘
                          │
                          │ 创建子进程
              ┌───────────┴───────────┐
              │                       │
          ┌─────┐                 ┌─────┐
          │实习生│                 │实习生│
          │(子进│                 │(子进│
          │ 程) │                 │ 程) │
          └─────┘                 └─────┘
              │                       │
              │ 尝试执行               │ 备份方案
              │                       │
          ┌───┴───┐               ┌───┴───┐
          │成功/失败│              │成功/失败│
          └───┬───┘               └───┬───┘
              └─────────┬─────────────┘
                        │
     │  ←────────────── │
     │     汇总结果       │

关键理解:通过子进程机制,Shell本身不会崩溃

整体架构对比

现实世界比喻:           Linux系统对应:
┌─────────────────┐    ┌─────────────────┐
│      小王        │    │      用户        │
│   (不擅长直接交流) │    │ (不直接操作内核)  │
└────────┬────────┘    └────────┬────────┘
         │                      │
┌────────▼────────┐    ┌────────▼────────┐
│      王婆        │    │      Shell      │
│   (沟通中介)     │    │   (命令解释器)   │
└────────┬────────┘    └────────┬────────┘
         │                      │
┌────────▼────────┐    ┌────────▼────────┐
│      如花        │    │      内核        │
│  (最终决策者)    │    │  (核心资源管理)   │
└─────────────────┘    └─────────────────┘

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐