大学生网络信息中心-运行部
首页
开发文档
项目介绍
加入我们
首页
开发文档
项目介绍
加入我们
  • linux 教程

Linux 教程

本教程由沈阳农业大学大学生网络信息中心运行部提供,适用于校园网站开发

第一章 CentOS 7 简介

1.1 CentOS 概述

CentOS(Community ENTerprise Operating System)是一个基于 Red Hat Enterprise Linux(RHEL)源代码构建的免费、开源的企业级 Linux 发行版。CentOS 7 是目前广泛使用的稳定版本,特别适合服务器环境。

1.2 为什么选择 CentOS 7

  • 稳定性:长期支持(LTS)版本,生命周期至2024年6月
  • 安全性:企业级安全更新和维护
  • 兼容性:与 RHEL 完全兼容
  • 社区支持:强大的社区和技术文档
  • 广泛应用:常用于 Web 服务器、数据库服务器等

第二章 CentOS 7 常用命令

2.1 文件系统基础

在开始学习具体命令之前,先了解 Linux 文件系统的基本结构:

/
├── bin     # 基本命令二进制文件
├── etc     # 系统配置文件
├── home    # 用户主目录
├── root    # root用户主目录
├── tmp     # 临时文件
├── usr     # 用户程序和数据
└── var     # 可变数据(日志、数据库等)

2.2 目录操作命令

cd - 切换目录

cd [目录路径]

功能:更改当前工作目录到指定的目录路径。

常用参数:

  • ~ 或 无参数:切换到当前用户的主目录
  • ..:切换到上一级目录
  • /:切换到根目录
  • -:切换到上一个工作目录

示例:

# 切换到用户主目录
cd ~
# 或
cd

# 切换到根目录
cd /

# 切换到上级目录
cd ..

# 切换到 /etc 目录
cd /etc

# 切换到上次所在的目录
cd -

pwd - 显示当前目录

pwd

功能:显示当前工作目录的完整路径。

示例:

$ pwd
/home/student

2.3 文件列表命令

ls - 列出目录内容

ls [选项] [目录名]

功能:列出目录中的文件和子目录。如果没有指定目录,则显示当前目录的内容。

常用选项:

  • -l:使用长格式显示详细信息(权限、所有者、大小、时间等)
  • -a:显示所有文件,包括隐藏文件(以.开头的文件)
  • -h:以人类可读的格式显示文件大小(KB、MB、GB)
  • -t:按修改时间排序,最新的在前
  • -r:反向排序
  • -R:递归显示子目录内容

示例:

# 列出当前目录内容(简单列表)
ls

# 列出详细信息(等价于 ll)
ls -l

# 列出所有文件(包括隐藏文件)
ls -a

# 组合使用多个选项
ls -lah

# 列出指定目录内容
ls /etc

# 递归列出所有子目录内容
ls -R /home

权限字段解释(ls -l 输出):

-rwxr-xr-x 1 user group 4096 Jan 15 10:30 filename
  • 第1位:文件类型(-普通文件,d目录,l链接)
  • 2-4位:所有者权限
  • 5-7位:所属组权限
  • 8-10位:其他用户权限

2.4 文件查看命令

cat - 查看文件内容

cat [选项] 文件...

功能:连接文件并打印到标准输出设备,常用于查看文件内容。

常用选项:

  • -n:显示行号
  • -b:显示行号(空行不编号)

示例:

# 查看文件内容
cat file.txt

# 查看文件内容并显示行号
cat -n file.txt

# 查看多个文件
cat file1.txt file2.txt

# 将内容重定向到新文件
cat file1.txt file2.txt > combined.txt

vi/vim - 文件编辑

vim 文件名

功能:Linux 中最强大的文本编辑器之一,可用于编辑各种文件。

三种工作模式:

  1. 一般模式(命令模式)

    • 进入方式:启动 vim 后默认模式,或按 Esc 键
    • 可执行复制、粘贴、删除、保存等操作
  2. 编辑模式(插入模式)

    • 进入方式:按 i、a、o 等键
    • 可编辑文本内容
  3. 底行模式(命令模式)

    • 进入方式:在一般模式下按 :(Shift+;)
    • 可执行保存、退出、搜索等操作

常用操作:

# 打开文件
vim file.txt

# 进入编辑模式(按i键)
i

# 退出编辑模式(按Esc键)
Esc

# 进入底行模式(按:键)
:

# 底行模式常用命令
:w      # 保存
:q      # 退出
:wq     # 保存并退出
:q!     # 不保存强制退出
:w 新文件名  # 另存为新文件

# 一般模式常用命令
dd      # 删除当前行
yy      # 复制当前行
p       # 粘贴
u       # 撤销
/搜索词  # 搜索(按n查找下一个,N查找上一个)

完整示例:

# 1. 打开文件
vim /etc/hosts

# 2. 按 i 进入编辑模式,修改内容

# 3. 按 Esc 退出编辑模式

# 4. 按 : 进入底行模式

# 5. 输入 wq 保存并退出
:wq

more/less - 分页查看文件

more 文件名
less 文件名

功能:分页显示文件内容,适合查看大文件。

more 常用操作:

  • 空格:向下翻一页
  • Enter:向下翻一行
  • q:退出
  • /字符串:搜索字符串

less 常用操作(功能更强大):

  • 空格:向下翻一页
  • b:向上翻一页
  • /字符串:向下搜索
  • ?字符串:向上搜索
  • q:退出

示例:

# 分页查看系统日志
less /var/log/messages

# 分页查看文件
more large_file.txt

2.5 权限管理命令

chmod - 修改文件权限

chmod [选项] 模式 文件

功能:更改文件或目录的访问权限。

权限表示方法:

1. 符号表示法:

u - 用户(所有者)
g - 用户组
o - 其他用户
a - 所有用户(u+g+o)

r - 读权限(值:4)
w - 写权限(值:2)
x - 执行权限(值:1)

2. 数字表示法:

  • 读(r)= 4
  • 写(w)= 2
  • 执行(x)= 1
  • 无权限 = 0

权限组合:rwx = 4+2+1 = 7

常用模式:

  • 755:rwxr-xr-x(所有者:读+写+执行,组:读+执行,其他:读+执行)
  • 644:rw-r--r--(所有者:读+写,组:读,其他:读)
  • 777:rwxrwxrwx(所有用户都有读+写+执行权限)

示例:

# 数字模式设置权限
chmod 755 script.sh    # 所有者可读写执行,组和其他可读执行
chmod 644 file.txt     # 所有者可读写,组和其他只读
chmod 600 secret.txt   # 仅所有者可读写

# 符号模式添加/移除权限
chmod u+x file.sh      # 给所有者添加执行权限
chmod g-w file.txt     # 移除组的写权限
chmod a+r public.txt   # 给所有用户添加读权限
chmod o-rx script.sh   # 移除其他用户的读和执行权限

# 递归修改目录权限
chmod -R 755 /path/to/dir  # 修改目录及其所有子目录和文件

# 组合权限
chmod u=rwx,g=rx,o= file.sh  # 所有者rwx,组rx,其他无权限

chown - 修改文件所有者

chown [选项] 用户[:组] 文件

功能:更改文件的所有者和所属组。

示例:

# 修改文件所有者
chown user1 file.txt

# 修改文件所有者和组
chown user1:group1 file.txt

# 递归修改目录所有者
chown -R user1:group1 /path/to/dir

# 只修改组
chown :group1 file.txt

2.6 文件操作命令

cp - 复制文件/目录

cp [选项] 源文件 目标文件
cp [选项] 源文件... 目标目录

常用选项:

  • -r 或 -R:递归复制目录
  • -i:交互模式,覆盖前提示
  • -f:强制复制,不提示
  • -p:保留文件属性(权限、时间等)
  • -v:显示详细信息

示例:

# 复制文件
cp file1.txt file2.txt
cp file.txt /tmp/

# 复制目录(需要-r选项)
cp -r dir1 dir2
cp -r /home/user/data /backup/

# 交互式复制(覆盖前询问)
cp -i file.txt /tmp/

# 保留文件属性复制
cp -p file.txt backup.txt

mv - 移动/重命名文件

mv [选项] 源文件 目标文件
mv [选项] 源文件... 目标目录

常用选项:

  • -i:交互模式,覆盖前提示
  • -f:强制移动,不提示
  • -v:显示详细信息

示例:

# 重命名文件
mv oldname.txt newname.txt

# 移动文件到目录
mv file.txt /tmp/

# 移动多个文件
mv file1.txt file2.txt /tmp/

# 交互式移动
mv -i file.txt /tmp/

rm - 删除文件/目录

rm [选项] 文件...

常用选项:

  • -r 或 -R:递归删除目录
  • -f:强制删除,不提示
  • -i:交互模式,删除前提示

⚠️ 警告:rm -rf 命令非常危险,删除后无法恢复!

示例:

# 删除文件
rm file.txt

# 交互式删除
rm -i file.txt

# 删除目录(需要-r选项)
rm -r directory/

# 强制删除目录(危险!)
rm -rf directory/

# 删除所有.txt文件
rm *.txt

mkdir - 创建目录

mkdir [选项] 目录名...

常用选项:

  • -p:递归创建父目录
  • -v:显示详细信息

示例:

# 创建单个目录
mkdir newdir

# 创建多个目录
mkdir dir1 dir2 dir3

# 递归创建目录(创建多级目录)
mkdir -p /path/to/new/dir

# 创建目录并设置权限
mkdir -m 755 project

2.7 系统信息命令

uname - 显示系统信息

uname [选项]

常用选项:

  • -a:显示所有信息
  • -s:内核名称
  • -r:内核版本
  • -m:机器硬件名称

示例:

# 显示所有系统信息
uname -a

# 显示内核版本
uname -r

# 显示内核名称
uname -s

df - 显示磁盘空间

df [选项] [文件或目录]

常用选项:

  • -h:人类可读格式(KB、MB、GB)
  • -T:显示文件系统类型

示例:

# 显示磁盘使用情况
df

# 人类可读格式
df -h

# 显示特定目录的磁盘使用情况
df -h /home

# 显示文件系统类型
df -T

free - 显示内存使用情况

free [选项]

常用选项:

  • -h:人类可读格式
  • -m:以MB为单位
  • -g:以GB为单位

示例:

# 显示内存使用情况
free

# 人类可读格式
free -h

2.8 进程管理命令

ps - 显示进程状态

ps [选项]

常用选项:

  • aux:显示所有用户的进程
  • -ef:显示完整格式的所有进程
  • -u 用户名:显示指定用户的进程

示例:

# 显示当前用户的所有进程
ps aux

# 显示完整格式的所有进程
ps -ef

# 查找特定进程
ps aux | grep nginx

# 显示特定用户的进程
ps -u root

kill - 终止进程

kill [选项] 进程ID

常用选项:

  • -9:强制终止
  • -15:正常终止(默认)

信号列表:

  • 1 (SIGHUP):重新加载配置
  • 9 (SIGKILL):强制终止
  • 15 (SIGTERM):正常终止

示例:

# 正常终止进程
kill 1234

# 强制终止进程
kill -9 1234

# 终止多个进程
kill 1234 5678 9012

2.9 网络命令

ping - 测试网络连接

ping [选项] 主机名或IP地址

常用选项:

  • -c 次数:发送指定次数的包
  • -i 秒数:发送间隔时间
  • -W 秒数:超时时间

示例:

# 测试网络连接
ping google.com

# 发送指定数量的包
ping -c 4 192.168.1.1

# 设置发送间隔
ping -i 0.5 192.168.1.1

netstat - 显示网络状态

netstat [选项]

常用选项:

  • -t:TCP连接
  • -u:UDP连接
  • -l:监听状态的连接
  • -p:显示进程信息
  • -n:显示数字地址

示例:

# 显示所有连接
netstat -a

# 显示TCP连接
netstat -t

# 显示监听端口
netstat -l

# 显示进程信息
netstat -tlnp

curl/wget - 下载文件

curl [选项] URL
wget [选项] URL

curl 示例:

# 下载文件
curl -O http://example.com/file.zip

# 保存为指定文件名
curl -o newfile.zip http://example.com/file.zip

# 显示HTTP头信息
curl -I http://example.com

wget 示例:

# 下载文件
wget http://example.com/file.zip

# 断点续传
wget -c http://example.com/largefile.zip

# 递归下载
wget -r http://example.com/

第三章 实用技巧

3.1 管道(|)和重定向

管道:将一个命令的输出作为另一个命令的输入

# 查找包含"error"的日志行
cat /var/log/messages | grep error

# 统计文件行数
cat file.txt | wc -l

# 排序并去重
cat file.txt | sort | uniq

重定向:

# 输出重定向(覆盖)
ls > filelist.txt

# 输出重定向(追加)
ls >> filelist.txt

# 错误输出重定向
command 2> error.log

# 输入重定向
sort < input.txt

3.2 通配符

  • *:匹配任意字符(0个或多个)
  • ?:匹配单个字符
  • [abc]:匹配a、b、c中任意一个字符
  • [0-9]:匹配0-9的数字
  • [!abc]:匹配除a、b、c外的任意字符

示例:

# 列出所有.txt文件
ls *.txt

# 列出以a开头的文件
ls a*

# 列出以数字开头的文件
ls [0-9]*

# 列出三个字符的文件
ls ???.txt

3.3 命令历史

# 查看命令历史
history

# 执行历史命令
!!          # 执行上一条命令
!n          # 执行第n条历史命令
!string     # 执行最近以string开头的命令

# 搜索历史命令
Ctrl + R    # 反向搜索历史命令

3.4 快捷键

  • Ctrl + C:终止当前命令
  • Ctrl + Z:暂停当前命令(可用fg恢复)
  • Ctrl + D:退出当前shell(EOF)
  • Ctrl + L:清屏
  • Ctrl + A:移动到行首
  • Ctrl + E:移动到行尾
  • Ctrl + U:删除到行首
  • Ctrl + K:删除到行尾
  • Tab:命令/文件名补全

第四章 CentOS 7 系统管理

4.1 用户和组管理

useradd - 添加用户

# 添加用户
useradd username

# 添加用户并指定主目录
useradd -m username

# 添加用户并指定UID
useradd -u 1001 username

# 添加用户并指定登录shell
useradd -s /bin/bash username

passwd - 修改密码

# 修改当前用户密码
passwd

# 修改指定用户密码(需要root权限)
passwd username

groupadd - 添加组

# 添加组
groupadd groupname

# 添加组并指定GID
groupadd -g 1001 groupname

4.2 服务管理(systemctl)

CentOS 7 使用 systemd 管理系统服务:

# 启动服务
systemctl start service_name

# 停止服务
systemctl stop service_name

# 重启服务
systemctl restart service_name

# 重新加载配置
systemctl reload service_name

# 查看服务状态
systemctl status service_name

# 启用开机自启
systemctl enable service_name

# 禁用开机自启
systemctl disable service_name

# 查看所有服务
systemctl list-units --type=service

# 查看失败的服务
systemctl --failed

常用服务:

  • firewalld:防火墙
  • sshd:SSH服务
  • nginx:Web服务器
  • httpd:Apache服务器
  • mysqld:MySQL数据库
  • postgresql:PostgreSQL数据库

4.3 软件包管理(yum)

# 安装软件包
yum install package_name

# 搜索软件包
yum search keyword

# 查看软件包信息
yum info package_name

# 更新软件包
yum update package_name

# 更新所有软件包
yum update

# 卸载软件包
yum remove package_name

# 列出已安装软件包
yum list installed

# 清除缓存
yum clean all

# 查看可用更新
yum check-update

4.4 防火墙管理(firewalld)

# 查看防火墙状态
firewall-cmd --state

# 查看所有规则
firewall-cmd --list-all

# 开放端口
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --zone=public --add-port=443/tcp --permanent

# 移除端口
firewall-cmd --zone=public --remove-port=80/tcp --permanent

# 重新加载防火墙规则
firewall-cmd --reload

# 添加服务(如http、https、ssh)
firewall-cmd --zone=public --add-service=http --permanent
firewall-cmd --zone=public --add-service=https --permanent
firewall-cmd --zone=public --add-service=ssh --permanent

# 查看开放的服务
firewall-cmd --zone=public --list-services

第五章 参考文档

5.1 在线教程

  • Linux 命令大全(菜鸟教程)
  • CentOS 7 常用命令(CSDN)
  • Linux Vim 编辑器(菜鸟教程)
  • CentOS 7 详细安装教程(CSDN)

5.2 官方文档

  • CentOS 官方文档
  • Red Hat Enterprise Linux 文档
  • systemd 官方文档

5.3 实用工具

  • Linux 命令速查表
  • Vim 图形化教程
  • Linux 命令练习环境
Prev
Layui 教程
Next
企业微信开发