《Linux应用基础教程》
目录
-
- 什么是Linux?
- Linux vs. Windows
- Linux发行版简介
- 为什么学习Linux?
- 如何安装Linux?(虚拟机方案推荐)
-
- Linux哲学思想
- Linux文件系统结构(树状结构)
- 终端/Shell是什么?
- 用户与权限
- 关键快捷键
-
pwd: 显示当前工作目录ls: 列出文件和目录cd: 切换目录mkdir: 创建新目录touch: 创建空文件cp: 复制文件或目录mv: 移动/重命名文件或目录rm: 删除文件或目录cat: 查看文件内容(小文件)less: 分页查看文件内容(大文件)man: 查看命令手册find: 查找文件grep: 文本搜索echo: 输出文本
-
- 什么是软件包管理器?
- Debian/Ubuntu 系统 (
apt) - RedHat/CentOS/Fedora 系统 (
yum/dnf) - 通用方法:源码编译
-
nano: 简单易用的命令行编辑器vim: 强大的编辑器(基础入门)
-
ps: 查看当前进程top: 动态查看进程和资源占用kill: 终止进程jobs: 查看后台任务bg/fg: 切换后台/前台任务crontab: 定时任务
-
ip addr: 查看IP地址ping: 测试网络连通性ss/netstat: 查看网络连接curl/wget: 下载文件
-
uname: 显示系统信息history: 查看命令历史alias: 创建命令别名help: 内置命令帮助
-
- 进阶学习方向
- 推荐书籍和网站
第一部分:Linux初识
什么是Linux?
Linux 是一套免费使用和自由传播的类 Unix 操作系统,其内核由林纳斯·托瓦兹(Linus Torvalds)在1991年首次发布,Linux 的最大特点是其开源特性,任何人都可以获取、修改和分发其源代码。
Linux vs. Windows
| 特性 | Linux | Windows |
|---|---|---|
| 内核 | 内核与GUI分离(如GNOME, KDE) | 内核与GUI深度集成 |
| 文件系统 | 树状结构,一切皆文件 | 驱动器盘符结构 (C:, D:) |
| 命令行 | 强大、灵活,是主要操作方式 | 图形界面为主,命令行为辅助 |
| 软件安装 | 主要通过包管理器 (apt, yum) |
主要通过 .exe 安装程序 |
| 开源与闭源 | 开源 | 商业闭源 |
| 用户与权限 | 严格的用户、组、权限模型 | 相对简单的权限管理 |
| 适用场景 | 服务器、开发、嵌入式、安全 | 桌面办公、游戏、专业软件 |
Linux发行版简介
Linux内核本身只是一个核心,为了让用户方便使用,开发者们将内核、系统工具、图形界面、应用软件打包在一起,形成了“发行版”。
- Ubuntu: 最适合初学者,社区庞大,软件生态好。
- CentOS / Rocky Linux / AlmaLinux: 企业级服务器首选,稳定可靠。
- Debian: 非常稳定,是Ubuntu的基础。
- Fedora: 红帽赞助,技术较新,适合开发者。
- Arch Linux: 滚动更新,高度可定制,适合喜欢折腾的进阶用户。
为什么学习Linux?
- 服务器领域霸主: 绝大多数互联网服务器、云计算平台都运行在Linux之上。
- 开发者的必备技能: 大量开发工具、框架和部署环境都基于Linux。
- 强大的可定制性: 你可以自由地定制你的操作系统。
- 安全性高: 开源特性使得漏洞更容易被发现和修复。
- 完全免费: 无需支付任何许可费用。
如何安装Linux?(虚拟机方案推荐)
对于初学者,强烈建议使用虚拟机来安装和学习Linux,这样不会影响你的现有系统(如Windows)。
- 软件: 下载并安装 VirtualBox (免费) 或 VMware Workstation Player。
- 系统: 从Ubuntu官网下载桌面版的ISO镜像文件。
- 步骤:
- 打开VirtualBox,点击“新建”。
- 创建一个虚拟机,分配内存(建议2GB以上)和硬盘空间(建议20GB以上)。
- 在创建过程中,选择“使用一个虚拟硬盘文件”并选择之前下载的Ubuntu ISO文件作为光盘启动。
- 启动虚拟机,按照屏幕提示完成Ubuntu的图形化安装。
第二部分:核心概念与入门
Linux哲学思想
- 一切皆文件: 硬件设备、配置信息、进程等在系统中都以文件的形式存在。
- 小而专的工具: 每个命令只做一件事,但做得非常出色,通过管道将多个命令组合起来完成复杂任务。
- 避免“惊喜”: 程序的输出应该是清晰、可预测的。
- 配置文本化: 系统的配置通常存储在人类可读的文本文件中。
Linux文件系统结构(树状结构)
所有文件和目录都从根目录 开始。
/bin: 基本命令(如ls,cp)/etc: 系统配置文件/home: 普通用户的家目录/usr: 用户安装的软件和程序/var: 经常变化的文件,如日志 (/var/log)、缓存/tmp: 临时文件/boot: 启动相关的文件/dev: 设备文件
终端/Shell是什么?
- 终端: 是一个硬件或软件,它提供了一个文本界面让你与系统交互,你可以把它想象成Linux的“命令提示符”窗口。
- Shell: 是一个程序,它接收你在终端输入的命令,解释这些命令,并让操作系统执行,最常用的Shell是 Bash (Bourne Again Shell)。
用户与权限
Linux是一个多用户系统,通过用户和权限来保证安全。
- 用户: 每个用户都有一个唯一的身份。
- 组: 将用户分组,方便权限管理。
- 权限: 分为读、写、执行,针对文件所有者、所属组和其他用户。
r(read): 读取w(write): 写入x(execute): 执行
关键快捷键
Ctrl + C: 终止当前正在运行的命令。Ctrl + D: 输入文件结束符,等效于exit,退出当前Shell。Ctrl + L: 清屏。Tab: 自动补全命令或文件名。
第三部分:文件与目录操作(最常用)
这部分是Linux操作的基石,请务必熟练掌握。
| 命令 | 全称 | 作用 | 示例 |
|---|---|---|---|
pwd |
Print Working Directory | 显示你当前所在的目录。 | pwd |
ls |
List | 列出当前目录下的文件和目录。 | ls (简单列表)ls -l (详细列表,显示权限、大小等)ls -a (显示所有文件,包括隐藏文件,以开头) |
cd |
Change Directory | 切换目录。 | cd /home (切换到 /home 目录)cd .. (切换到上一级目录)cd ~ (切换到当前用户的家目录)cd - (切换到上一个目录) |
mkdir |
Make Directory | 创建一个新目录。 | mkdir my_foldermkdir -p parent/child (递归创建多级目录) |
touch |
Touch | 创建一个空文件,或更新文件的时间戳。 | touch new_file.txt |
cp |
Copy | 复制文件或目录。 | cp file1.txt file2.txt (复制文件)cp -r dir1/ dir2/ (递归复制目录) |
mv |
Move | 移动文件/目录,或重命名。 | mv old_name.txt new_name.txt (重命名)mv file.txt /home/user/ (移动文件) |
rm |
Remove | 删除文件或目录。 | rm file.txt (删除文件)rm -r dir/ (递归删除目录)rm -f file.txt (强制删除,不提示) |
cat |
Concatenate | 查看文件内容(适合小文件)。 | cat file.txt |
less |
Less | 分页查看文件内容(适合大文件)。 | less large_file.log (按 q 退出) |
man |
Manual | 查看命令的详细使用手册。 | man ls (按 q 退出) |
find |
Find | 在指定目录下查找文件。 | find /home -name "*.txt" (在 /home 目录下查找所有 .txt 文件) |
grep |
Global Regular Expression Print | 在文件中搜索匹配的文本行。 | grep "error" /var/log/syslog (在syslog中搜索包含"error"的行) |
echo |
Echo | 将文本输出到终端或文件。 | echo "Hello, Linux!"echo "Hello" > file.txt (覆盖写入)echo "World" >> file.txt (追加写入) |
第四部分:软件包管理
安装软件是基本需求,不同发行版使用不同的工具。
Debian/Ubuntu 系统 (apt)
apt (Advanced Package Tool) 是 Debian 及其衍生版(如 Ubuntu)的包管理器。
- 更新软件列表:
sudo apt update - 升级已安装的包:
sudo apt upgrade - 安装软件:
sudo apt install <软件名> - 卸载软件:
sudo apt remove <软件名> - 搜索软件:
apt search <关键词>
示例: 安装 git
sudo apt update sudo apt install git
RedHat/CentOS/Fedora 系统 (yum/dnf)
yum (Yellowdog Updater, Modified) 用于旧版 CentOS/RHEL,dnf (Dandified Yum) 是其新版,用于 Fedora 和新版 CentOS/RHEL。
- 更新软件列表:
sudo yum check-update(yum) 或sudo dnf check-update(dnf) - 升级已安装的包:
sudo yum update(yum) 或sudo dnf upgrade(dnf) - 安装软件:
sudo yum install <软件名>(yum) 或sudo dnf install <软件名>(dnf) - 卸载软件:
sudo yum remove <软件名>(yum) 或sudo dnf remove <软件名>(dnf)
示例: 安装 nginx (使用dnf)
sudo dnf install nginx
第五部分:文本编辑器入门
在Linux中,配置文件通常是纯文本,需要用编辑器修改。
nano: 简单易用
nano 是一个对新手非常友好的编辑器。
- 打开文件:
nano my_config.conf - 操作:
- 使用方向键移动光标。
Ctrl + O: 保存文件 (会提示确认文件名)。Ctrl + X: 退出编辑器,如果文件有修改,会提示是否保存。
vim: 强大但需学习
vim (Vi IMproved) 是一个极其强大和高效的编辑器,但学习曲线较陡峭。
- 打开文件:
vim my_script.sh - 三种模式:
- 普通模式: 默认模式,用于导航和执行命令,按
i进入插入模式。 - 插入模式: 用于输入文本,按
Esc返回普通模式。 - 命令行模式: 用于保存、退出等操作,在普通模式下按 进入。
- 普通模式: 默认模式,用于导航和执行命令,按
基本操作流程:
vim file.txt(打开文件,进入普通模式)- 按
i(进入插入模式,开始输入文本) - 按
Esc(返回普通模式) - 按 (进入命令行模式)
- 输入
wq(保存并退出) 或q!(不保存强制退出)
第六部分:进程管理与任务调度
ps: 查看当前进程
ps (Process Status) 用于显示当前运行的进程。
ps aux: 显示所有用户的详细信息 (a=all,u=user format,x=include processes not attached to a terminal)。
top: 动态查看进程和资源占用
top 会实时更新进程列表,并显示CPU、内存等资源占用情况,按 q 退出。
kill: 终止进程
当你需要强制结束一个程序时使用。
- 用
ps aux找到要终止进程的 PID (Process ID)。 kill <PID>: 发送一个正常的终止信号。kill -9 <PID>: 强制杀死进程(不推荐轻易使用)。
jobs, bg, fg: 管理后台任务
ping www.google.com &:&符号让命令在后台运行。jobs: 查看当前终端的后台任务列表。fg %1: 将任务1带到前台运行。bg %1: 让任务1在后台继续运行。
crontab: 定时任务
crontab 可以让你设置周期性执行的任务。
crontab -e: 编辑当前用户的定时任务列表。- 格式:
分钟 小时 日 月 星期 命令 - 示例:
0 2 * * * /usr/bin/backup.sh(每天凌晨2点执行/usr/bin/backup.sh脚本)。
第七部分:网络配置与管理
ip addr: 查看IP地址
现代Linux系统推荐使用 ip 命令。
ip addr show: 显示所有网络接口的IP地址信息。
ping: 测试网络连通性
ping www.baidu.com: 测试与百度服务器的网络是否通畅。
ss/netstat: 查看网络连接
ss -tuln: 显示所有监听的TCP (t) 和UDP (u) 端口,不显示域名 (n)。netstat -tuln:ss的替代品,功能类似。
curl/wget: 下载文件
curl -O [URL]: 从URL下载文件并保持原文件名。wget [URL]: 从URL下载文件。
第八部分:系统信息与帮助
uname: 显示系统信息
uname -a: 显示所有可用信息(内核版本、主机名等)。
history: 查看命令历史
history: 显示你之前输入过的命令列表。!数字: 执行历史列表中对应编号的命令。!10执行第10条命令。
alias: 创建命令别名
为长命令创建简短的别名。
alias ll='ls -alF': 创建一个ll命令,效果等同于ls -alF。alias grep='grep --color=auto': 让grep的输出高亮显示。- 注意:
alias只在当前终端会话有效,要永久保存,请将其写入~/.bashrc或~/.bash_profile文件。
help: 内置命令帮助
有些命令是Shell内置的,没有 man 手册,可以使用 help。
help cd: 查看cd命令的帮助信息。
第九部分:学习路径与资源推荐
进阶学习方向
- Shell脚本: 学习如何编写
.sh脚本,实现自动化任务。 - 用户与权限管理: 深入学习
useradd,groupadd,chmod,chown等。 - 软件编译: 学习使用
gcc/g++编译C/C++程序,使用make和Makefile管理项目。 - 服务管理: 学习使用
systemd(systemctl) 来管理后台服务。 - Linux内核与网络: 深入理解内核原理、TCP/IP协议栈等。
推荐资源
- 在线教程:
- Linux Journey: 非常友好的交互式教程。
- The Linux Command Line: 一本免费在线书籍,经典之作。
- 实践平台:
- OverTheWire: 通过游戏化的方式学习Linux安全基础。
- 社区:
- Stack Overflow: 提问和寻找答案的最佳去处。
- 各大Linux发行版的官方论坛和社区。
也是最重要的一点:多动手,多实践! 不要害怕犯错,Linux的命令行环境非常安全,大胆地尝试你学到的每一个命令,这是掌握Linux最快的方式,祝你学习愉快!
