Linux 入门指南:从零开始掌握 Linux 基础知识与常用命令
Linux 入门指南:从零开始掌握 Linux 基础知识与常用命令
Linux 是现代服务器、云计算、容器技术和嵌入式设备的重要基础。无论你是想搭建自己的服务器、学习网络技术,还是部署 Docker、NAS 等服务,掌握 Linux 都是一项非常实用的技能。
本文将从零开始,带你了解 Linux 的基本概念、环境搭建、常用命令以及日常管理操作。
一、什么是 Linux?
Linux 是一种开源的类 Unix 操作系统,其核心部分称为 Linux Kernel(Linux 内核)。
与 Windows、macOS 类似,Linux 负责管理计算机硬件资源,并为应用程序提供运行环境。
Linux 最大的特点是:
- 开源免费:源代码公开,可以自由使用、修改和分发。
- 稳定可靠:广泛应用于服务器、超级计算机和网络设备。
- 安全性高:拥有完善的用户权限管理和访问控制机制。
- 高度可定制:可以根据需求选择不同的软件包和桌面环境。
- 命令行强大:适合自动化运维、服务器管理和批量处理任务。
1.1 Linux 与 Windows 有什么区别?
| 对比项目 | Linux | Windows |
|---|---|---|
| 授权方式 | 大多数发行版免费开源 | 商业授权为主 |
| 操作方式 | 命令行、图形界面 | 图形界面为主 |
| 软件安装 | 包管理器、软件仓库 | 安装包、应用商店 |
| 文件系统 | ext4、XFS、Btrfs 等 | NTFS、FAT32 等 |
| 权限管理 | 用户、用户组、权限位等 | ACL、用户组等 |
| 主要用途 | 服务器、云计算、开发 | 桌面办公、游戏、开发 |
1.2 常见的 Linux 发行版
Linux 本身只是内核,不同组织和社区基于 Linux 内核开发出了不同的发行版(Distribution)。
比较常见的发行版包括:
| 发行版 | 特点 | 适用场景 |
|---|---|---|
| Ubuntu | 易用、社区活跃、软件丰富 | 新手、桌面、服务器 |
| Debian | 稳定、可靠、软件包管理成熟 | 服务器、长期运行环境 |
| Arch Linux | 高度可定制、滚动更新 | 进阶用户、学习研究 |
| Fedora | 技术更新较快 | 开发者、桌面用户 |
| Rocky Linux | 面向企业服务器,兼容 RHEL 生态 | 企业服务器 |
| Alpine Linux | 轻量、安全、资源占用低 | Docker、容器、嵌入式 |
对于初学者,建议优先选择 Ubuntu 或 Debian。
二、搭建 Linux 学习环境
在正式学习 Linux 命令之前,需要先准备一个可以操作的 Linux 环境。
常见的方式有以下几种。
2.1 使用虚拟机
如果不想影响当前 Windows 系统,可以使用虚拟机安装 Linux。
常见的虚拟机软件:
- VMware Workstation
- VirtualBox
- Hyper-V
推荐配置:
| 硬件 | 建议配置 |
|---|---|
| CPU | 2 核及以上 |
| 内存 | 2GB~4GB |
| 硬盘 | 20GB 以上 |
| 系统 | Ubuntu Server / Debian |
虚拟机适合学习系统安装、网络配置、磁盘管理以及 Linux 服务部署。
2.2 使用 WSL2
如果你使用 Windows 10 或 Windows 11,也可以通过 WSL2(Windows Subsystem for Linux)运行 Linux。
以管理员身份打开 PowerShell,执行:
wsl --install
安装完成后重启系统,根据提示完成 Linux 用户初始化。
查看已经安装的发行版:
wsl -l -v
进入 Linux 环境:
wsl
WSL2 不需要单独安装虚拟机软件,适合日常学习 Linux 命令、Shell 脚本和开发工具。
2.3 使用云服务器
如果希望学习真实服务器环境,可以购买一台云服务器,通过 SSH 远程连接。
Windows PowerShell 或 CMD 中执行:
ssh root@服务器IP
首次连接时需要确认服务器指纹,然后输入密码或使用 SSH 密钥完成身份验证。
三、认识 Linux 命令行
Linux 的主要操作方式之一就是命令行(CLI)。
打开终端后,通常可以看到类似这样的提示符:
root@ubuntu:~#
它通常包含以下信息:
root:当前登录用户。ubuntu:主机名。~:当前所在目录,代表当前用户的家目录。#:通常表示 root 用户;普通用户通常显示$。
3.1 查看系统信息
查看 Linux 内核版本:
uname -r
查看完整内核信息:
uname -a
查看 Linux 发行版信息:
cat /etc/os-release
查看 CPU 信息:
lscpu
查看内存使用情况:
free -h
查看磁盘空间:
df -h
查看系统运行时间:
uptime
这些命令可以帮助我们快速了解当前 Linux 系统的运行状态。
四、Linux 文件系统结构
Linux 与 Windows 最大的区别之一,就是文件系统的组织方式。
Windows 通常使用 C:、D: 等盘符,而 Linux 使用统一的目录树结构。
Linux 的所有文件和目录都从根目录 / 开始。
常见目录如下:
| 目录 | 作用 |
|---|---|
/ |
根目录,整个文件系统的起点 |
/bin |
基础用户命令 |
/boot |
内核及启动相关文件 |
/dev |
设备文件 |
/etc |
系统配置文件 |
/home |
普通用户的家目录 |
/root |
root 用户的家目录 |
/lib |
基础共享库及内核模块相关文件 |
/mnt |
临时挂载目录 |
/media |
可移动设备挂载目录 |
/opt |
可选应用软件 |
/proc |
内核及进程信息的虚拟文件系统 |
/tmp |
临时文件 |
/usr |
大部分用户空间程序和资源 |
/var |
日志、缓存及其他可变数据 |
注意:不同发行版的目录组织可能略有差异。例如,现代 Linux 系统通常会将 /bin、/sbin 等目录链接到 /usr 下对应的位置。
4.1 绝对路径与相对路径
Linux 中有两种常见的路径表示方式。
绝对路径:
从根目录 / 开始的完整路径。
例如:
/home/user/documents
相对路径:
以当前所在目录为基准的路径。
例如:
documents/file.txt
常见路径符号:
| 符号 | 含义 |
|---|---|
/ |
根目录 |
. |
当前目录 |
.. |
上一级目录 |
~ |
当前用户家目录 |
- |
上一次所在目录(支持该用法的命令) |
五、Linux 常用基础命令
这是 Linux 入门最重要的部分。掌握以下命令,就可以完成大部分基础文件管理操作。
5.1 目录操作
查看当前所在目录:
pwd
列出当前目录文件:
ls
显示详细信息:
ls -l
显示隐藏文件:
ls -la
切换目录:
cd /home
返回上一级目录:
cd ..
返回家目录:
cd ~
返回上一次所在目录:
cd -
5.2 文件和目录管理
创建目录:
mkdir test
递归创建多级目录:
mkdir -p /data/docker/app
创建空文件:
touch test.txt
复制文件:
cp test.txt backup.txt
复制目录:
cp -r test backup
移动文件:
mv test.txt /home/
重命名文件:
mv old.txt new.txt
删除文件:
rm test.txt
删除目录及其内容:
rm -r test
注意:rm -rf 会强制递归删除指定路径下的内容,通常不会进入回收站。执行前务必确认路径,尤其不要在不清楚命令作用时使用。
5.3 查看文件内容
查看文件全部内容:
cat /etc/os-release
分页查看文件:
less /var/log/syslog
查看文件开头:
head -n 20 test.txt
查看文件末尾:
tail -n 20 test.txt
实时查看日志:
tail -f /var/log/syslog
退出 less 或实时日志查看,通常按 q 或 Ctrl+C。
5.4 搜索文件和内容
查找文件:
find /home -name "*.txt"
忽略大小写查找:
find /home -iname "*.txt"
搜索文件内容:
grep "error" test.log
递归搜索目录中的内容:
grep -r "error" /var/log/
忽略大小写:
grep -i "error" test.log
显示匹配行的行号:
grep -n "error" test.log
六、Linux 用户与权限管理
Linux 是一个多用户操作系统,用户权限管理是其安全机制的重要组成部分。
6.1 用户和用户组
Linux 中主要有两类用户:
- 普通用户:拥有受限制的系统操作权限。
- root 用户:系统超级管理员,拥有几乎所有系统操作权限。
查看当前用户:
whoami
查看当前用户所属的用户组:
groups
查看系统用户:
cat /etc/passwd
6.2 创建用户
创建新用户:
useradd -m username
设置用户密码:
passwd username
将用户添加到 sudo 用户组:
usermod -aG sudo username
注意:Ubuntu、Debian 等发行版通常使用 sudo 组;Alpine、部分 RHEL 系发行版的配置可能不同,需要根据实际系统调整。
6.3 Linux 文件权限
执行:
ls -l
可能看到类似结果:
-rwxr-xr-- 1 root root 1024 Nov 5 10:00 test.sh
权限部分可以分为四组:
- rwx r-x r--
│ │ │
│ │ └── 其他用户权限
│ └────── 所属用户组权限
└────────── 文件所有者权限
权限含义:
| 权限 | 数值 | 含义 |
|---|---|---|
| r | 4 | 读取 |
| w | 2 | 写入 |
| x | 1 | 执行 |
| - | 0 | 无权限 |
例如:
chmod 755 test.sh
表示:
- 所有者:读取、写入、执行。
- 所属组:读取、执行。
- 其他用户:读取、执行。
修改文件所有者:
chown user:user test.txt
递归修改目录所有者:
chown -R user:user /data
6.4 sudo 命令
普通用户执行系统管理操作时,通常需要使用 sudo。
例如:
sudo apt update
它会以管理员权限执行对应命令。
不要在不清楚命令作用时直接使用 root 权限运行程序。
七、Linux 软件包管理
Linux 通常通过包管理器安装、更新和卸载软件。
不同发行版使用不同的包管理工具。
| 发行版 | 包管理器 |
|---|---|
| Ubuntu | APT |
| Debian | APT |
| Alpine | APK |
| Arch Linux | Pacman |
| Fedora | DNF |
| Rocky Linux | DNF |
7.1 Ubuntu / Debian
更新软件包索引:
sudo apt update
升级已安装软件:
sudo apt upgrade
安装软件:
sudo apt install nginx
卸载软件:
sudo apt remove nginx
卸载软件及其配置文件:
sudo apt purge nginx
清理不再需要的软件包:
sudo apt autoremove
7.2 Alpine Linux
更新软件包索引:
apk update
升级软件包:
apk upgrade
安装软件:
apk add nginx
卸载软件:
apk del nginx
搜索软件包:
apk search nginx
Alpine Linux 采用 APK 包管理器,系统体积较小,非常适合容器和轻量级服务器环境。
八、Linux 进程与服务管理
在 Linux 中,程序运行后通常会产生一个或多个进程。
8.1 查看系统进程
查看所有进程:
ps aux
实时查看进程:
top
如果安装了 htop,也可以使用:
htop
查找指定进程:
ps aux | grep nginx
查看进程 PID:
pgrep nginx
8.2 结束进程
根据 PID 结束进程:
kill 1234
强制结束进程:
kill -9 1234
根据进程名称结束:
pkill nginx
注意:kill -9 会直接强制终止进程,可能导致程序无法正常清理资源,应优先尝试普通 kill。
8.3 systemd 服务管理
Ubuntu、Debian 等采用 systemd 的系统,可以使用 systemctl 管理服务。
启动服务:
sudo systemctl start nginx
停止服务:
sudo systemctl stop nginx
重启服务:
sudo systemctl restart nginx
查看服务状态:
sudo systemctl status nginx
设置开机自启:
sudo systemctl enable nginx
取消开机自启:
sudo systemctl disable nginx
查看系统启动日志:
journalctl -b
查看指定服务日志:
journalctl -u nginx
注意:Alpine Linux 默认使用 OpenRC,而不是 systemd,服务管理通常使用 rc-service 和 rc-update:
rc-service nginx start
rc-service nginx status
rc-update add nginx default
九、Linux 网络管理
Linux 经常用于服务器和网络设备,因此掌握基本网络命令非常重要。
9.1 查看 IP 地址
ip addr
查看网络接口:
ip link
查看路由表:
ip route
查看默认网关:
ip route show default
9.2 网络连通性测试
测试网络连通性:
ping 8.8.8.8
测试域名解析:
nslookup google.com
也可以使用:
dig google.com
查看网络连接和监听端口:
ss -tulnp
参数说明:
-t:TCP 连接。-u:UDP 连接。-l:监听状态。-n:显示数字地址和端口。-p:显示进程信息。
查看指定端口:
ss -tulnp | grep 8080
9.3 下载文件
使用 wget:
wget https://example.com/file.zip
使用 curl:
curl -LO https://example.com/file.zip
查看 HTTP 响应头:
curl -I https://example.com
十、SSH 远程连接 Linux
SSH(Secure Shell)是一种加密的远程登录协议,也是 Linux 服务器管理中最常用的工具之一。
10.1 安装 SSH 服务
Ubuntu / Debian:
sudo apt install openssh-server
Alpine:
apk add openssh
10.2 启动 SSH 服务
Ubuntu / Debian:
sudo systemctl enable --now ssh
Alpine:
rc-update add sshd default
rc-service sshd start
10.3 远程连接
在 Windows CMD 或 PowerShell 中执行:
ssh username@192.168.1.100
如果 SSH 使用非默认端口:
ssh -p 2222 username@192.168.1.100
10.4 使用 SSH 密钥登录
在 Windows PowerShell 中生成密钥:
ssh-keygen -t ed25519
将公钥部署到 Linux 服务器的 ~/.ssh/authorized_keys 文件中,并确保权限设置正确。
之后可以使用密钥进行身份验证,减少密码登录的需求。
十一、Linux 磁盘与存储管理
磁盘管理是服务器运维中非常重要的一部分。
11.1 查看磁盘信息
查看磁盘及分区:
lsblk
查看磁盘容量:
df -h
查看目录占用空间:
du -sh /var/log
查看当前目录下各文件夹大小:
du -h --max-depth=1
11.2 磁盘挂载
查看当前挂载情况:
mount
创建挂载目录:
mkdir -p /mnt/data
挂载文件系统:
mount /dev/sdb1 /mnt/data
卸载磁盘:
umount /mnt/data
注意:实际挂载前需要确认设备名称、文件系统类型和数据状态。不要在未确认分区内容的情况下格式化磁盘。
十二、Shell 与管道操作
Shell 是 Linux 中非常重要的命令解释器,可以执行命令、管理进程以及编写自动化脚本。
12.1 管道符
管道符 | 可以将前一个命令的输出传递给后一个命令。
例如:
ps aux | grep nginx
先列出进程,再筛选包含 nginx 的内容。
12.2 输出重定向
将命令输出保存到文件:
ls -l > output.txt
追加内容:
echo "Hello Linux" >> output.txt
将错误输出重定向到文件:
command 2> error.log
同时重定向标准输出和错误输出:
command > output.log 2>&1
12.3 编写简单 Shell 脚本
创建脚本:
nano hello.sh
输入以下内容:
#!/bin/sh
echo "Hello Linux!"
echo "当前用户:$(whoami)"
echo "当前目录:$(pwd)"
echo "当前时间:$(date)"
保存后赋予执行权限:
chmod +x hello.sh
执行脚本:
./hello.sh
Shell 脚本可以将多个命令组合起来,实现自动化任务,例如日志清理、文件备份和服务检查。
十三、Linux 学习建议
Linux 涉及的知识非常广泛,不建议一开始就尝试掌握所有内容。
可以按照以下顺序逐步学习:
第一阶段:基础操作
- 熟悉 Linux 目录结构。
- 掌握
cd、ls、pwd等基础命令。 - 学会创建、复制、移动和删除文件。
- 熟悉
cat、less、grep等文件查看工具。
第二阶段:系统管理
- 学习用户和权限管理。
- 掌握 APT、APK 等包管理器。
- 熟悉进程管理和服务管理。
- 学会查看系统日志。
第三阶段:网络与服务器
- 学习 IP 地址、路由和 DNS。
- 掌握 SSH 远程管理。
- 熟悉端口、网络连接和防火墙。
- 尝试部署 Nginx、数据库等服务。
第四阶段:进阶应用
- 学习 Shell 脚本。
- 学习 Docker 和容器管理。
- 了解 systemd、OpenRC。
- 学习磁盘、文件系统和存储管理。
- 尝试搭建个人服务器和自动化运维环境。
十四、总结
Linux 的学习并不复杂,真正的难点在于理解系统的工作方式,以及如何将不同命令组合起来解决实际问题。
对于初学者来说,最重要的不是记住大量命令,而是理解以下几个核心概念:
- 文件系统:理解 Linux 的目录结构和文件组织方式。
- 权限管理:理解用户、用户组以及文件权限。
- 软件管理:掌握不同发行版的软件包管理工具。
- 进程与服务:了解程序如何运行,以及如何管理系统服务。
- 网络管理:掌握 IP、路由、DNS 和 SSH 等基础知识。
- 自动化操作:通过 Shell 脚本提高日常操作效率。
建议在实际 Linux 环境中多动手操作。可以从一台 Ubuntu 或 Debian 虚拟机开始,逐步尝试搭建 Web 服务、配置 SSH、部署 Docker 容器。
当你能够独立完成这些任务时,就已经具备了比较扎实的 Linux 入门基础。
Linux 不仅是一套操作系统,更是服务器运维、云计算、网络技术和现代软件开发的重要基础。
- 点赞
- 收藏
- 关注作者
评论(0)