Linux入门教程 - 从零开始学习Linux操作系统完整指南
大约 22 分钟
Linux入门教程 - 从零开始学习Linux操作系统
目录
- Linux简介
- Linux环境搭建
- Linux基础命令
- 文件系统与目录结构
- 文件操作命令
- 用户和权限管理
- 进程管理
- 网络配置与管理
- 软件包管理
- Shell脚本编程
- 文本处理工具
- 系统监控与日志
- 实用技巧与最佳实践
- 常见问题与解决方案
- 总结与进阶
1. Linux简介
Linux是一个开源的、类Unix的操作系统内核,由Linus Torvalds在1991年首次发布。Linux操作系统通常指的是基于Linux内核的完整操作系统,包括GNU工具和应用程序。
核心特点:
- ✅ 开源免费:源代码公开,可自由使用和修改
- ✅ 稳定可靠:系统稳定性高,适合服务器环境
- ✅ 安全性强:权限管理严格,安全性好
- ✅ 多用户多任务:支持多用户同时使用
- ✅ 跨平台:支持多种硬件架构
- ✅ 强大的命令行:命令行功能强大,效率高
主流发行版:
- Ubuntu:适合初学者,用户友好
- CentOS/RHEL:企业级,稳定性高
- Debian:稳定可靠,软件包丰富
- Fedora:新技术试验田
- Arch Linux:轻量级,高度可定制
- openSUSE:企业级,易用性好
| 特性 | Linux | Windows | macOS |
|---|---|---|---|
| 开源 | 是 | 否 | 否 |
| 成本 | 免费 | 付费 | 付费 |
| 命令行 | 强大 | 一般 | 强大 |
| 软件生态 | 丰富 | 最丰富 | 丰富 |
| 服务器应用 | 主流 | 较少 | 较少 |
- 服务器:Web服务器、数据库服务器
- 嵌入式系统:路由器、智能设备
- 超级计算机:高性能计算
- 云计算:Docker、Kubernetes
- 开发环境:程序员常用开发环境
2. Linux环境搭建
方式一:虚拟机安装(推荐初学者)
使用VirtualBox:
- 下载VirtualBox:https://www.virtualbox.org/
- 下载Ubuntu ISO:https://ubuntu.com/download
- 创建虚拟机
- 安装Ubuntu系统
使用VMware:
- 下载VMware Workstation
- 创建新虚拟机
- 选择Ubuntu ISO文件
- 完成安装
方式二:双系统安装
- 准备Ubuntu安装U盘
- 调整磁盘分区
- 从U盘启动
- 安装Ubuntu系统
方式三:云服务器
推荐云服务商:
- 阿里云
- 腾讯云
- AWS
- 华为云
Windows 10/11用户可以使用WSL:
# 在PowerShell中执行
wsl --install
# 安装Ubuntu
wsl --install -d Ubuntu# 查看系统信息
uname -a
# 查看Linux发行版
cat /etc/os-release
# 更新系统(Ubuntu/Debian)
sudo apt update
sudo apt upgrade
# 更新系统(CentOS/RHEL)
sudo yum update使用SSH连接:
# 基本连接
ssh username@hostname
# 指定端口
ssh -p 22 username@hostname
# 使用密钥认证
ssh -i ~/.ssh/id_rsa username@hostnameWindows用户可以使用:
- PuTTY
- MobaXterm
- Windows Terminal + WSL
3. Linux基础命令
命令 [选项] [参数]示例:
ls -l /home
# ls: 命令
# -l: 选项
# /home: 参数pwd - 显示当前目录
pwd
# 输出: /home/usernamels - 列出目录内容
# 列出当前目录
ls
# 详细列表
ls -l
# 显示隐藏文件
ls -a
# 人类可读格式
ls -lh
# 递归显示
ls -R
# 按时间排序
ls -lt
# 组合使用
ls -lahcd - 切换目录
# 进入指定目录
cd /home/username
# 返回上一级目录
cd ..
# 返回家目录
cd ~
# 或
cd
# 返回上次目录
cd -
# 绝对路径和相对路径
cd /usr/bin # 绝对路径
cd ../bin # 相对路径mkdir - 创建目录
# 创建单个目录
mkdir test
# 创建多级目录
mkdir -p dir1/dir2/dir3
# 创建多个目录
mkdir dir1 dir2 dir3rmdir - 删除空目录
# 删除空目录
rmdir test
# 删除多个空目录
rmdir dir1 dir2rm - 删除文件或目录
# 删除文件
rm file.txt
# 删除目录(递归)
rm -r directory
# 强制删除(不提示)
rm -rf directory
# 交互式删除
rm -i file.txtcp - 复制文件或目录
# 复制文件
cp source.txt dest.txt
# 复制目录
cp -r source_dir dest_dir
# 保留文件属性
cp -p source.txt dest.txt
# 显示复制进度
cp -v source.txt dest.txtmv - 移动或重命名
# 移动文件
mv source.txt /tmp/
# 重命名文件
mv oldname.txt newname.txt
# 移动目录
mv source_dir /tmp/cat - 显示文件内容
# 显示文件内容
cat file.txt
# 显示行号
cat -n file.txt
# 显示多个文件
cat file1.txt file2.txtless/more - 分页查看
# 使用less查看(推荐)
less file.txt
# 空格:下一页
# b:上一页
# q:退出
# /:搜索
# 使用more查看
more file.txthead - 显示文件开头
# 显示前10行(默认)
head file.txt
# 显示前20行
head -n 20 file.txttail - 显示文件末尾
# 显示后10行(默认)
tail file.txt
# 显示后20行
tail -n 20 file.txt
# 实时监控文件(常用)
tail -f log.txttouch - 创建文件或更新时间戳
# 创建空文件
touch newfile.txt
# 更新文件时间戳
touch existing_file.txtwhich - 查找命令位置
# 查找命令路径
which ls
# 输出: /usr/bin/ls
which python
# 输出: /usr/bin/pythonwhereis - 查找命令相关文件
# 查找命令、源码、手册页
whereis ls
# 输出: ls: /usr/bin/ls /usr/share/man/man1/ls.1.gzfind - 查找文件
# 按名称查找
find /home -name "*.txt"
# 按类型查找
find /home -type f
# 按大小查找
find /home -size +100M
# 按时间查找
find /home -mtime -7 # 7天内修改的
# 组合条件
find /home -name "*.log" -size +10Mgrep - 文本搜索
# 在文件中搜索
grep "keyword" file.txt
# 递归搜索
grep -r "keyword" /home
# 忽略大小写
grep -i "keyword" file.txt
# 显示行号
grep -n "keyword" file.txt
# 反向匹配
grep -v "keyword" file.txt
# 正则表达式
grep "^[0-9]" file.txtwc - 统计
# 统计行数、单词数、字符数
wc file.txt
# 输出: 100 500 3000 file.txt
# 只统计行数
wc -l file.txt
# 只统计单词数
wc -w file.txt
# 只统计字符数
wc -c file.txthistory - 命令历史
# 显示命令历史
history
# 显示最近10条
history 10
# 执行历史命令
!100 # 执行第100条命令
!! # 执行上一条命令
!ls # 执行最近以ls开头的命令clear - 清屏
# 清空终端屏幕
clear
# 或使用快捷键 Ctrl+L4. 文件系统与目录结构
4.1 Linux目录结构
/
├── bin # 基本命令二进制文件
├── boot # 启动文件
├── dev # 设备文件
├── etc # 系统配置文件
├── home # 用户主目录
├── lib # 共享库
├── media # 可移动媒体挂载点
├── mnt # 临时挂载点
├── opt # 可选软件包
├── proc # 进程信息
├── root # root用户主目录
├── run # 运行时数据
├── sbin # 系统管理命令
├── srv # 服务数据
├── sys # 系统信息
├── tmp # 临时文件
├── usr # 用户程序
└── var # 可变数据4.2 重要目录说明
/etc - 配置文件目录
# 系统配置文件
/etc/passwd # 用户账户信息
/etc/group # 用户组信息
/etc/hosts # 主机名解析
/etc/fstab # 文件系统挂载表
/etc/ssh/ # SSH配置/home - 用户主目录
# 每个用户都有自己的主目录
/home/username//var - 可变数据
/var/log/ # 日志文件
/var/www/ # Web服务器文件
/var/lib/ # 应用程序数据
/var/tmp/ # 临时文件/usr - 用户程序
/usr/bin/ # 用户命令
/usr/lib/ # 库文件
/usr/local/ # 本地安装的软件
/usr/share/ # 共享数据/tmp - 临时文件
# 系统重启后可能被清除
/tmp/4.3 文件类型
# 查看文件类型
file filename
# 文件类型标识
- # 普通文件
d # 目录
l # 符号链接
c # 字符设备
b # 块设备
p # 命名管道
s # 套接字4.4 文件权限
# 查看文件权限
ls -l
# 权限格式:-rwxr-xr-x
# 第1位:文件类型
# 2-4位:所有者权限
# 5-7位:组权限
# 8-10位:其他用户权限
# 权限值
r = 4 (读)
w = 2 (写)
x = 1 (执行)5. 文件操作命令
chmod - 修改权限
# 数字方式
chmod 755 file.txt
# 7 = 4+2+1 (rwx)
# 5 = 4+1 (r-x)
# 5 = 4+1 (r-x)
# 符号方式
chmod u+x file.txt # 给所有者添加执行权限
chmod g-w file.txt # 移除组写权限
chmod o+r file.txt # 给其他用户添加读权限
chmod a+x file.txt # 给所有人添加执行权限
# 递归修改
chmod -R 755 directory/chown - 修改所有者
# 修改所有者
chown user file.txt
# 修改所有者和组
chown user:group file.txt
# 递归修改
chown -R user:group directory/chgrp - 修改组
# 修改组
chgrp group file.txt
# 递归修改
chgrp -R group directory/tar - 归档工具
# 创建tar归档
tar -cf archive.tar file1 file2
# 创建gzip压缩的tar
tar -czf archive.tar.gz directory/
# 创建bzip2压缩的tar
tar -cjf archive.tar.bz2 directory/
# 解压tar
tar -xf archive.tar
# 解压tar.gz
tar -xzf archive.tar.gz
# 解压tar.bz2
tar -xjf archive.tar.bz2
# 查看归档内容
tar -tzf archive.tar.gzzip/unzip
# 创建zip压缩
zip -r archive.zip directory/
# 解压zip
unzip archive.zip
# 查看zip内容
unzip -l archive.zipgzip/gunzip
# 压缩文件
gzip file.txt
# 生成 file.txt.gz
# 解压文件
gunzip file.txt.gz硬链接
# 创建硬链接
ln source.txt hardlink.txt
# 硬链接特点:
# - 与原文件共享inode
# - 删除原文件不影响硬链接
# - 不能跨文件系统软链接(符号链接)
# 创建软链接
ln -s source.txt symlink.txt
# 软链接特点:
# - 独立的inode
# - 指向原文件路径
# - 可以跨文件系统
# - 原文件删除后失效locate - 快速查找
# 查找文件(需要先更新数据库)
sudo updatedb
locate filename
# 忽略大小写
locate -i filenamewhich/whereis
# 查找命令位置
which python
# 查找命令相关文件
whereis python6. 用户和权限管理
查看用户信息
# 查看当前用户
whoami
# 查看所有用户
cat /etc/passwd
# 查看当前登录用户
who
w创建用户
# 创建新用户
sudo useradd -m username
# 创建用户并指定shell
sudo useradd -m -s /bin/bash username
# 创建用户并指定主目录
sudo useradd -m -d /home/username username删除用户
# 删除用户(保留主目录)
sudo userdel username
# 删除用户及主目录
sudo userdel -r username修改用户
# 修改用户信息
sudo usermod -s /bin/zsh username
sudo usermod -d /new/home username6.2 密码管理
# 修改自己的密码
passwd
# 修改其他用户密码(需要root权限)
sudo passwd username查看组信息
# 查看所有组
cat /etc/group
# 查看用户所属组
groups username
id username创建组
# 创建组
sudo groupadd groupname删除组
# 删除组
sudo groupdel groupname修改用户组
# 将用户添加到组
sudo usermod -aG groupname username
# 修改用户主组
sudo usermod -g groupname username# 编辑sudoers文件
sudo visudo
# 给用户sudo权限
# 在文件中添加:
username ALL=(ALL:ALL) ALL
# 免密码sudo
username ALL=(ALL:ALL) NOPASSWD: ALL# 权限示例:-rwxr-xr-x
# -: 文件类型
# rwx: 所有者权限(读、写、执行)
# r-x: 组权限(读、执行)
# r-x: 其他用户权限(读、执行)
# 目录权限
# r: 可以列出目录内容
# w: 可以在目录中创建/删除文件
# x: 可以进入目录7. 进程管理
ps - 进程快照
# 显示当前终端进程
ps
# 显示所有进程
ps aux
# 显示进程树
ps auxf
# 按CPU使用率排序
ps aux --sort=-%cpu
# 按内存使用率排序
ps aux --sort=-%memtop - 实时进程监控
# 实时显示进程信息
top
# 快捷键:
# P: 按CPU排序
# M: 按内存排序
# k: 杀死进程
# q: 退出htop - 增强版top
# 安装htop
sudo apt install htop # Ubuntu/Debian
sudo yum install htop # CentOS/RHEL
# 使用htop
htop启动进程
# 前台运行
command
# 后台运行
command &
# 后台运行并输出到文件
command > output.log 2>&1 &查看后台任务
# 查看后台任务
jobs
# 显示任务编号和PID
jobs -l进程控制
# 暂停进程(Ctrl+Z)
# 进程会进入后台暂停状态
# 恢复进程
fg # 前台恢复
bg # 后台恢复
fg %1 # 恢复任务1杀死进程
# 使用kill命令
kill PID
kill -9 PID # 强制杀死
# 使用killall
killall process_name
# 使用pkill
pkill process_name
# 使用xkill(图形界面)
xkill# 查看进程优先级
ps -eo pid,ni,comm
# 修改进程优先级
nice -n 10 command # 启动时设置
renice 10 PID # 修改运行中进程systemd(现代Linux发行版)
# 查看服务状态
systemctl status service_name
# 启动服务
sudo systemctl start service_name
# 停止服务
sudo systemctl stop service_name
# 重启服务
sudo systemctl restart service_name
# 启用开机自启
sudo systemctl enable service_name
# 禁用开机自启
sudo systemctl disable service_name
# 查看所有服务
systemctl list-units --type=serviceservice命令(旧系统)
# 启动服务
sudo service service_name start
# 停止服务
sudo service service_name stop
# 重启服务
sudo service service_name restart
# 查看状态
sudo service service_name status8. 网络配置与管理
查看网络配置
# 查看IP地址
ip addr
# 或
ifconfig
# 查看路由表
ip route
# 或
route -n
# 查看网络接口
ip link show配置网络
# 临时配置IP(重启后失效)
sudo ip addr add 192.168.1.100/24 dev eth0
# 永久配置(编辑配置文件)
# Ubuntu/Debian: /etc/netplan/*.yaml
# CentOS/RHEL: /etc/sysconfig/network-scripts/ifcfg-eth0ping - 测试连通性
# 测试网络连通性
ping google.com
# 指定次数
ping -c 4 google.com
# 指定间隔
ping -i 2 google.comtraceroute - 路由追踪
# 追踪路由
traceroute google.com
# 或使用
tracepath google.comnetstat - 网络连接
# 查看所有连接
netstat -an
# 查看监听端口
netstat -tlnp
# 查看TCP连接
netstat -tnp
# 查看UDP连接
netstat -unpss - 现代netstat替代
# 查看监听端口
ss -tlnp
# 查看所有连接
ss -an
# 查看TCP连接
ss -tnpufw(Ubuntu)
# 查看状态
sudo ufw status
# 启用防火墙
sudo ufw enable
# 禁用防火墙
sudo ufw disable
# 允许端口
sudo ufw allow 22
sudo ufw allow 80/tcp
# 拒绝端口
sudo ufw deny 3306
# 删除规则
sudo ufw delete allow 22firewalld(CentOS/RHEL)
# 查看状态
sudo firewall-cmd --state
# 查看所有规则
sudo firewall-cmd --list-all
# 开放端口
sudo firewall-cmd --permanent --add-port=80/tcp
# 关闭端口
sudo firewall-cmd --permanent --remove-port=80/tcp
# 重载配置
sudo firewall-cmd --reload# 查看DNS配置
cat /etc/resolv.conf
# 测试DNS解析
nslookup google.com
dig google.com
host google.com9. 软件包管理
更新软件包列表
# 更新软件包列表
sudo apt update
# 升级所有软件包
sudo apt upgrade
# 升级系统
sudo apt dist-upgrade安装软件
# 安装软件包
sudo apt install package_name
# 安装多个软件包
sudo apt install package1 package2
# 安装指定版本
sudo apt install package_name=version卸载软件
# 卸载软件包
sudo apt remove package_name
# 卸载软件包及配置文件
sudo apt purge package_name
# 自动清理
sudo apt autoremove
sudo apt autoclean搜索软件
# 搜索软件包
apt search keyword
# 查看软件包信息
apt show package_name
# 列出已安装软件
apt list --installed更新软件包
# 更新所有软件包
sudo yum update
# 更新指定软件包
sudo yum update package_name安装软件
# 安装软件包
sudo yum install package_name
# 安装多个软件包
sudo yum install package1 package2卸载软件
# 卸载软件包
sudo yum remove package_name
# 清理缓存
sudo yum clean all搜索软件
# 搜索软件包
yum search keyword
# 查看软件包信息
yum info package_name
# 列出已安装软件
yum list installed# 1. 下载源码
wget http://example.com/software.tar.gz
# 2. 解压
tar -xzf software.tar.gz
cd software/
# 3. 配置
./configure --prefix=/usr/local
# 4. 编译
make
# 5. 安装
sudo make install10. Shell脚本编程
创建脚本
#!/bin/bash
# 这是注释
echo "Hello World"执行脚本
# 方式1:使用bash执行
bash script.sh
# 方式2:添加执行权限后直接执行
chmod +x script.sh
./script.sh定义变量
#!/bin/bash
# 定义变量(等号两边不能有空格)
name="张三"
age=25
# 使用变量
echo $name
echo ${name}
# 只读变量
readonly PI=3.14
# 删除变量
unset name特殊变量
#!/bin/bash
echo $0 # 脚本名称
echo $1 # 第一个参数
echo $2 # 第二个参数
echo $# # 参数个数
echo $@ # 所有参数
echo $* # 所有参数
echo $? # 上一个命令的退出状态
echo $$ # 当前进程ID#!/bin/bash
str="Hello World"
# 字符串长度
echo ${#str}
# 字符串截取
echo ${str:0:5} # Hello
echo ${str:6} # World
# 字符串替换
echo ${str/World/Java} # Hello Java
echo ${str//l/L} # HeLLo WorLd
# 字符串删除
echo ${str#Hello} # World
echo ${str%World} # Hello#!/bin/bash
# 定义数组
arr=("apple" "banana" "orange")
# 访问数组元素
echo ${arr[0]} # apple
echo ${arr[@]} # 所有元素
echo ${#arr[@]} # 数组长度
# 遍历数组
for fruit in "${arr[@]}"; do
echo $fruit
doneif语句
#!/bin/bash
if [ condition ]; then
# 代码
elif [ condition ]; then
# 代码
else
# 代码
fi条件测试
# 文件测试
[ -f file ] # 文件存在
[ -d dir ] # 目录存在
[ -r file ] # 文件可读
[ -w file ] # 文件可写
[ -x file ] # 文件可执行
# 字符串测试
[ -z str ] # 字符串为空
[ -n str ] # 字符串非空
[ str1 = str2 ] # 字符串相等
[ str1 != str2 ] # 字符串不等
# 数值测试
[ n1 -eq n2 ] # 相等
[ n1 -ne n2 ] # 不等
[ n1 -gt n2 ] # 大于
[ n1 -lt n2 ] # 小于
[ n1 -ge n2 ] # 大于等于
[ n1 -le n2 ] # 小于等于
# 逻辑测试
[ condition1 ] && [ condition2 ] # 与
[ condition1 ] || [ condition2 ] # 或
[ ! condition ] # 非case语句
#!/bin/bash
case $1 in
start)
echo "启动服务"
;;
stop)
echo "停止服务"
;;
restart)
echo "重启服务"
;;
*)
echo "未知操作"
;;
esac10.6 循环
for循环
#!/bin/bash
# 方式1:列表循环
for i in 1 2 3 4 5; do
echo $i
done
# 方式2:C风格
for ((i=1; i<=5; i++)); do
echo $i
done
# 方式3:遍历文件
for file in *.txt; do
echo $file
donewhile循环
#!/bin/bash
count=1
while [ $count -le 5 ]; do
echo $count
count=$((count + 1))
doneuntil循环
#!/bin/bash
count=1
until [ $count -gt 5 ]; do
echo $count
count=$((count + 1))
done#!/bin/bash
# 定义函数
function greet() {
echo "Hello, $1"
}
# 调用函数
greet "World"
# 带返回值的函数
function add() {
return $(($1 + $2))
}
add 10 20
echo $? # 输出30备份脚本
#!/bin/bash
# 备份脚本
BACKUP_DIR="/backup"
SOURCE_DIR="/home/user"
DATE=$(date +%Y%m%d_%H%M%S)
tar -czf $BACKUP_DIR/backup_$DATE.tar.gz $SOURCE_DIR
echo "备份完成: backup_$DATE.tar.gz"系统监控脚本
#!/bin/bash
# 系统监控脚本
CPU_USAGE=$(top -bn1 | grep "Cpu(s)" | awk '{print $2}')
MEM_USAGE=$(free | grep Mem | awk '{printf("%.2f", $3/$2 * 100)}')
echo "CPU使用率: $CPU_USAGE%"
echo "内存使用率: $MEM_USAGE%"11. 文本处理工具
# 替换文本
sed 's/old/new/g' file.txt
# 删除行
sed '2d' file.txt # 删除第2行
sed '2,5d' file.txt # 删除2-5行
sed '/pattern/d' file.txt # 删除匹配行
# 插入文本
sed '2i\新行' file.txt # 在第2行前插入
sed '2a\新行' file.txt # 在第2行后插入
# 修改文件(直接编辑)
sed -i 's/old/new/g' file.txt# 打印指定列
awk '{print $1, $3}' file.txt
# 按分隔符处理
awk -F: '{print $1}' /etc/passwd
# 条件过滤
awk '$3 > 1000 {print $1}' /etc/passwd
# 计算
awk '{sum+=$1} END {print sum}' file.txt
# 格式化输出
awk '{printf "%-10s %d\n", $1, $2}' file.txt# 按字符切割
cut -c1-5 file.txt
# 按字段切割
cut -d: -f1 /etc/passwd
# 指定多个字段
cut -d: -f1,3 /etc/passwd# 排序
sort file.txt
# 数字排序
sort -n file.txt
# 反向排序
sort -r file.txt
# 去重
sort -u file.txt
# 组合使用
sort -n -r file.txt# 去除相邻重复行
uniq file.txt
# 统计重复次数
uniq -c file.txt
# 只显示重复行
uniq -d file.txt
# 只显示不重复行
uniq -u file.txt# 比较两个文件
diff file1.txt file2.txt
# 并排显示
diff -y file1.txt file2.txt
# 统一格式
diff -u file1.txt file2.txt12. 系统监控与日志
查看系统信息
# 查看系统信息
uname -a
# 查看内核版本
uname -r
# 查看系统架构
uname -m查看CPU信息
# 查看CPU信息
lscpu
# 查看CPU使用率
top
htop查看内存信息
# 查看内存使用
free -h
# 详细内存信息
cat /proc/meminfo查看磁盘信息
# 查看磁盘使用
df -h
# 查看目录大小
du -h /path
# 查看目录大小(排序)
du -h /path | sort -h12.2 日志管理
系统日志位置
# 系统日志
/var/log/syslog # Ubuntu系统日志
/var/log/messages # CentOS系统日志
# 应用日志
/var/log/apache2/ # Apache日志
/var/log/nginx/ # Nginx日志
/var/log/mysql/ # MySQL日志查看日志
# 查看日志
cat /var/log/syslog
# 实时查看日志
tail -f /var/log/syslog
# 查看最近日志
tail -n 100 /var/log/syslog
# 搜索日志
grep "error" /var/log/syslogjournalctl(systemd日志)
# 查看所有日志
sudo journalctl
# 查看最近日志
sudo journalctl -n 100
# 实时查看
sudo journalctl -f
# 按时间查看
sudo journalctl --since "2024-01-01"
sudo journalctl --until "2024-01-31"
# 按服务查看
sudo journalctl -u service_nameiostat - IO统计
# 安装
sudo apt install sysstat # Ubuntu
sudo yum install sysstat # CentOS
# 查看IO统计
iostat
iostat -x 1 # 每秒更新netstat/ss - 网络统计
# 查看网络连接
netstat -an
ss -an13. 实用技巧与最佳实践
命令别名
# 创建别名
alias ll='ls -lah'
alias ..='cd ..'
alias grep='grep --color=auto'
# 查看所有别名
alias
# 永久保存(添加到~/.bashrc)
echo "alias ll='ls -lah'" >> ~/.bashrc
source ~/.bashrc命令历史
# 搜索历史命令
Ctrl+R
# 执行上一条命令
!!
# 执行历史中第n条命令
!n
# 执行最近以xxx开头的命令
!xxx通配符
# * 匹配任意字符
ls *.txt
# ? 匹配单个字符
ls file?.txt
# [] 匹配字符集
ls file[0-9].txt
# {} 展开
mkdir {dir1,dir2,dir3}管道和重定向
# 管道
command1 | command2
# 输出重定向
command > file.txt # 覆盖
command >> file.txt # 追加
# 错误重定向
command 2> error.log
command 2>&1 # 错误输出到标准输出
# 输入重定向
command < file.txtCtrl+C # 终止当前命令
Ctrl+D # 退出终端
Ctrl+L # 清屏
Ctrl+A # 移动到行首
Ctrl+E # 移动到行尾
Ctrl+U # 删除到行首
Ctrl+K # 删除到行尾
Ctrl+W # 删除前一个单词
Ctrl+R # 搜索历史命令
Tab # 自动补全# 查看环境变量
env
printenv
# 查看特定变量
echo $PATH
echo $HOME
# 设置环境变量
export VAR=value
# 永久设置(添加到~/.bashrc)
echo 'export VAR=value' >> ~/.bashrc
source ~/.bashrc- 使用sudo而非root登录
- 定期更新系统
- 备份重要数据
- 使用强密码
- 配置防火墙
- 监控系统日志
- 使用版本控制管理配置文件
14. 常见问题与解决方案
问题:Permission denied
# 解决方案1:使用sudo
sudo command
# 解决方案2:修改文件权限
chmod +x file.sh
# 解决方案3:修改所有者
sudo chown user:user file# 查看磁盘使用
df -h
# 查找大文件
find / -size +100M
# 清理日志
sudo journalctl --vacuum-time=7d
# 清理包缓存
sudo apt clean # Ubuntu
sudo yum clean all # CentOS# 查看服务状态
sudo systemctl status service_name
# 查看日志
sudo journalctl -u service_name
# 检查配置文件
sudo service_name -t # 测试配置# 检查网络接口
ip addr
# 重启网络服务
sudo systemctl restart networking # Ubuntu
sudo systemctl restart network # CentOS
# 检查DNS
cat /etc/resolv.conf15. 总结与进阶
通过本教程,你已经掌握了:
- ✅ Linux基础命令
- ✅ 文件系统操作
- ✅ 用户和权限管理
- ✅ 进程管理
- ✅ 网络配置
- ✅ Shell脚本编程
- ✅ 系统监控
系统管理
- 服务器配置
- 性能优化
- 安全加固
网络管理
- 网络配置
- 防火墙配置
- VPN设置
Shell脚本进阶
- 高级脚本编写
- 自动化运维
容器技术
- Docker
- Kubernetes
云计算
- AWS
- 阿里云
- 腾讯云
- 官方文档:各发行版官方文档
- 在线教程:Linux Academy、Linux Foundation
- 书籍推荐:
- 《鸟哥的Linux私房菜》
- 《Linux命令行与shell脚本编程大全》
- 《UNIX环境高级编程》
- 搭建实验环境:使用虚拟机练习
- 完成实际项目:搭建Web服务器、数据库等
- 参与开源项目:贡献代码,学习实践
- 考取认证:RHCE、LPIC等
结语
Linux是一个功能强大、灵活的操作系统。通过本教程的学习,相信你已经掌握了Linux的基础知识和常用操作。
记住:
- 多实践:理论结合实践,多动手操作
- 多思考:理解命令和配置的原理
- 多学习:关注Linux社区,持续学习
- 多分享:帮助他人,共同进步
祝你学习愉快,Linux之旅顺利! 🚀
本教程由Java突击队学习社区编写,如有问题欢迎反馈。