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

Linux 基础学习

一、Linux 系统概述

1.1 Linux 的起源与发展

Linux 是一种自由和开放源代码的类 Unix 操作系统,诞生于 1991 年 10 月 5 日,由芬兰赫尔辛基大学学生 Linus Torvalds 最初开发。它的诞生源于 Linus 对教学中使用的 MINIX 操作系统的不满,最初只是个人爱好项目。

关键发展节点:

  • 1991 年:Linus 在 comp.os.minix 新闻组发布首个 Linux 公告

  • 1992 年:Linux 采用 GPL 许可证,吸引全球开发者贡献

  • 1994 年:Linux 1.0 内核正式发布

  • 2000 年代:成为服务器领域主流操作系统

  • 现今:广泛应用于服务器、嵌入式设备、超级计算机等领域

1.2 Linux 与 Unix 的关系

Linux 是基于 Unix 设计理念开发的,但不是 Unix 的直接衍生版本。主要区别:

特性LinuxUnix
许可证自由开源(GPL)多为商业授权
开发模式社区协作开发商业公司主导开发
硬件支持支持广泛硬件平台通常针对特定硬件
成本免费昂贵
变体多种发行版少数几个主要版本

1.3 Linux 系统的主要应用领域

  1. 服务器系统:Web 服务器、数据库服务器、DNS 服务器等

  2. 嵌入式系统:路由器、智能家居设备、工业控制系统

  3. 高性能计算:90% 的超级计算机运行 Linux

  4. 桌面系统:如 Ubuntu、Fedora 等桌面发行版

  5. 移动设备:Android 系统基于 Linux 内核

二、Linux 系统安装指南

2.1 虚拟机安装方案

为什么使用虚拟机学习 Linux?

  • 不影响主机系统

  • 可创建多个实验环境

  • 方便快照和恢复

主流虚拟机软件对比:

软件许可证特点
VMware商业功能强大,性能好,收费
VirtualBox开源免费,功能齐全,适合学习
Hyper-V商业Windows 内置,性能较好

2.2 Linux 目录结构详解

Linux 采用单一的树状目录结构,所有分区都挂载到某个目录下。

核心目录功能说明:

目录用途
/根目录,所有目录的起点
/bin存放系统基本命令(如 ls、cp 等)
/boot系统启动相关文件(内核、引导程序等)
/dev设备文件目录
/etc系统配置文件存放目录
/home普通用户的家目录
/lib系统库文件存放目录
/mnt临时挂载点
/opt可选应用程序安装目录
/rootroot 用户的家目录
/sbin系统管理命令存放目录
/tmp临时文件目录
/usr用户程序安装目录
/var经常变化的文件(如日志、邮件等)

三、Linux 基础命令全解

3.1 文件与目录操作命令

1. 目录切换命令 cd
cd /path/to/dir    # 切换到指定目录
cd ..              # 返回上级目录
cd ~               # 返回当前用户家目录
cd -               # 返回上次所在目录
cd /               # 切换到根目录
2. 目录内容查看命令 ls/ll
ls         # 简单列出当前目录内容
ls -l      # 详细列表显示(等同于 ll)
ls -a      # 显示所有文件(包括隐藏文件)
ls -lh     # 人性化显示文件大小
ls -lt     # 按时间排序显示
3. 目录创建与删除
mkdir dirname          # 创建目录
mkdir -p dir1/dir2     # 递归创建多级目录
rmdir dirname          # 删除空目录

3.2 文件操作命令

1. 文件查看命令
cat filename      # 显示整个文件内容
more filename     # 分页显示文件内容(空格翻页)
less filename     # 更强大的分页查看(支持上下翻页)
head -n filename  # 显示文件前n行
tail -n filename  # 显示文件后n行
tail -f filename  # 实时追踪文件变化(查看日志常用)
2. 文件操作命令
touch filename    # 创建空文件或更新文件时间戳
cp src dest       # 复制文件
mv src dest       # 移动或重命名文件
rm filename       # 删除文件(有确认提示)
rm -f filename    # 强制删除(无提示)
rm -r dirname     # 递归删除目录及其内容
3. 文件查找命令
find /path -name "*.txt"    # 按名称查找文件
grep "text" filename       # 在文件中搜索文本
grep -r "text" /path       # 递归搜索目录中的文本

3.3 压缩与解压命令

# 打包
tar -cvf archive.tar /path/to/files# 打包并压缩
tar -zcvf archive.tar.gz /path/to/files# 解压
tar -xvf archive.tar
tar -zxvf archive.tar.gz -C /target/path# zip压缩解压
zip archive.zip file1 file2
unzip archive.zip

四、Vi/Vim 编辑器完全指南

4.1 Vim 的三种模式

  1. 命令模式:启动后的默认模式,用于执行命令

  2. 插入模式:编辑文本内容

  3. 底行模式:用于保存、退出等操作

模式切换:

  • 命令模式 → 插入模式:按 i、a、o 等键

  • 任何模式 → 命令模式:按 Esc 键

  • 命令模式 → 底行模式:按 :

4.2 基本操作命令

1. 光标移动
h/j/k/l    # 左/下/上/右移动
0/$        # 行首/行尾
gg/G       # 文件开头/结尾
Ctrl+f/b   # 向前/后翻页
2. 文本编辑
i    # 当前位置插入
a    # 下一个位置插入
o    # 下方新行插入
x    # 删除当前字符
dd   # 删除当前行
yy   # 复制当前行
p    # 粘贴
u    # 撤销
Ctrl+r # 重做
3. 保存与退出
:w      # 保存
:q      # 退出
:wq     # 保存并退出
:q!     # 强制退出不保存
:w newfile # 另存为

五、Linux 用户与权限管理

5.1 用户管理命令

useradd username      # 添加用户
passwd username       # 设置密码
userdel username      # 删除用户
userdel -r username   # 删除用户及家目录
usermod -g groupname username # 修改用户组

5.2 组管理命令

groupadd groupname    # 创建组
groupdel groupname    # 删除组
gpasswd -a user group # 添加用户到组
gpasswd -d user group # 从组中移除用户

5.3 文件权限详解

权限表示法:

-rwxr-xr-- 1 user group 1024 Jan 1 10:00 file
↑↑↑↑↑↑↑↑↑
││││││││└─ 其他用户权限
││││└─┴─┴─ 所属组权限
│└─┴─┴─┴─ 所有者权限
└─────── 文件类型

权限字母表示:

  • r:读权限(4)

  • w:写权限(2)

  • x:执行权限(1)

权限修改命令:

chmod 755 filename      # 数字方式修改权限
chmod u=rwx,g=rx,o=r filename # 字母方式修改
chown user:group filename # 修改所有者和组

六、Linux 系统管理命令

6.1 网络管理

ifconfig              # 查看网络配置(新版使用 ip addr)
ping host             # 测试网络连通性
netstat -tulnp        # 查看网络连接和端口
ss -tulnp             # 更现代的端口查看工具

6.2 进程管理

ps aux                # 查看所有进程
top                   # 动态查看进程(类似任务管理器)
kill PID              # 终止进程
kill -9 PID           # 强制终止进程
pkill processname     # 按名称终止进程

6.3 系统监控

df -h                 # 查看磁盘使用情况
du -sh /path          # 查看目录大小
free -h               # 查看内存使用
uptime                # 查看系统运行时间

七、实用技巧与最佳实践

7.1 管道与重定向

command > file        # 输出重定向到文件(覆盖)
command >> file       # 输出追加到文件
command1 | command2   # 管道:将command1输出作为command2输入

7.2 命令组合执行

command1 && command2  # command1成功才执行command2
command1 || command2  # command1失败才执行command2
command1; command2    # 顺序执行多个命令

7.3 实用快捷键

Ctrl+C        # 终止当前命令
Ctrl+Z        # 暂停当前命令(可用fg恢复)
Ctrl+D        # 退出当前shell
Tab           # 命令/文件名自动补全
history       # 查看命令历史
!number       # 执行历史记录中第number条命令

八、学习资源推荐

  1. 在线文档

    • Linux 官方文档:Linux Kernel Documentation

    • Linux man pages 在线版:Linux man pages online

  2. 推荐书籍

    • 《鸟哥的Linux私房菜》- 基础学习篇

    • 《Linux命令行与shell脚本编程大全》

  3. 实践平台

    • OverTheWire Bandit:OverTheWire: Bandit

    • Linux Journey:Home | Linux Journey

  4. 社区论坛

    • Linux 中国:https://linux.cn/

    • Stack Overflow:https://stackoverflow.com/

http://www.xdnf.cn/news/15617.html

相关文章:

  • MySQL安全修改表结构、加索引:ON-Line-DDL工具有哪些
  • 安装wsl-Ubuntu到D盘
  • 模型材质一键替换~轻松还原多种三维场景
  • Qt软键盘
  • 河南萌新联赛2025第(一)场:河南工业大学(补题)
  • python脚本调用 ffmpeg 针对MP3转通道
  • 数分思维:02——京东app产品分析
  • mysql学习笔记
  • 力扣119:杨辉三角Ⅱ
  • Kotlin密封类
  • 独家|理想汽车放弃华为PBC模式,回归OKR理想汽车
  • 常用API
  • 输尿管下段积水预测与手术决策支持技术方案
  • 现在遇到一个问题 要使用jmeter进行压测 jmeter中存在jar包 我们还要使用linux进行发压,这个jar包怎么设计使用
  • iOS App 电池消耗管理与优化 提升用户体验的完整指南
  • Unity VR多人手术模拟恢复2:客户端移动同步问题分析与解决方案
  • 华为P30/pro (ELE-AL00) 鸿蒙4.2降级 EMUI 9
  • npm : 无法加载文件 C:\Program Files\nodejs\npm.ps1
  • C++性能优化与现代工程实践:打造高效可靠的软件系统
  • 部署-k8s和docker、jenkins的区别和联系
  • 深入理解 SemaphoreSlim 在.NET Core API 开发中的应用
  • Spring Boot整合阿里云OSS:企业级文件存储最佳实践
  • 贪心算法思想草稿
  • Spring AI之Prompt开发
  • Perspective:一款开源的交互式分析和数据可视化组件
  • 找不到或无法加载主类 org.gradle.wrapper.GradleWrapperMain
  • Maven详细解
  • 网络基础11 上公网--Internet接入技术
  • Python eval函数详解 - 用法、风险与安全替代方案
  • NLP——迁移学习