展开菜单
首页 精品内容 本月促销 装机必备 Windows PDF教程 macOS软件 IOS软件 Android AI 专题
全部分类

当前位置:

首页 > 编程开发 > Linux命令行怎么用?shell外壳程序原理一看就懂

Linux命令行怎么用?shell外壳程序原理一看就懂

外壳程序(Shell)是命令行解释器,将用户命令翻译成系统调用交由内核执行并返回结果。Linux系统分为超级用户和普通用户,权限级别不同。普通用户需通过sudo指令临时获取超级用户权限,但必须在/etc/sudoers白名单中有相应配置。

本文目录

    1 Xshell 运行原理

    1.1 命令行的组成

    Linux命令行怎么用?shell外壳程序原理一看就懂

    命令行本身由三部分构成:用户名、主机名和工作目录。这就像你每次打开终端时,系统先把你是谁、在哪台机器、当前在哪个目录告诉你。

    Linux命令行怎么用?shell外壳程序原理一看就懂

    "#" 是个提示符,它左边是操作系统的地盘,右边是用户的地盘。提示符有两种:"$" 代表普通用户,"#" 代表超级用户。看到不同的符号,心里就有数了——权限不同。

    1.2 外壳程序

    说出来你可能不信,你输入的命令并不是直接交给操作系统处理的。真正干活的是一个叫 “外壳程序” 的东西,它负责读取命令、识别命令,然后才去跟操作系统打交道。简单说,外壳程序打印出命令行,咱们在命令行里输入指令,它再往下传。

    Linux命令行怎么用?shell外壳程序原理一看就懂

    操作系统外面通常包着一层软件层,这就是外壳程序。它最直观的表现就是给你一个命令行界面,你输入“ls”这样的命令——本质上就是一堆字符串。外壳程序拿到后,翻译给操作系统内核去执行,然后把结果再翻译回来,让你看到文件列表。这个外壳程序也叫命令行解释器,Linux 下统称为 shell。

    命令行解释器的作用其实就两个:

    • 把用户的命令翻译给内核(kernel)处理
    • 把内核的处理结果翻译给用户

    光说理论可能有点干,咱们举个贴近生活的例子。

    假设有个闷骚又害羞的程序员小王(用户),shell 就像媒婆,操作系统内核就是村头让你心动的小花。小王看上了小花,但不好意思直接表白,于是让家人找媒婆去提亲。所有事情小王都只跟媒婆沟通,由媒婆转达给小花。这就是第一个功能:翻译,让用户能操作。

    小花多次拒绝小王,小王不死心,还希望媒婆再争取。但这次媒婆在小花家窗外看到小帅和小花一家人其乐融融吃饭,连门都没进就告诉小王没戏了——变相拒绝。这就是第二个功能:如果用户输入的指令太离谱,命令行解释器直接拦住,不让它交给操作系统,从而保护操作系统。

    小王还不死心,让媒婆再帮一次。因为小王他爸是村长,媒婆不好驳面子,但知道这事成不了,又不想砸招牌。怎么办呢?找了个实习生去干。实习生做成了,是媒婆慧眼识珠;没做成,也没影响她。这就是第三个功能:外壳程序在系统上以进程方式运行,进行命令行解释时不能挂——一旦挂了就只能重新登录。所以新命令到来时,外壳程序通常创建一个子进程去执行命令,子进程挂了也不影响父进程。

    在 Ubuntu 系统下,对应的命令行解释器叫 bash。

    Linux命令行怎么用?shell外壳程序原理一看就懂

    那 bash 和 shell 是什么关系呢?相当于王婆和媒婆的关系——shell 是所有外壳程序的统称,而 bash 是其中一个具体实现。

    说到这儿提一句,Windows 的图形化界面也是一种外壳程序。你每次鼠标点击,都会被窗口管理器转换成系统级别的任务交给操作系统去执行。安卓手机底层也是 Linux,内核是 Linux,但外面包裹的那层安卓界面,就是 Linux 的 shell。

    2 Linux中的用户

    2.1 两种用户

    Linux 的权限是针对用户设置的。那 Linux 里有哪些用户呢?

    简单说两类:超级用户(root) 和 普通用户。

    • 超级用户:在 Linux 下啥都能干,不受任何限制。
    • 普通用户:在 Linux 下只能干有限的事,处处受管控。
    • 超级用户的命令提示符是 “#”,普通用户的命令提示符是 “$”。

    root 用户的权限极高,普通用户则权限低、受管控。

    2.2 创建普通用户

    先学学怎么创建一个普通用户。

    指令:adduser 和 passwd

    创建普通用户语法:adduser [选项] 用户名

    Linux命令行怎么用?shell外壳程序原理一看就懂

    设置密码语法:passwd 用户名。有些系统创建用户后直接让你输密码,不需要单独执行这条指令。

    Linux命令行怎么用?shell外壳程序原理一看就懂

    接着输入两次新密码即可。注意:Linux 下输入密码不回显!你敲键盘时屏幕上啥也不显示,这是正常现象,不是系统坏了。

    Linux命令行怎么用?shell外壳程序原理一看就懂

    删除用户语法:userdel -r 用户名。删除用户这里不演示了,但必须提醒:一定要加上 -r,否则系统会出问题!

    怎么查看创建的用户呢?Linux 中创建的用户都放在 /home 目录下,切换到该目录看看就知道了。

    Linux命令行怎么用?shell外壳程序原理一看就懂

    2.3 用户切换

    2.3.1 普通→超级

    先讲普通用户怎么切换到超级用户。

    直接使用 su 命令即可。回车后系统要求输入密码。

    Linux命令行怎么用?shell外壳程序原理一看就懂

    这里要输入的是谁的密码?普通用户的还是超级用户的?

    肯定输入的是 root 的密码。你是从普通用户切换到 root,如果输入普通用户的密码就能变成 root,那岂不是人人都能当 root 了?所以,想切换成 root,你必须知道管理员的密码。

    同样,密码输入不回显。

    Linux命令行怎么用?shell外壳程序原理一看就懂

    用 su 切换后,当前工作目录不改变。

    Linux命令行怎么用?shell外壳程序原理一看就懂

    另外还有一种做法:su -。操作方法和 su 一模一样,区别在于:

    Linux命令行怎么用?shell外壳程序原理一看就懂

    区别就是:su 只是身份切换,不会让 root 重新登录,所以当前工作目录不变;而 su - 会以 root 身份重新登录一次,导致当前路径发生变化(通常切换到 /root)。

    2.3.2 超级→普通

    超级用户变成普通用户也用 su 命令。

    语法:su 用户名 或 su - 用户名

    Linux命令行怎么用?shell外壳程序原理一看就懂

    超级用户变普通用户不需要输密码。为什么?因为 root 是最高权限,普通用户的密码根本挡不住 root,root 想干嘛就干嘛。

    加不加 - 的区别同上,不再赘述。

    3 指令的短暂提权

    3.1 为什么要提权

    假设你现在是普通用户,但需要以超级管理员的身份执行一条权限比较高的命令——比如安装软件。安装软件的本质是将指令写入特定目录(如 /usr/bin),而这个目录通常属于 root,普通用户没有写入权限。那怎么办?这时候就需要临时提升权限。

    顺便说一句,Linux 中安装的程序其实只安装了一份,但允许所有人同时使用。比如普通用户能用 ls,root 用户也能用 ls(当然也有少数指令如 adduser 禁止普通用户使用)。

    Linux命令行怎么用?shell外壳程序原理一看就懂

    权限被拒绝——这就是普通用户试图执行高权限操作时的典型结果。

    3.2 sudo 指令

    短暂提权用到的指令是 sudo。

    • 语法: sudo 要执行的命令
    • 功能: 对当前指令进行短暂提权

    比如,我们以 root 的身份创建一个文件:

    Linux命令行怎么用?shell外壳程序原理一看就懂

    文件创建成功:

    Linux命令行怎么用?shell外壳程序原理一看就就懂

    虽然现在还不会看文件的具体属性,但文件属于 root 还是能看出来的。

    sudo 第一次使用需要输入密码,之后会有十到十五分钟的免密期。从 sudo whoami 的输出也能看出,用户身份变成了 root。

    Linux命令行怎么用?shell外壳程序原理一看就懂

    3.3 人人都能提权吗

    上面普通用户用 sudo 就能变成 root(输入的是普通用户的密码,不是 root 的),那岂不是人人都是 root 了?那 root 还区分普通用户干什么?

    其实正常情况下,普通用户输入 sudo 会报错:

    Linux命令行怎么用?shell外壳程序原理一看就懂

    什么原因?Linux 系统提供了一个类似 白名单 的机制,只有白名单上的用户才能用 sudo 提权。白名单就是无条件信任,和黑名单无条件拒绝相对应。

    默认情况下,Linux 不允许普通用户执行 sudo。要执行,必须将当前用户添加到白名单。白名单路径:/etc/sudoers。

    Linux命令行怎么用?shell外壳程序原理一看就懂

    可以看到这个文件属于 root,只有超级用户才有资格修改。

    想让普通用户执行 sudo,必须用超级管理员的身份修改 sudoers 配置文件。修改方式如下:

    Linux命令行怎么用?shell外壳程序原理一看就懂

    注:推荐用 vim 编辑器打开。

    可能有小伙伴会问:那我把自己的用户加到 sudoers 文件里,不就能随便提权了吗?

    道理是这么个道理,但在实际公司环境中,假设一个小组 10 人共用一台机器,只有一个人是管理员。你想把自己的用户加入 sudoers,必须线下真人去找管理员同意才行。现在我们能自己修改 sudoers,是因为我们既是用户又是管理员。只要线下去找管理员,说明人家是真正认可你的,所以不用担心人人都是 root 的问题——即便白名单里的 root,那也是值得信任的。

    总结

    从 shell 外壳程序的工作原理,到 Linux 用户权限的划分,再到 sudo 提权的机制,整个过程环环相扣。理解这些底层逻辑,才能真正用好 Linux 的命令行。

    本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系bd@zhengruan.com
    作者最新文章
    编程开发
    相关文章 更多
    精品专题 更多
    装机必备

    正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

    Windows

    正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

    PDF教程

    正软商城PDF教程频道提供PDF编辑、转换、合并、拆分、压缩及格式处理方法,同时介绍常用PDF软件和工具的使用技巧。

    macOS软件

    正软商城macOS软件专区,精选适用于Mac电脑的办公、设计、影音、效率、开发和系统工具,提供软件功能介绍、macOS兼容版本、正版授权及购买下载服务。

    IOS软件

    正软商城iOS软件专区,精选适用于iPhone和iPad的办公、学习、影音、设计、效率及AI应用,提供功能介绍、适用设备、系统要求和正版获取方式等信息。

    AI

    正软商城AI软件专区,汇集AI写作、AI绘画、AI视频、AI办公、AI编程、AI翻译、智能客服和数据分析等人工智能工具,提供功能介绍、适用平台、收费方式及正版购买信息。

    Mac软件 更多
    Postman macOS版
    Postman macOS版

    Postman是一套面向API全生命周期的开发与测试平台,可在Mac上发送和调试多种协议请求,管理集合、环境及认证信息,并完成脚本测试、模拟服务、监控、文档发布和团队协作。它适合开发、测试及运维人员使用,提供个人免费方案。

    Docker Desktop macOS版
    Docker Desktop macOS版

    Docker Desktop 是 Docker 官方为 Mac 提供的容器开发环境,集成 Docker Engine、命令行工具、Compose、Build、Kubernetes 与图形化管理界面。

    Android Studio macOS版
    Android Studio macOS版

    Android Studio 是 Google 面向安卓应用开发提供的官方集成开发环境,基于 IntelliJ IDEA 构建。它整合智能代码编辑、Gradle 构建、界面预览、设备模拟、性能分析、调试测试及 APK 分析等工具。

    Xcode macOS版
    Xcode macOS版

    Xcode 是苹果面向 Mac 提供的官方集成开发环境,将代码编辑、项目构建、SwiftUI 实时预览、设备模拟、自动化测试、断点调试、性能分析和应用分发整合在同一套工作流中,适合开发与维护 iPhone、iPad、Mac、Apple Wa

    JetBrains WebStorm macOS版
    JetBrains WebStorm macOS版

    JetBrains WebStorm 是面向 JavaScript、TypeScript 和现代 Web 技术的专业集成开发环境,可智能理解项目结构,提供代码补全、重构、错误检查、运行调试、测试及 Git 工具。

    PhpStorm macOS版
    PhpStorm macOS版

    PhpStorm 是 JetBrains 推出的专业 PHP 集成开发环境,可在 Mac 上完成代码编写、智能检查、重构、调试、测试和数据库管理。它支持主流 PHP 框架、Composer、Git、Docker 与远程解释器。

    JetBrains PyCharm macOS版
    JetBrains PyCharm macOS版

    JetBrains PyCharm 是面向 Python 开发者的集成开发环境,提供智能补全、代码检查、重构、调试、测试、版本控制及虚拟环境管理功能。Mac 版兼容 Intel 与 Apple 芯片,核心功能可免费使用。

    JetBrains IntelliJ IDEA macOS版
    JetBrains IntelliJ IDEA macOS版

    IntelliJ IDEA 是 JetBrains 推出的专业集成开发环境,重点服务于 Java、Kotlin 与 JVM 项目开发。软件集成代码补全、静态检查、重构、调试、测试、版本控制及构建工具,并可借助插件扩展语言和框架支持。

    Visual Studio Code macOS版
    Visual Studio Code macOS版

    Visual Studio Code 是微软提供的免费代码编辑器,支持 macOS,并为 Intel 与 Apple 芯片 Mac 提供适配版本。软件集代码编辑、调试、Git 源代码管理、集成终端和扩展市场于一体。

    REAPER macOS版
    REAPER macOS版

    REAPER是Cockos开发的数字音频工作站,提供多轨音频与MIDI录制、剪辑、处理、混音和母带制作工具。Mac版兼容Intel与Apple芯片,支持AU、VST、VST3、CLAP等插件格式,并提供高度可定制的工作流程。

    Adobe Audition macOS版
    Adobe Audition macOS版

    Adobe Audition 是面向播客、影视后期、音乐制作及内容创作者的专业音频工作站,提供波形精修、多轨录制与混音、频谱编辑、降噪修复、响度匹配和效果处理工具,并可与 Adobe Premiere 协同完成视频声音制作。

    Pro Tools macOS版
    Pro Tools macOS版

    Pro Tools 是 Avid 推出的专业数字音频工作站,覆盖多轨录音、无损剪辑、MIDI 编曲、插件处理、自动化混音及声音与画面同步等工作。它拥有 Intro、Artist、Studio 和 Ultimate 等方案。

    WINDOWS 更多
    PixPix 网页版
    PixPix 网页版

    PixPix 是面向品牌、卖家和内容团队的在线 AI 图片视频创作平台,提供图视频 Agent、无限画布、图片生成、视频生成、自然语言编辑及商品套图、产品精修和带货视频等电商工具。

    Postman Windows版
    Postman Windows版

    Postman 是面向 API 全生命周期的开发与协作平台。Windows 桌面版可用于构建和发送 HTTP、GraphQL、gRPC、WebSocket、MQTT 等请求,并提供环境变量、集合、脚本测试、模拟服务、监控、文档及团队工作区等

    Docker Desktop Windows版
    Docker Desktop Windows版

    Docker Desktop 为 Windows 开发者提供集成式容器环境,内置 Docker Engine、命令行工具、Compose、Build 与 Kubernetes 等组件,可在本机完成镜像构建、容器运行、日志查看和资源管理。

    Android Studio Windows版
    Android Studio Windows版

    Android Studio 是 Google 面向 Android 应用开发提供的官方集成开发环境,以 IntelliJ IDEA 为基础,集成智能代码编辑、Gradle 构建、设备模拟、界面预览、调试测试及性能分析工具,

    JetBrains WebStorm Windows版
    JetBrains WebStorm Windows版

    WebStorm 是 JetBrains 面向 JavaScript、TypeScript 和现代 Web 技术打造的集成开发环境。它提供项目级代码分析、智能补全、安全重构、导航搜索,并集成调试、测试、终端、Git 与常用前端工具,

    JetBrains PhpStorm Windows版
    JetBrains PhpStorm Windows版

    PhpStorm 是 JetBrains 面向 PHP 与现代 Web 开发打造的专业集成开发环境,提供代码补全、静态检查、重构、调试、测试、数据库、版本控制及前端语言支持。Windows 用户可直接下载安装程序,

    JetBrains PyCharm Windows版
    JetBrains PyCharm Windows版

    PyCharm 是 JetBrains 推出的 Python 集成开发环境,提供智能代码补全、错误检查、重构、调试、测试、Git、终端及 Jupyter Notebook 支持。统一版安装后可体验 30 天 Pro 功能,

    JetBrains IntelliJ IDEA Windows版
    JetBrains IntelliJ IDEA Windows版

    JetBrains IntelliJ IDEA 是以 Java、Kotlin 和 JVM 项目为核心的专业集成开发环境,提供智能补全、代码检查、安全重构、调试、测试、版本控制及构建工具集成。统一发行版的核心功能可免费用于商业和非商业项目,

    Visual Studio Code Windows版
    Visual Studio Code Windows版

    Visual Studio Code 是微软推出的免费代码编辑器,Windows 版集成智能补全、代码导航、调试、终端和版本控制,并可通过扩展添加语言、格式化及远程开发能力。它启动较快、配置灵活,

    REAPER Windows版
    REAPER Windows版

    REAPER 是 Cockos 推出的数字音频工作站,适用于录音、MIDI 编曲、音频编辑、混音、母带制作及声音设计。软件安装包小巧,支持多轨录制、灵活路由、自动化、第三方插件和脚本扩展,并提供完整功能的 60 天免费评估期。

    Adobe Audition Windows版
    Adobe Audition Windows版

    Adobe Audition 是面向播客、影视后期、广播与音乐制作的专业音频工作站,提供波形编辑、多轨混音、频谱分析、录音、降噪修复和效果处理等功能。Windows 版通过 Adobe Creative Cloud 安装和管理,

    Pro Tools Windows版
    Pro Tools Windows版

    Pro Tools 是 Avid 推出的专业数字音频工作站,提供多轨录音、音频剪辑、MIDI编曲、插件处理、自动化混音及影视声音制作能力。它适合音乐人、录音师、制作人和音频后期团队使用,并提供免费入门版、订阅方案及永久授权选择。