Linux 基本操作
一、Linux 基本概念
Linux 是一种开源、类 Unix 的操作系统内核,由林纳斯·托瓦兹(Linus Torvalds)于 1991 年创建。Linux 系统通常指包含 Linux 内核及各种工具和库的完整操作系统(如 Ubuntu、CentOS、Debian 等发行版)。以下是 Linux 的核心概念:
- 开源与自由软件
- Linux 遵循 GNU 通用公共许可证(GPL),代码公开,允许用户查看、修改和分发。
- 自由软件强调用户对软件的控制权,支持自由使用、学习、修改和分享。
- 内核与用户空间
- 内核(Kernel):管理硬件资源(如 CPU、内存、磁盘)、进程调度、设备驱动等。
- 用户空间:运行用户程序和工具(如 Shell、编辑器、编译器),通过系统调用与内核交互。
- 发行版(Distribution)
- Linux 内核结合不同软件包形成发行版,常见的有:
- Ubuntu:用户友好,适合桌面和服务器。
- CentOS/RHEL:企业级,注重稳定性。
- Debian:通用且灵活。
- Arch Linux:高度自定义,适合高级用户。
- 每个发行版有独特的包管理器(如 apt、yum、pacman)。
- Linux 内核结合不同软件包形成发行版,常见的有:
- 文件系统
- Linux 使用层次化文件系统,根目录为
/
。 - 重要目录:
/home
:用户主目录。/etc
:配置文件。/var
:日志、临时文件。/usr
:用户程序和库。/bin
、sbin
:基本命令和系统命令。
- 文件系统类型:ext4(常见)、btrfs、xfs。
- 文件名区分大小写,无扩展名限制。
- Linux 使用层次化文件系统,根目录为
- 进程与多任务
- Linux 支持多任务、多用户,允许多个进程并发运行。
- 每个进程有唯一进程 ID(PID),可用
ps
或top
查看。 - 进程分为前台和后台进程。
- 权限管理
- 文件和目录有所有者(owner)、组(group)、其他(others)三种权限:读(r)、写(w)、执行(x)。
- 使用
chmod
修改权限,chown
更改所有者。
- Shell 与命令行
- Shell 是用户与系统的交互接口,常见为 bash、zsh、fish。
- 命令行是 Linux 的核心操作方式,高效灵活。
- 软件包管理
- 使用包管理器安装、更新、卸载软件:
- Debian/Ubuntu:
apt
(.deb
包)。 - RHEL/CentOS:
yum
/dnf
(.rpm
包)。 - Arch Linux:
pacman
.
- Debian/Ubuntu:
- 源码安装:
./configure && make && make install
.
- 使用包管理器安装、更新、卸载软件:
- 网络与服务
- Linux 广泛用于服务器,支持 SSH、HTTP 等服务。
- 服务管理工具:
systemd
、service
. - 网络配置:
/etc/network
或 NetworkManager。
- 开发环境
- 支持多种语言(C、Python、Java)。
- 开发工具:GCC、Make、Git、Vim/Emacs。
- 调试工具:GDB、Valgrind。
二、Linux 基本操作总结
1. 基础操作(熟悉 Linux 环境)
目标:掌握命令行操作,理解文件系统和权限。
常用命令
文件操作
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23# 列出当前目录内容(详细列表,包含隐藏文件)
ls -la
# 切换到 /home/user 目录
cd /home/user
# 显示当前工作目录
pwd
# 创建目录 test_dir
mkdir test_dir
# 创建空文件 example.txt
touch example.txt
# 复制 example.txt 到 test_dir
cp example.txt test_dir/
# 移动 example.txt 到 test_dir/renamed.txt
mv example.txt test_dir/renamed.txt
# 删除 test_dir 及其内容
rm -rf test_dir文件查看
1
2
3
4
5
6
7
8
9
10
11# 查看文件内容
cat /etc/passwd
# 分页查看文件
less /var/log/syslog
# 查看文件前 10 行
head /etc/passwd
# 实时监控日志文件
tail -f /var/log/syslog查找与搜索
1
2
3
4
5# 查找名为 config.conf 的文件
find /etc -name "config.conf"
# 在当前目录递归搜索包含 "error" 的文件
grep -r "error" .权限管理
1
2
3
4
5
6
7
8# 查看文件权限
ls -l example.txt
# 赋予文件所有者执行权限
chmod u+x example.txt
# 更改文件所有者为 user1,组为 group1
chown user1:group1 example.txt系统信息
1
2
3
4
5
6
7
8
9
10
11# 查看系统信息
uname -a
# 查看磁盘使用情况(人类可读格式)
df -h
# 查看内存使用情况
free -m
# 实时监控系统资源
top
Shell 基础
输入/输出重定向与管道
1
2
3
4
5
6
7
8
9
10
11# 将 ls 输出重定向到 file.txt
ls > file.txt
# 追加内容到 file.txt
echo "New line" >> file.txt
# 使用管道过滤 ls 输出
ls | grep ".txt"
# 从文件读取输入
cat < file.txt任务管理
1
2
3
4
5
6
7
8# 后台运行 sleep 命令
sleep 100 &
# 查看后台任务
jobs
# 终止进程(假设 PID 为 1234)
kill -9 1234
练习
- 创建目录结构,复制/移动文件,修改权限。
- 使用
grep
搜索日志文件内容。 - 组合管道命令(如
ps aux | grep python
)。
2. 中级操作(系统管理与网络)
目标:掌握系统配置、软件安装和网络操作。
包管理
1
2
3
4
5
6
7
8
9# Ubuntu/Debian: 更新包列表并安装 nginx
sudo apt update
sudo apt install nginx
# CentOS/RHEL: 安装 nginx
sudo yum install nginx
# 查询已安装包
dpkg -l | grep nginx用户与组管理
1
2
3
4
5
6
7
8
9
10
11# 创建用户 newuser 并设置主目录
sudo useradd -m newuser
# 设置 newuser 密码
sudo passwd newuser
# 添加 newuser 到 sudo 组
sudo usermod -aG sudo newuser
# 创建组 developers
sudo groupadd developers服务管理
1
2
3
4
5
6
7
8# 启动 nginx 服务
sudo systemctl start nginx
# 设置 nginx 开机自启
sudo systemctl enable nginx
# 查看 nginx 服务状态
sudo systemctl status nginx网络操作
1
2
3
4
5
6
7
8
9
10
11# 查看网络接口
ip addr
# 测试与 google.com 的连通性
ping -c 4 google.com
# 远程登录到服务器
ssh user@192.168.1.100
# 传输文件到远程服务器
scp localfile.txt user@192.168.1.100:/home/user/脚本编写
1
2
3
4#!/bin/bash
# 备份 /home/user 目录到 /backup
tar -czf /backup/backup_$(date +%F).tar.gz /home/user
echo "Backup completed on $(date)"练习
- 安装 Nginx,配置简单 Web 服务器。
- 编写备份脚本,定时运行(使用
cron
)。 - 配置 SSH 免密登录(
ssh-keygen
和ssh-copy-id
)。
3. 开发相关操作(程序开发环境搭建)
目标:搭建开发环境,编写、编译和调试程序。
安装开发工具
1
2
3
4
5
6
7
8# Ubuntu: 安装 GCC、G++、Make
sudo apt install build-essential
# 安装 Python3 和 pip
sudo apt install python3 python3-pip
# 安装 Git
sudo apt install gitC/C++ 开发
1
2
3
4
5#include <stdio.h>
int main() {
printf("Hello, World!\n");
return 0;
}1
2
3
4
5# 编译 C 程序
gcc hello.c -oalya
# 运行程序
./helloMakefile
1
2
3
4all:
gcc hello.c -o hello
clean:
rm -f hello调试
1
2
3
4
5# 使用 GDB 调试
gdb ./hello
# 使用 Valgrind 检查内存泄漏
valgrind --leak-check=yes ./hello版本控制
1
2
3
4
5
6
7
8
9
10
11
12
13# 配置 Git
git config --global user.name "Your Name"
git config --global user.email "your.email@example.com"
# 克隆仓库
git clone https://github.com/your/repo.git
# 添加并提交代码
git add .
git commit -m "Initial commit"
# 推送代码
git push origin main练习
- 编写 C 程序实现文件读写。
- 使用 Git 管理项目,推送到远程仓库。
- 使用 GDB/Valgrind 调试程序。
三、学习路径与建议
- 初学者(1-2 个月)
- 安装 Ubuntu,熟悉命令行。
- 练习文件操作、权限管理和管道。
- 学习 Vim 或 Nano。
- 使用
apt
安装软件。
- 中级(3-6 个月)
- 编写 Shell 脚本,自动化任务。
- 配置 SSH、Nginx,学习网络基础。
- 管理用户、权限和服务。
- 使用
find
、grep
处理复杂任务。
- 高级(6 个月以上)
- 搭建开发环境(GCC、Python、Git)。
- 编写 C/C++ 或 Python 程序,使用 Make 和 GDB。
- 参与开源项目,掌握 Git 工作流。
- 学习 Docker 或 KVM。
- 资源推荐
- 文档:
man
命令、/usr/share/doc
。 - 书籍:The Linux Command Line、Linux System Programming。
- 在线教程:Linux Journey、freeCodeCamp。
- 社区:Stack Overflow、Reddit(r/linux)、X 上的 Linux 讨论。
- 文档:
四、总结
熟练操作 Linux 并进行程序开发需掌握: - 命令行:文件操作、搜索、权限管理。 - 系统管理:包管理、用户管理、服务配置、网络操作。 - 开发环境:编译、调试、版本控制。 - 脚本自动化:Shell 脚本、任务自动化。
通过实践(如搭建服务器、编写程序、参与开源项目),6-12 个月可达到熟练水平。建议从基础命令入手,逐步深入系统管理和开发,保持动手实践。