当前位置: 首页 > news >正文

Linux学习

基础概念

Linux 是一种开源、免费且高度可定制的操作系统内核,广泛应用于服务器、嵌入式设备、桌面及移动端(如 Android)。

  • 内核(Kernel):Linux 的核心,负责管理硬件资源(CPU、内存、磁盘等)和进程调度。
  • 常见发行版

    • 服务器端:Ubuntu Server、CentOS/RHEL、Debian、AlmaLinux

    • 桌面端:Ubuntu、Fedora、openSUSE、Arch Linux

    • 嵌入式:Yocto、Buildroot

  •  Linux 特点

    • 开源免费:代码公开,可自由修改和分发。

    • 稳定性高:适合长时间运行的服务器环境。

    • 安全性强:权限管理严格,病毒威胁少。

    • 多用户多任务:支持多个用户同时登录和运行多个进程。

Linux 命令与 Shell 命令的关系解析

Linux 命令是否等同于 Shell 命令?

Linux 命令本质上是 Shell 命令的一部分,但严格来说,两者并非完全等同。

Linux 命令与 Shell 命令的定义与区别

维度Linux 命令Shell 命令
定义可执行的系统工具或程序(如 lsgrep由 Shell 解释执行的命令(包括内置命令和外部命令)
来源通常位于 /bin/usr/bin 等目录包括 Shell 内置命令(如 cdecho)和外部程序(如 ls
执行方式直接由内核调用(通过 exec 系统调用)由 Shell 解析后执行(可能调用外部程序或直接运行内置命令)
典型示例lsgrepsystemctlcdechofor 循环、ls(外部命令)

Linux 命令是 Shell 命令的子集

  1. Shell 命令的分类
    • 内置命令:由 Shell 自身实现(如 cdechoexport)。
      • 示例:cd 命令直接由 Shell 修改当前工作目录,无需调用外部程序。
    • 外部命令:调用独立的可执行文件(如 lsgrep)。
      • 示例:ls 命令实际调用 /bin/ls 程序。
  2. Linux 命令的位置
    • 大多数 Linux 命令是外部程序,位于 /bin/usr/bin/sbin 等目录。
    • 这些命令可以被 Shell 调用,但也可以独立运行(如直接在终端输入 /bin/ls)。
  3. Shell 的角色
    • Shell 是用户与系统交互的接口,负责解析用户输入的命令。
    • 当用户输入 ls 时,Shell 会:
      1. 检查是否为内置命令(不是)。
      2. 在 PATH 环境变量指定的目录中查找 ls 可执行文件。
      3. 调用 exec 系统调用启动 /bin/ls 程序。

示例对比

  1. Shell 内置命令示例

    echo "Hello"  # 由 Shell 直接执行,无需调用外部程序
    cd /tmp       # 修改当前目录,由 Shell 内部实现
  2. Linux 命令(外部命令)示例

    ls -l         # 调用 /bin/ls 程序
    grep "error" log.txt  # 调用 /bin/grep 程序
  3. 混合使用示例:遍历当前目录下所有 .txt 文件并在每个文件中搜索包含字符串 hello 的行。

    for file in *.txt; do  # Shell 内置的 for 循环grep "hello" "$file"  # 调用外部 grep 命令
    done
    示例输出:
    如果 a.txt 内容为:
    hello world
    goodbye
    运行脚本后,输出可能是:
    a.txt:hello world
    

    如果文件名包含空格(如 my file.txt),需要用引号包裹 $file(即 "$file"),否则 grep 会将其解析为多个参数。

SSH

SSH(Secure Shell) 是一种用于安全访问远程计算机的加密网络协议,广泛应用于 Linux/Unix 系统管理、文件传输和端口转发等场景

SSH 基本功能

  • 安全登录:替代不安全的 Telnet,所有通信(包括密码)均加密。
  • 远程命令执行:在远程服务器上运行命令。
  • 文件传输:结合 scp 或 sftp 安全传输文件。
  • 端口转发:建立加密隧道,访问内网资源或代理上网。

基本语法

ssh [选项] 用户名@远程IP -p 端口号

  • 常用选项
    • -p:指定端口(默认 22)。
    • -i:指定私钥文件路径。
    • -v:显示详细调试信息(排查连接问题时有用)。
ssh user@192.168.1.100          # 默认端口 22
ssh root@example.com -p 2222    # 指定端口 2222
ssh -i ~/.ssh/mykey user@host  # 使用私钥登录
生成密钥对

ssh-keygen -t ed25519 -C "your_email@example.com"

  • 参数说明
    • -t ed25519:推荐使用 Ed25519 算法(安全性高,速度快)。
    • -C:添加注释(可选)。
  • 生成后文件:
    • 私钥:~/.ssh/id_ed25519(需严格保密)。
    • 公钥:~/.ssh/id_ed25519.pub(可公开)。
上传公钥到远程服务器

ssh-copy-id -i ~/.ssh/id_ed25519.pub -p 22 user@远程IP

手动上传(若 ssh-copy-id 不可用):

cat ~/.ssh/id_ed25519.pub | ssh user@远程IP "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"

Linux 远程登录

Linux 一般作为服务器使用,而服务器一般放在机房,你不可能在机房操作你的 Linux 服务器。

这时我们就需要远程登录到Linux服务器来管理维护系统。

Linux 系统中是通过 ssh 服务实现的远程登录功能,默认 ssh 服务端口号为 22。

Window 系统上 Linux 远程登录客户端有 SecureCRT, Putty, SSH

相关文章:

  • 机器学习×第五卷:线性回归入门——她不再模仿,而开始试着理解你
  • 如何手撸一个最小化操作系统:从 0 到 1 掌握汇编-文件管理-内存页表-文件系统-上下文切换算法 MIT 经典教程 结合豆包ai
  • win操作系统安装C++语言开发环境之一, vscode +MinGW ,流程
  • 【1】跨越技术栈鸿沟:字节跳动开源TRAE AI编程IDE的实战体验
  • Visual Studio Code 扩展
  • 图表类系列各种样式PPT模版分享
  • 使用 C# 将 Word、Excel、PDF 和 PPT文档转换为 Markdown 格式
  • 如何使用 Ansible 在 Ubuntu 24.04 上安装和设置 LNMP
  • 莫兰迪高级灰总结计划简约商务通用PPT模版
  • VmWare Ubuntu 16.04 搭建DPDK 19.08.2
  • 【无标题】湖北理元理律师事务所:债务优化中的生活保障与法律平衡之道
  • 从“安全密码”到测试体系:Gitee Test 赋能关键领域软件质量保障
  • React 第五十八节 Router中StaticRouterProvider的使用详解及案例
  • React第五十七节 Router中RouterProvider使用详解及注意事项
  • React核心概念:State是什么?如何用useState管理组件自己的数据?
  • 大模型智能体核心技术:CoT与ReAct深度解析
  • 操作系统的概念,功能和目标
  • React入门第一步:如何用Vite创建你的第一个React项目?
  • 深入理解 React 样式方案
  • 机器学习监督学习实战六:五种算法对新闻组英文文档进行文本分类(20类),词频统计和TF-IDF 转换特征提取方法理论和对比解析
  • 做b2b网站项目技巧/推广注册app拿佣金平台
  • 网站公告弹窗源码/郑州seo软件
  • 网站建设最新技术/知乎营销推广
  • vps搭建vpn无法访问国内网站/十大广告公司
  • 使用vue做单页面网站/百度搜索引擎的使用方法
  • 佛山企业网站建设平台/软文经典案例