Linux实战:从入门到精通

内容分享8小时前发布
0 0 0

作者:大河大河o
标签: 
Linux
 
运维
 
Shell
 
系统管理
 
vim
 
包管理
 
服务管理

发布时间: 2025年12月28日

🎯 文档目标

本文旨在为初学者和进阶用户系统性地介绍Linux操作系统的核心概念、常用命令和实用技巧,涵盖文件系统管理、文本编辑、软件安装、服务配置、计划任务等多个方面,并提供大量实用示例。

一、文件系统管理与常用命令

Linux的文件系统结构是理解一切操作的基础。掌握核心命令是高效工作的关键。

1.1 文件与目录操作

最基础的命令,用于日常的文件和目录管理。


ls
 – 列出目录内容
cd
 – 切换目录
pwd
 – 显示当前工作目录
mkdir
 – 创建目录
rm
 – 删除文件或目录
cp
 – 复制文件或目录
mv
 – 移动或重命名文件或目录
find
 – 在目录树中查找文件
grep
 – 在文件内容中搜索文本

实用示例:



# 查看当前目录下所有文件,包括隐藏文件
$ ls -la
 
# 创建一个名为 'project' 的新目录
$ mkdir project
 
# 将 'config.txt' 复制到 'project' 目录下
$ cp config.txt project/
 
# 重命名 'old_name.txt' 为 'new_name.txt'
$ mv old_name.txt new_name.txt
 
# 在当前目录及其子目录中查找所有以 '.log' 结尾的文件
$ find . -name "*.log"
 
# 在 'access.log' 文件中查找包含 'error' 的行
$ grep "error" access.log
 
# 删除 'project' 目录及其所有内容(谨慎使用)
$ rm -rf project/

1.2 磁盘管理

了解磁盘使用情况、进行分区和格式化是系统管理员的必备技能。


df
 – 报告文件系统的磁盘空间使用情况
du
 – 估计文件空间使用情况
fdisk
 – 磁盘分区表操作工具
parted
 – 另一个强大的磁盘分区工具
mkfs
 – 创建文件系统(格式化)
fsck
 – 检查和修复文件系统
mount
 / 
umount
 – 挂载/卸载文件系统
dd
 – 转换或拷贝文件(可用于备份磁盘、创建镜像等)

实用示例:



# 以人类可读格式查看磁盘使用情况
$ df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/vda1        40G  5.0G   33G  14% /
devtmpfs        486M     0  486M   0% /dev
tmpfs           497M  356K  496M   0% /run
...
 
# 查看当前目录下各子目录的大小
$ du -sh *
 
# 列出所有磁盘分区信息
$ fdisk -l
 
# 格式化 /dev/sdb 分区为 ext4 文件系统
$ mkfs -t ext4 -v /dev/sdb
 
# 挂载 /dev/sdb1 到 /mnt/mydisk 目录
$ mount /dev/sdb1 /mnt/mydisk
 
# 卸载 /mnt/mydisk 目录
$ umount /mnt/mydisk
 
# 创建一个 100MB 的文件,内容为零
$ dd if=/dev/zero of=large_file.img bs=1M count=100

1.3 用户与权限管理

Linux是一个多用户系统,权限管理至关重要。


chmod
 – 修改文件或目录的权限
chown
 – 修改文件或目录的所有者
chgrp
 – 修改文件或目录的所属组

实用示例:



# 将 'script.sh' 的权限设置为所有者可读写执行,组和其他用户只读
$ chmod 744 script.sh
 
# 将 'data.txt' 的所有者更改为 'user1'
$ chown user1 data.txt
 
# 将 'config' 目录的所属组更改为 'admin'
$ chgrp admin config

二、文本编辑神器 – Vim

Vim是一个功能强大的命令行文本编辑器,虽然学习曲线陡峭,但掌握后效率极高。

2.1 基本模式

命令模式 (Normal Mode):默认模式,用于执行编辑命令。插入模式 (Insert Mode):用于输入文本,按 
i

a

o
 等进入。末行模式 (Command-line Mode):用于执行保存、查找、替换等命令,按 
:
 进入。

2.2 实用技巧与示例

打开多个文件:



# 同时打开三个文件
$ vim foo.txt bar.txt hello.txt
 
# 在vim中查看已打开的文件列表
:ls
 
# 在打开的文件间切换 (例如切换到第2个文件)
:b 2
# 切换到第3个文件
:b 3

常用编辑命令:


dd
 – 删除当前行
yy
 – 复制当前行
p
 – 粘贴
u
 – 撤销
Ctrl+r
 – 重做
/pattern
 – 向下搜索 'pattern'
?pattern
 – 向上搜索 'pattern'
:s/old/new/g
 – 替换当前行第一个 'old' 为 'new'
:%s/old/new/g
 – 替换整个文件中的 'old' 为 'new'

映射快捷键 (提高效率):



# 在命令模式下,按 F4 可以从光标所在行开始删除10000行 (非常危险,仅作演示)
:map <F4> 10000dd
 
# 在插入模式下,输入 '__main' 会自动展开为 'if __name__ == '__main__':' (Python常用)
:inoremap __main if __name__ == '__main__':
 
# 说明:inoremap 中的 'i' 表示在插入模式下生效,'nore' 表示不递归解析,防止无限循环。
# 将这些映射写入 ~/.vimrc 文件,可让其永久生效。

三、软件安装与配置

Linux发行版通常使用包管理器来安装、更新和删除软件,这是管理系统的便捷方式。

3.1 使用 Yum (Red Hat系列)

Yum (Yellowdog Updater Modified) 是Red Hat、CentOS等系统常用的包管理工具。


yum search
 – 搜索软件包
yum list installed
 – 列出已安装的软件包
yum install
 – 安装软件包
yum remove
 – 删除软件包
yum update
 – 更新软件包
yum check-update
 – 检查可用更新
yum info
 – 显示软件包信息

实用示例:



# 搜索 Nginx 相关的软件包
$ yum search nginx
 
# 安装 Nginx
$ sudo yum install nginx
 
# 更新所有已安装的软件包
$ sudo yum update
 
# 查看 Nginx 的详细信息
$ yum info nginx
 
# 检查是否有可用的更新
$ yum check-update

3.2 使用 RPM (Red Hat Package Manager)

RPM是底层的软件包格式和管理工具,可以直接操作.rpm文件。


rpm -ivh
 – 安装软件包
rpm -e
 – 移除软件包
rpm -qa
 – 查询所有已安装的软件包

实用示例:



# 安装一个本地的 .rpm 文件
$ sudo rpm -ivh package_name.rpm
 
# 查询系统中是否安装了 MySQL 相关的软件包
$ rpm -qa | grep mysql
 
# 移除名为 'package_name' 的软件包
$ sudo rpm -e package_name

四、服务管理与配置

Linux系统上的服务(如Web服务器、数据库)通常以守护进程(daemon)形式运行。使用 
systemctl
 是管理这些服务的标准方式。

服务管理命令:



# 启动防火墙服务
$ sudo systemctl start firewalld
 
# 停止防火墙服务
$ sudo systemctl stop firewalld
 
# 重启防火墙服务
$ sudo systemctl restart firewalld
 
# 查看防火墙服务状态
$ sudo systemctl status firewalld
 
# 设置防火墙服务开机自启
$ sudo systemctl enable firewalld
 
# 禁用防火墙服务开机自启
$ sudo systemctl disable firewalld

五、计划任务

让系统在特定时间自动执行命令或脚本,是自动化运维的重要部分。

5.1 一次性任务 – at

适用于只执行一次的计划任务。


at
 – 将任务排队,在指定时间执行
atq
 – 查看待执行的任务队列
atrm
 – 从队列中删除任务

实用示例:



# 安排在3天后的下午5点执行 'rm -f /root/*.html' 命令
$ at 5pm+3days
at> rm -f /root/*.html
at> <EOT>
job 9 at Wed Jun 5 17:00:00 2019
 
# 查看当前待执行的任务队列
$ atq
9   Wed Jun  5 17:00:00 2019 a root
 
# 删除任务ID为9的任务
$ atrm 9

5.2 周期性任务 – crontab

适用于重复执行的计划任务,如每日备份、定时清理日志等。



# 编辑当前用户的crontab文件
$ crontab -e
 
# Cron表达式格式:分钟 小时 日 月 星期 命令
# 例如:每分钟向 /root/hello.txt 追加 "hello, world!"
* * * * * echo "hello, world!" >> /root/hello.txt

# 例如:每天23点59分删除 /root 目录下所有 .log 文件
59 23 * * * rm -f /root/*.log

Cron表达式各字段含义:

字段 含义 取值范围
分钟 (Minute) 分钟 0-59
小时 (Hour) 小时 0-23
日 (Day of Month) 每月的第几天 1-31
月 (Month) 月份 1-12 (或 Jan-Dec)
星期 (Day of Week) 每周的第几天 0-7 (0和7都代表周日,或 Sun-Sat)
💡 提示

如果不确定Cron表达式如何书写,可以使用搜索引擎查找“Cron表达式在线生成器”来辅助生成。系统级的定时任务配置文件通常位于 
/etc/crontab
 或 
/etc/cron.d/
 目录下。

六、文本处理工具

Linux提供了强大的文本处理工具,如 
sed
 和 
awk
,可以在不打开文件的情况下进行编辑和分析。

6.1 sed – 流编辑器

用于对文本进行过滤、替换、插入、删除等操作。

实用示例:



# 假设有一个文件 fruit.txt,内容如下:
# 1 banana
# 2 grape
# 3 apple
# 4 watermelon
# 5 orange
 
# 在第2行 (grape) 后面添加一行 'pitaya'
$ sed '2a pitaya' fruit.txt
# 输出:
# 1 banana
# 2 grape
# pitaya
# 3 apple
# 4 watermelon
# 5 orange
 
# 将文件中所有 'a' 替换为 '@' (注意,这不会修改原文件,而是输出到终端)
$ sed 's/a/@/g' fruit.txt
 
# 如果想直接修改原文件,可以使用 -i 选项
$ sed -i 's/a/@/g' fruit.txt

6.2 awk – 模式扫描和处理语言

强大的文本分析和报告生成工具。

实用示例:



# 假设有一个文件 fruit2.txt,内容如下 (列:编号 水果 价格):
# 1 banana 120
# 2 grape 500
# 3 apple 1230
# 4 watermelon 80
# 5 orange 400
 
# 显示第3行
$ awk 'NR==3' fruit2.txt
# 输出: 3 apple 1230
 
# 显示第2列 (水果名)
$ awk '{print $2}' fruit2.txt
# 输出: banana grape apple watermelon orange
 
# 显示价格大于等于500的行
$ awk '$3 >= 500' fruit2.txt
# 输出: 2 grape 500
#      3 apple 1230

结语

Linux是一个强大而灵活的操作系统,其命令行工具提供了无与伦比的控制力和自动化能力。本文仅介绍了冰山一角,持续学习和实践是掌握Linux的关键。希望这些基础概念和实用示例能帮助你在Linux的世界中更加得心应手。

                                 © 2025 大河大河o. 保留所有权利.

© 版权声明

相关文章

暂无评论

none
暂无评论...