Linux 是一种自由和开放源代码的类 Unix 操作系统,诞生于 1991 年 10 月 5 日,由芬兰赫尔辛基大学学生 Linus Torvalds 最初开发。它的诞生源于 Linus 对教学中使用的 MINIX 操作系统的不满,最初只是个人爱好项目。
关键发展节点:
1991 年:Linus 在 comp.os.minix 新闻组发布首个 Linux 公告
1992 年:Linux 采用 GPL 许可证,吸引全球开发者贡献
1994 年:Linux 1.0 内核正式发布
2000 年代:成为服务器领域主流操作系统
现今:广泛应用于服务器、嵌入式设备、超级计算机等领域
Linux 是基于 Unix 设计理念开发的,但不是 Unix 的直接衍生版本。主要区别:
特性 | Linux | Unix |
---|---|---|
许可证 | 自由开源(GPL) | 多为商业授权 |
开发模式 | 社区协作开发 | 商业公司主导开发 |
硬件支持 | 支持广泛硬件平台 | 通常针对特定硬件 |
成本 | 免费 | 昂贵 |
变体 | 多种发行版 | 少数几个主要版本 |
服务器系统:Web 服务器、数据库服务器、DNS 服务器等
嵌入式系统:路由器、智能家居设备、工业控制系统
高性能计算:90% 的超级计算机运行 Linux
桌面系统:如 Ubuntu、Fedora 等桌面发行版
移动设备:Android 系统基于 Linux 内核
为什么使用虚拟机学习 Linux?
不影响主机系统
可创建多个实验环境
方便快照和恢复
主流虚拟机软件对比:
软件 | 许可证 | 特点 |
---|---|---|
VMware | 商业 | 功能强大,性能好,收费 |
VirtualBox | 开源 | 免费,功能齐全,适合学习 |
Hyper-V | 商业 | Windows 内置,性能较好 |
Linux 采用单一的树状目录结构,所有分区都挂载到某个目录下。
核心目录功能说明:
目录 | 用途 |
---|---|
/ | 根目录,所有目录的起点 |
/bin | 存放系统基本命令(如 ls、cp 等) |
/boot | 系统启动相关文件(内核、引导程序等) |
/dev | 设备文件目录 |
/etc | 系统配置文件存放目录 |
/home | 普通用户的家目录 |
/lib | 系统库文件存放目录 |
/mnt | 临时挂载点 |
/opt | 可选应用程序安装目录 |
/root | root 用户的家目录 |
/sbin | 系统管理命令存放目录 |
/tmp | 临时文件目录 |
/usr | 用户程序安装目录 |
/var | 经常变化的文件(如日志、邮件等) |
cd /path/to/dir # 切换到指定目录
cd .. # 返回上级目录
cd ~ # 返回当前用户家目录
cd - # 返回上次所在目录
cd / # 切换到根目录
ls # 简单列出当前目录内容
ls -l # 详细列表显示(等同于 ll)
ls -a # 显示所有文件(包括隐藏文件)
ls -lh # 人性化显示文件大小
ls -lt # 按时间排序显示
mkdir dirname # 创建目录
mkdir -p dir1/dir2 # 递归创建多级目录
rmdir dirname # 删除空目录
cat filename # 显示整个文件内容
more filename # 分页显示文件内容(空格翻页)
less filename # 更强大的分页查看(支持上下翻页)
head -n filename # 显示文件前n行
tail -n filename # 显示文件后n行
tail -f filename # 实时追踪文件变化(查看日志常用)
touch filename # 创建空文件或更新文件时间戳
cp src dest # 复制文件
mv src dest # 移动或重命名文件
rm filename # 删除文件(有确认提示)
rm -f filename # 强制删除(无提示)
rm -r dirname # 递归删除目录及其内容
find /path -name "*.txt" # 按名称查找文件
grep "text" filename # 在文件中搜索文本
grep -r "text" /path # 递归搜索目录中的文本
# 打包
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
命令模式:启动后的默认模式,用于执行命令
插入模式:编辑文本内容
底行模式:用于保存、退出等操作
模式切换:
命令模式 → 插入模式:按 i、a、o 等键
任何模式 → 命令模式:按 Esc 键
命令模式 → 底行模式:按 :
h/j/k/l # 左/下/上/右移动
0/$ # 行首/行尾
gg/G # 文件开头/结尾
Ctrl+f/b # 向前/后翻页
i # 当前位置插入
a # 下一个位置插入
o # 下方新行插入
x # 删除当前字符
dd # 删除当前行
yy # 复制当前行
p # 粘贴
u # 撤销
Ctrl+r # 重做
:w # 保存
:q # 退出
:wq # 保存并退出
:q! # 强制退出不保存
:w newfile # 另存为
useradd username # 添加用户
passwd username # 设置密码
userdel username # 删除用户
userdel -r username # 删除用户及家目录
usermod -g groupname username # 修改用户组
groupadd groupname # 创建组
groupdel groupname # 删除组
gpasswd -a user group # 添加用户到组
gpasswd -d user group # 从组中移除用户
权限表示法:
-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 # 修改所有者和组
ifconfig # 查看网络配置(新版使用 ip addr)
ping host # 测试网络连通性
netstat -tulnp # 查看网络连接和端口
ss -tulnp # 更现代的端口查看工具
ps aux # 查看所有进程
top # 动态查看进程(类似任务管理器)
kill PID # 终止进程
kill -9 PID # 强制终止进程
pkill processname # 按名称终止进程
df -h # 查看磁盘使用情况
du -sh /path # 查看目录大小
free -h # 查看内存使用
uptime # 查看系统运行时间
command > file # 输出重定向到文件(覆盖)
command >> file # 输出追加到文件
command1 | command2 # 管道:将command1输出作为command2输入
command1 && command2 # command1成功才执行command2
command1 || command2 # command1失败才执行command2
command1; command2 # 顺序执行多个命令
Ctrl+C # 终止当前命令
Ctrl+Z # 暂停当前命令(可用fg恢复)
Ctrl+D # 退出当前shell
Tab # 命令/文件名自动补全
history # 查看命令历史
!number # 执行历史记录中第number条命令
在线文档:
Linux 官方文档:Linux Kernel Documentation
Linux man pages 在线版:Linux man pages online
推荐书籍:
《鸟哥的Linux私房菜》- 基础学习篇
《Linux命令行与shell脚本编程大全》
实践平台:
OverTheWire Bandit:OverTheWire: Bandit
Linux Journey:Home | Linux Journey
社区论坛:
Linux 中国:https://linux.cn/
Stack Overflow:https://stackoverflow.com/