开始系统学习Linux(1):RHEL、SSH、Shell
目录前言初识红帽认识工作环境ShellLinux 访问方式初步使用 shell远程登录认识命令提示符简单命令写在最后前言Linux 在我的生活中可以说是最熟悉的陌生人一方面因为工作或学习而熟悉基本的命令及应用另一方面大部分都是以实用为主的现学现用所以并无体系。最近整理技术栈时打算把它作为基础内容重新系统化的过一遍以拿下红帽 RHCE 为验收以写博客输出为过程。我打算做一个连载系列记录我的学习笔记本篇则是正式开始之前的杂谈做一些基本梳理。初识红帽Red Hat红帽是一家以开源软件和企业级 Linux 解决方案为核心业务的软件公司也是 Linux 企业级发行版领域的重要厂商。旗下有多款开源产品。比如企业级 Linux 发行版 RHEL、开源分布式存储 Ceph、开源自动化工具 Ansible。RHEL 全称 Red Hat Enterprise Linux 红帽企业级 Linux 操作系统。Linux 是一个开源的操作系统内核。内核软件包组成一个操作系统也就是我们所说的 Linux 发行版。RHEL 即 Linux 的一个发行版由 Linux 内核红帽软件包组成。Linux 发行版生态非常庞大其中 Debian 系和 Red Hat 系是企业服务器领域常见的两类发行版生态。不同发行版生态在软件包格式和包管理工具等方面存在差异例如 Debian 系通常使用 .deb 软件包和 aptRHEL 系通常使用 .rpm 软件包并通过 dnf 等工具进行软件包管理。Linux 由于其开源、长时间运行稳定等特性更多用于企业服务器领域虽然有面向个人终端 PC 的发行版比如 Ubuntu但主流还是将 Linux 部署在服务器、嵌入式等领域。操作系统本质是一套软件跑在硬件之上作为软件运行的介质连接软件和硬件。操作系统的作用有启动时初始化、内存和网络管理、文件系统管理、识别硬件资源等最重要的就是为跑在上面的软件分配硬件资源这是操作系统的核心功能。认识工作环境ShellShell 经常会和终端、命令行、bash、cmd 这些概念所混淆事实上它们处于不同层次想要弄清楚它们之间的关系需要先认识人与计算机交互的两种模式GUI 和 CLI 。GUI 即 Graphical User Interface 图形化界面用户通过桌面环境与图标、菜单、按钮等图形元素交互从而操作计算机启动程序、呈现多媒体数据信息。CLI 即 Command Line Interface 命令行界面是一种通过输入文本命令与计算机系统进行交互的方式。终端或控制台则是这种交互方式常见的承载环境。其中GUI 交互方式通常通过桌面环境来实现比如 Windows 的 Windows 桌面、Linux 的 GNOME 或 KDE 桌面环境这些图形化的桌面提供了一系列交互按键与图标给用户用户通过点击即可启动程序、浏览数据信息。GUI 交互方式是我们最常用的交互方式。而 CLI 交互方式则通常通过终端与 shell 实现而终端和 shell 又由具体的软件实现。终端terminal负责提供字符输入输出环境为用户呈现字符界面在这里接收用户的命令输入并展示执行的结果。终端在不同的操作系统上通常由不同的具体软件实现比如 Windows 上的 TerminalLinux 上的 GNOME Terminal。shell 负责解析用户输入的命令、执行 shell 内建命令或启动相应的外部程序和建立标准输入、标准输出、标准错误。bash、cmd、powershell 都是具体的 shell 即 shell 的软件实现不同的 shell 通常有着不同的语法和解释特性。注意 shell 并不负责提供输入输出接口换言之是终端负责接收用户的输入并将输入送给 shell 进行解析和执行。具体而言用户通过键盘向终端输入命令终端接收到用户的字符输入并将之交给 shellshell 解析命令后会根据命令的语法和重定向、管道等操作为启动的进程建立和组织标准输入、标准输出和标准错误。例如命令行参数会作为参数传递给程序而程序的标准输入、标准输出和标准错误则可以连接到终端、文件或其他进程。举一个具体的例子打开 win、搜索 Terminal找到 Windows 上的终端点击打开打开后它默认的选项卡是 Windows PowerShell即提供一个输入输出界面与 Windows PowerShell 这个 shell 交互点击选项卡右侧的加号或者小下三角可以打开多个终端每一个选项卡表示你正在对哪个 shell 做输入并展示输出。这个就是所谓的终端负责提供输入输出界面并将用户输入交给 shell。shell 则负责解析命令并建立标准输入、标准输出、标准错误通道。这个怎么理解呢简单来说命令本身是可执行程序shell 解析命令后在环境变量中找到这个命令可执行程序所在的路径然后启动该程序CPU 执行该可执行程序的二进制机器指令执行完成后输出到 shell 指定的位置。当然内建命令由 cmd 自己实现不用去环境变量里找可执行程序路径这里描述的是外部程序实现的命令比如在 Windows Terminal 中向 cmd 这个 shell 键入命令ipconfigTerminal 接收到用户输入此命令交给 cmdcmd 发现这不是一个内建命令是一个外部程序因此 cmd 会在 PATH 这个环境变量的值中记录的地址尝试搜索该命令代表的程序并最终在 C:\Windows\System32\ipconfig.exe 这个路径找到了此应用程序接下来建立标准输入标准输出由于没有使用重定向符ipconfig.exe 的标准输出默认连接到当前终端因此输出会显示在 Terminal 窗口中接下来 cmd 启动该应用程序由 CPU 执行 ipconfig.exe 的机器指令并最终把执行结果返回到终端页面于是我们在 Terminal 里看到了执行命令的结果。如果我们传给 shell 的命令中有重定向符那么 shell 就会在解析命令的时候建立标准输出到你指定的位置ipconfig D:\ip.txt这一次在 Terminal 终端上见不到 ipconfig 命令的输出了因为我们重定向到了一个文件里执行结果会被输出到该文件中。同理 Linux 系统接下来展示的是在 RHEL9 虚拟机上打开 GNOME Terminal向 bash 这个 shell 输入指令并要求 shell 建立重定向输出到指定位置。ifconfig /tmp/ip.txt总结GUI 和 CLI 是两种常见的人机交互方式。GUI 通常通过桌面环境等图形界面实现CLI 则通常通过终端环境和 Shell 实现。Terminal 负责提供字符输入输出环境Shell 负责解析用户输入的命令并执行内建命令或启动相应程序。Bash、cmd.exe、PowerShell 都是具体的 Shell。Shell 启动的程序由 CPU 执行其机器指令并通过系统调用请求内核提供文件、网络、设备等系统资源。Linux 访问方式Linux 操作系统是软件软件要跑在硬件上所以要么真的组装一台物理机然后安装 Linux 操作系统要么使用虚拟机在已有的物理机上虚拟出来一套硬件然后安装 Linux 操作系统。无论如何Linux 系统常见访问方式主要有以下这几种IO设备直连这是最传统的方式在机房的机柜上有一台装载了 Linux 操作系统的服务器它的背板上向外暴露了几个线缆接口通过将 IO 设备键盘、鼠标、显示屏带到机柜面前连接上这些接口随后就可以看到该服务器的图形化界面或者命令行界面显示在显示屏上。虚拟机控制台在学习或个人实验环境下通常使用这种方式访问 Linux 系统使用类似 VMware 的虚拟化软件创建一个虚拟机并安装 Linux 操作系统随后在 VMware 的页面里启动虚拟机进入使用。从使用体验上看它类似于直接操作一台物理机虚拟机软件提供虚拟的显示器、键盘和鼠标用户可以直接进入 Linux 的 GUI 或 CLI。网络远程访问这是目前最实用的方式由于云计算的兴起目前大部分中小型企业的业务模式都是将业务部署在租用的数据中心的云服务器上作为运维管理人员总不可能一有问题就专门抱着键盘去一趟数据中心的机房因此通常会采用远程管理的方式。具体而言则是本地通过在终端执行 SSH 命令或者使用基于 SSH 协议的远程软件比如 Xshell 获得远程服务器的 Shell 会话。在终端中用户输入的命令会通过加密连接传输到远程服务器主机并由服务器的 Shell 执行结果也会适时的通过加密传输返回到本地终端中。初步使用 shell远程登录接下来通过演示一台 RHEL9 虚拟机来初步使用 shell。首先在 VMware 选项卡中启动虚拟机。该虚拟机的网络使用 NAT 模式应用 VMnet8 这张虚拟网卡本次实验宿主机 IP 地址 192.168.200.1RHEL9 虚拟机 IP 地址 192.168.200.129。我们首先演示在 Windows 的 cmd 直接使用 SSH 命令连接。命令如下ssh root192.168.200.129输入该命令后键入 root 用户密码即可以 root 用户身份登录 RHEL9 虚拟机并执行命令。该命令拆解如下ssh命令程序名 root登录的身份即用户名 分隔符分开登录的用户名以及目标主机IP地址 192.168.200.129登录的操作系统所在的物理机或虚拟机的IP地址接下来演示使用 Xshell 远程软件登录 RHEL9 。打开 Xshell 在弹出的窗口单击左上角新建来创建一个新的会话。其中名称用于在 Xshell 内标记该会话主机是该会话目标主机的 IP 地址。点击连接开始验证登录凭证。为了测试方便我们就用 root 身份登陆了。接下来即可在 Xshell 提供的命令行页面中远程执行命令。当然 Xshell 也可以当作类似 cmd 的终端使用CTRLD 断开当前会话输入刚刚在 cmd 中输入的 SSH 命令依旧会进入身份验证通过后完成远程登录。最后还是简单解释一下以上我们的实验中使用了 Windows Terminal 和 Xshell 这两种终端而在宿主机的 shell 中执行的命令只有 SSH 命令在下面的实验中我们会在获得到的虚拟机 shell 会话中输入命令此时解析该命令的 shell 就不是宿主机的 shell而是 REHL9 虚拟机的 bash shell。我们的行为概括为宿主机启动终端键入 SSH 命令在宿主机的 cmd shell 中解析命令并执行拉起 SSH 进程建立网络连接连接的两端进程分别是宿主机的 ssh 和虚拟机的 sshd接下来我在宿主机终端中输入的命令会由该网络连接送到虚拟机由虚拟机的 bash shell 执行再通过网络连接送回到宿主机终端显示。在这个通信中宿主机的 Shell 负责执行 SSH 客户端SSH 客户端与远程 sshd 建立 SSH 会话登录后用户输入的命令由远程 RHEL 9 上的 Bash 解析和执行命令输出再通过 SSH 会话返回终端显示。认识命令提示符无论是直接呼出终端还是远程登录进入 shell 登录后都会看到这个或者这个指示你可以在后面写入命令的部分叫做命令提示符它拆解如下[rootmyRHEL9 ~]# [testmyRHEL9 ~]$ ———————————————————————————————————————————————————————————————————————————————————— root/test当前登录的用户的用户名 分隔符隔开用户名和主机名 myRHEL9当前登录到的主机的主机名这里采用简短显示即只显示主机名的一部分。比如你的主机名叫做 test.example.com 那么这里显示的就只有 test第一个.之前的字符。 ~当前工作目录的显示结果这里的~是家目录的缩写代表当前登录用户的家目录。 #/$分隔符键入的命令显示在其之后同时它也提示用户权限。在 RHEL 默认 Bash 提示符中root 用户通常显示 #普通用户通常显示 $简单命令认识了 shell 上显示的内容接下来通过完成以下示例来初步使用 Linux 命令。示例一检查当前系统的时间和日期使用 date 命令和 cal 命令显示当前系统的时间和日期。[rootmyRHEL9 ~]# date Tue Aug 25 06:02:03 PM CST 2026 [rootmyRHEL9 ~]# cal August 2026 Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31示例二创建 test1 用户使用 useradd 命令创建一个用户id 命令用于查看该用户的 uid、gid因此也可通过 id 一个用户名看是否有正常执行结果来检查该用户是否存在于系统中。[rootmyRHEL9 ~]# useradd test1 [rootmyRHEL9 ~]# id test1 uid1001(test1) gid1001(test1) groups1001(test1)示例三使用 root 用户给 test1 用户设置密码使之能够 SSH 远程登录本次实验使用 SSH 密码认证远程登录在配置文件的默认配置下不支持无密码验证登录用户新创建的 test1 用户尚未设置密码因此无法使用账密登录需要先使用 passwd 为其设置密码。passwd 指令用于修改用户密码当后面不加用户名时表示修改当前登录用户的密码。当后面加用户名时表示修改指定用户的密码。[rootmyRHEL9 ~]# passwd test1 Changing password for user test1. New password: BAD PASSWORD: The password is shorter than 8 characters Retype new password: passwd: all authentication tokens updated successfully. [rootmyRHEL9 ~]#接下来在 Windows 的 cmd 中使用 SSH 命令测试使用密码登录。C:\Users\20335ssh test1192.168.200.129 test1192.168.200.129s password: Register this system with Red Hat Insights: insights-client --register Create an account or view all your systems at https://red.ht/insights-dashboard [test1myRHEL9 ~]$示例四使用 test1 用户登录修改自己的密码当前我们是以 root 用户身份登录切换用户使用 su 指令密码修改则使用 passwd 指令。以下是使用这两个指令时需要注意的对于 su root 使用 su 切换到其他用户时不需要验证目标用户密码非 root 用户使用 su 切换到其他用户时通常需要验证目标用户密码对于 passwd passwd 指令后面可以接参数指定修改密码的用户但只有超级管理员或具有相应权限的用户才可以指定修改其他用户的密码。普通用户无权修改其他用户的密码。passwd 指令修改密码时超级管理员无需验证原密码普通用户需要验证原密码再修改。passwd 指令修改密码时超级管理员可以无视安全密码策略设置密码普通用户需要遵守。比如设置一个过于简单的密码 123 它既不符合长度也不符合安全策略超级管理员可以无视警告设置普通用户则会被拒绝并要求重新设置。#root用户切普通用户不用验证密码 [rootmyRHEL9 ~]# su - test1 #普通用户不允许指定修改密码的对象哪怕是自己 [test1myRHEL9 ~]$ passwd test1 passwd: Only root can specify a user name. #普通用户修改密码需要验证原密码且遵守密码策略不遵守则无法完成密码修改 [test1myRHEL9 ~]$ passwd Changing password for user test1. Current password: New password: BAD PASSWORD: The password fails the dictionary check - it is based on a dictionary word passwd: Authentication token manipulation error #遵守密码策略设置密码则可完成密码修改 [test1myRHEL9 ~]$ passwd Changing password for user test1. Current password: New password: Retype new password: passwd: all authentication tokens updated successfully. #普通用户切其他用户需要验证密码 [test1myRHEL9 ~]$ su - root Password: #超级管理员可以修改其他用户密码并且无需验证原密码无需遵守密码策略 [rootmyRHEL9 ~]# passwd test1 Changing password for user test1. New password: BAD PASSWORD: The password is shorter than 8 characters Retype new password: passwd: all authentication tokens updated successfully.写在最后以上我们完成了 Linux 的基本介绍以及一些简单的命令使用接下来我会开始连载 RHCE 的复习笔记。

相关新闻

effective modern C++- item 1: 理解模版类型推导

effective modern C++- item 1: 理解模版类型推导

一、问题的核心模型先记住这个"框架"&#xff0c;后面所有讨论都套用它&#xff1a;template<typename T> void f(ParamType param); // ParamType 是 T 加上某种修饰&#xff0c;如 T、T&、const T&、T&&、T* f(expr); /…

2026/10/24 21:07:00 阅读更多 →
从零搭建多平台博客自动发布系统:架构设计与 7 平台踩坑实录

从零搭建多平台博客自动发布系统:架构设计与 7 平台踩坑实录

将技术博客写好之后, 最让人打退堂鼓的, 向来都不是撰写的过程, 而是“发布”这一环节 —— 当一篇内容完成后, 需要登录七个后台, 调整格式, 上传封面, 点击发布。在这篇文章中, 会记载我是怎样借助一个项目, 把这一系列流程实现自动化的, 以及在每个平台实际遭遇过的难题。从…

2026/10/24 12:46:45 阅读更多 →
零基础也能吃透!Python自动化办公全实操教程,告别加班效率翻倍

零基础也能吃透!Python自动化办公全实操教程,告别加班效率翻倍

各位好&#xff01;我乃热衷于分享见闻的老王&#xff01;我将会每日于此处给诸位呈上最新的消息, 并在所对应的各篇之中都倾囊提供有价值的关键信息, 希望这些可以帮到大家&#xff1b;要是你认为这些告知你的内容能对你的实际生活提供积极有效的作用, 那就赶紧点个关注吧&…

2026/10/25 7:12:44 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年&#xff0c;我大部分时间都在跟浏览器标签页打交道&#xff0c;直到第一次把桌面应用跑起来&#xff0c;才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词&#xff0c;最开始是在某段时间频繁出现在同事的讨论里&#xff0c;一个用HTML…

2026/11/2 0:25:10 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介&#xff1a;亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档&#xff0c;主要面向智能锁安装人员、终端用户及售后维护者&#xff0c;帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件&#xff0c;大小4.37MB&#xff0c;内容结构清晰&#xff…

2026/11/1 10:36:53 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统&#xff0c;整车要求空载跑到8m/s&#xff0c;电机转速已经拉到额定点&#xff0c;驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令&#xff0c;转速纹丝不动&#xff0c;三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/11/1 10:36:51 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年&#xff0c;用它写过嵌入式驱动、做过游戏服务端&#xff0c;也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词&#xff0c;我其实挺感慨的——这门语言的难点从来不是语法多&#xff0c;而是知识点之间的耦合太深…

2026/11/2 1:16:51 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介&#xff1a;亚太天能T109滑盖智能锁产品说明书以PDF格式发布&#xff0c;适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开&#xff0c;先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能&#xff0c;再给出完整安装步骤&…

2026/11/1 10:35:11 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历&#xff1a;翻开源码注释、论文摘要或者一份专业报告&#xff0c;每个字都认识&#xff0c;连在一起却像天书。想找人聊聊&#xff0c;身边要么没人懂&#xff0c;要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型&#xff0c;几秒钟之后&a…

2026/11/1 9:35:41 阅读更多 →

日新闻

周新闻

月新闻