首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Linux 指令通关指南:从“会敲命令”到“懂内核交互”,彻底掌握 Shell 与系统的对话艺术

Linux 指令通关指南:从“会敲命令”到“懂内核交互”,彻底掌握 Shell 与系统的对话艺术

作者头像
用户11831438
发布2025-12-30 14:28:08
发布2025-12-30 14:28:08
1980
举报

一、基础指令首尾与总结

1.1 文件压缩与远程传输指令
1.1.1 打包与解包:tar 基础使用

功能:打包/解包,不打开它,直接看内容

参数组合:(这里需要注意的是:-f 后面不能再加别的参数,-f 只能作为最后一个参数)

  • tar -czf xxx.tgz xxx :打包并压缩
  • tar -xzf xxx.tgz :解压并解包(默认在当前路径下解压并解包)
  • tar -xzf xxx.tgx -C 指定路径 :在指定路径下解压并解包,-C后面接指定的路径
  • -v:看到打包压缩或者解压解包的过程
代码语言:javascript
复制
将lesson5打包并压缩
[root@VM-0-16-centos 118]# tar -czf lesson5.tgz lesson5

将lesson5.tgz解压并解包到当前路径下
[root@VM-0-16-centos 118]# tar -xzf lesson5.tgz

将lesson5.tgz解压并解包到指定路径下,-C .. 解压到上级路径下
[root@VM-0-16-centos 118]# tar -xzf lesson5.tgz -C ..

加上v选项,表示显示打包并压缩的过程
[root@VM-0-16-centos 118]# tar -cvzf lesson5.tgz lesson5
lesson5/

加上v选项,表示显示解压解包的过程
[root@VM-0-16-centos 118]# tar -xvzf lesson5.tgz
lesson5/

当我们加上v参数时,如果这个过程比较长,那么我们需要等待的时间就比较长,那此时我们就可以在后面加上&,& 就表示在后台显示这个过程,在这期间,我们在控制台进行其他操作

代码语言:javascript
复制
[root@VM-0-16-centos 118]# tar -cvzf lesson5.tgz lesson5 &
[1] 14500
[root@VM-0-16-centos 118]# lesson5/
pwd
/root/118
[1]+  Done                    tar -cvzf lesson5.tgz lesson5

注意:我们直接使用 -czf 和 -xzf 即可,就不要给自己找麻烦!!!

1.1.1.1 .tgz压缩包怎么解决跨平台问题
1.1.1.1.1 Linux与windows的互传

在前面的学习中,我们已经学习了如何把.zip压缩包在Linux和windows中进行互传,.tgz压缩包在Linux和windows中的互传也是这样的——

  • .tgz压缩包从Linux中传到windows中
代码语言:javascript
复制
将lesson5.tgz压缩包从Linux中传到windows中
[root@VM-0-16-centos 118]# sz lesson5.tgz
  • .tgz压缩包从windows中传到Linux中
代码语言:javascript
复制
.tgz压缩包从windows中传到Linux中
[root@VM-0-16-centos 118]# rz -E
1.1.1.1.2 Linux与Linux的互传——scp

ok,Linux和Linux的互传就不像上面的那种做法了,在这里我们需要用到一个新的指令——

  • scp [选项] 源文件 目标路径

选项

说明

-r

递归复制整个目录

代码语言:javascript
复制
# 复制单个文件
scp local_file.txt user@remote_host:/remote/directory/

# 复制目录(递归)
scp -r local_folder/ user@remote_host:/remote/directory/

把当前Linux主机的.tgz 压缩包拷贝到另一台Linux主机上

注意:这里需要知道另一台Linux主机的密码!!!

1.1.2 补充命令——file

功能:查看一个文件的更详细信息

语法:

  • file 文件名
代码语言:javascript
复制
[root@VM-0-16-centos 118]# file test.txt
test.txt: ASCII text
1.2 终端计算器:bc

bc指令:Linux下的计算器

  • 基础使用:直接输入 bc 进入交互模式,支持 + - * / 运算,如 2+5 回车返回 7;输入 quit 退出。
  • 结合管道使用:输入 echo "1+2+3+4+5"|bc 直接返回结果15
代码语言:javascript
复制
[root@VM-0-16-centos 118]# 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'. 
1+2
3
23*10
230

[root@VM-0-16-centos 118]# echo "1+2+3+4" | bc
10

输入 quit 退出计算器!!!

1.3 命令历史管理:history

history 可以查看历史命令,默认是1000个

语法:

  • history [选项]

history 后面跟数字,表示查看最近的多少条指令

代码语言:javascript
复制
查看最近的10条历史指令
[root@VM-0-16-centos 118]# history 10
  958  2025-12-20 19:31:17 tar -czf lesson5.tgz lesson5
  959  2025-12-20 19:31:20 ll
  960  2025-12-20 19:31:31 sc lesson5.tgz
  961  2025-12-20 19:31:55 sc lesson5.tgz
  962  2025-12-20 19:32:03 sz lesson5.tgz
  963  2025-12-20 19:42:23 file test.txt
  964  2025-12-20 19:44:19 bc
  965  2025-12-20 19:46:20 echo "1+2+3+4" | bc
  966  2025-12-20 19:48:03 history
  967  2025-12-20 19:48:57 history 10
1.4 面试题(附带两个指令)
  • 你的计算机的体系结构是什么?

本质是在问:CPU的架构是什么?

使用 uname -a 指令查看更详细信息,使用 uname -r 查看体系结构——

  • 如何查看你的Linux的内核版本?

使用 uname -r ——

  • 如何查看你的具体系统发行版?

cat /etc/os-release

1.5 常见热键

补充一个关机指令,了解即可

以下命令作为扩展:

  • 安装和登录命令: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)”,但我们一般用户,不能只直接使用内核,而是通过内核的“外壳”程序,也就是所谓的shell,通过shell来和内核沟通。

这该如何理解呢?为什么不能直接使用内核?

其实操作系统应该被分成以下两个部分:

从技术角度,Shell的最简定义:命令行解释器

主要包含:

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

这说的是啥呀!不懂。

ok,接下来我们通过一个小故事来感性的理解外壳:

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

阶段一:在一个村子里面,老王是村长,老王的儿子小王事业有成回到家中,老王催小王找对象,但是小王不擅长和女孩子打交道,于是老王找到王婆,王婆到了小王家中,小王说“我喜欢隔壁如花,你去帮我说”,王婆就去隔壁如花家说媒,如花想了想,说“小王是谁呀”,然后如花说“不喜欢小王,拒绝吧”,王婆就会回去告诉小王~~~

理解:

  1. 小王不亲自去,是因为小王不擅长和女生打交道
  2. 王婆就相当于shell外壳,小王就相当于Linux用户,如花就是内核;小王对王婆说“我喜欢如花,你去帮我说”就相当于用户对shell输出指令
  3. 王婆跑去和如花说……就是:王婆对命令进行解析,交给操作系统(如花)
  4. 如花想了想,小王是谁呀:操作系统(如花)执行指令
  5. 如花不喜欢小王:执行失败,将执行失败饿的结果交给王婆(shell外壳),王婆将执行失败的结果告诉小王

这就相当于我随便在命令行输入指令——会显示执行失败

这里为什么要存在王婆?因为用户不擅长和女生打交道

为什么Linux系统中存在shell外壳?

  • 因为用户无法直接使用操作系统

阶段2:小王不死心,请王婆再去争取一下,王婆就再去隔壁如花家,看见小帅在如花家吃饭,王婆一看就知道如花已经有男朋友了,王婆直接回去告诉小王“如花已经有男朋友了,还是不要打扰如花了”

理解:

  • 在这一层,王婆拒绝了小王,也就是shell外壳直接拒绝了用户的指令

这就说明:外壳可以在一定程度上拦截非法请求,变相的保护了内核

阶段3:小王人不死心,王婆正想拒绝,看到了老王,王婆只能暂时答应,王婆说这事一定要办(不一定办成),但是这不能影响了自己的招牌,于是想出了成立“王婆婚介所”,在招聘网站上找实习生,让实习生去说。实习生把事情办成了是王婆指导有方;失败了只能说这个实习生的能力不强,再换一个实习生,王婆不断地派实习生去做小王这个没有成功的事情

这是不是就是:shell会通过创建子进程的方式来进行命令行的解析,如果子进程挂了,shell还可以创建其他的子进程,不会影响shell本身

这里有很多细节,我们先来总结一下为什么Linux系统中存在shell外壳?

  1. 用户无法直接使用操作系统内核
  2. 外壳可以在一定程度上拦截非法请求,变相的保护了内核
  • 细节1:

Linux中用到的外壳程序被称为shell外壳程序,叫做bash

  • 细节2:

如果媒婆是shell外壳,王婆就是bash

  • 细节3:

windows中也有类似的外壳程序,图形化界面就是一种外壳程序

总结:外壳就是包裹在操作系统外用来命令行解析的程序!!!

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

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

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

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

阶段二:Shell拦截非法请求

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

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

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

代码语言:javascript
复制
┌─────────┐           ┌─────────┐           ┌─────────┐
│   小王   │           │  王婆   │           │  如花   │
│ (用户)  │           │ (Shell) │           │ (内核)  │
└─────────┘           └─────────┘           └─────────┘
     │                      │                      │
     │    小王再次请求      │                      │
     │ ────────────────────>│                      │
     │                      │                      │
     │                      │   创建子进程          │
     │                      │   (派个小弟去)        │
     │                      │ ────────────────────>│
     │                      │                      │
     │                      │                      │   处理请求
     │                      │                      │   创建新进程
     │                      │                      │   PID: 12345
     │                      │                      │
     │   立即返回            │   立即返回            │
     │ <────────────────────│ <────────────────────│
     │   "[1] 12345"        │                      │
     │                      │                      │
     │   (王婆继续服务)      │   (小弟在后台工作)    │
     │                      │                      │

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

总结:王婆(Shell)的核心工作

代码语言:javascript
复制
       ┌─────────────────────────────────────┐
       │             王婆的工作              │
       ├─────────────────────────────────────┤
输入 → │ 1. 接收用户(小王)命令                     │
       │ 2. 解析语法和结构                   │
       │ 3. 扩展变量和通配符                 │
       │ 4. 处理重定向和管道                 │
       │ 5. 查找命令位置                     │
       │ 6. 创建子进程执行                   │
       │ 7. 管理后台作业                     │
       │ 8. 返回结果给用户                   │
       └─────────────────────────────────────┘
                 ↓              ↓
          传递请求给如花      保护如花安全
          (系统调用)         (拦截非法请求)

结尾

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

结语:希望对学习Linux相关内容的uu有所帮助,不要忘记给博主“一键三连”哦!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-12-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、基础指令首尾与总结
    • 1.1 文件压缩与远程传输指令
      • 1.1.1 打包与解包:tar 基础使用
      • 1.1.1.1 .tgz压缩包怎么解决跨平台问题
      • 1.1.2 补充命令——file
    • 1.2 终端计算器:bc
    • 1.3 命令历史管理:history
    • 1.4 面试题(附带两个指令)
    • 1.5 常见热键
  • 二、Shell 与内核交互原理:拆解 “指令生效” 的关键环节
    • 2.1 核心原理解析
    • 2.2 核心角色定位:Shell 是 “翻译官”,内核是 “执行者”
    • 2.3 Shell与内核交互过程图解(对应上面的故事)
  • 结尾
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档