1 linux 目录介绍
Linux 文件系统采用层次化的目录结构,所有目录都从根目录 / 开始
1.1 核心目录
/ (根目录)
整个文件系统的起点、包含所有其他目录和文件
/bin (基本命令二进制文件)
存放系统最基本的shell命令:如 ls, cp, mv, rm, cat 等,所有用户都可使用。
/sbin (系统二进制文件)
存放系统管理命令,如 fdisk, ifconfig, reboot 等,通常需要 root 权限才能执行
/boot (引导加载程序文件)
包含 Linux 内核、初始 RAM 磁盘映像和引导加载程序配置文件。如 vmlinuz, initrd.img, grub/
/dev (设备文件)
包含所有设备文件,如 /dev/sda (硬盘), /dev/tty (终端), /dev/null (空设备)
/etc (系统配置文件)
包含系统和应用程序的配置文件,如 /etc/passwd (用户账户), /etc/fstab (文件系统表)
/home (用户主目录)
普通用户的个人目录,每个用户通常有自己的子目录,如 /home/username
/lib (系统库文件)
存放系统最基本的共享库和内核模块,如 /lib/modules/ (内核模块)
1.2 重要系统目录
/media (可移动媒体挂载点)
自动挂载的可移动设备,如 U 盘、光盘
/mnt (临时挂载点)
用于临时手动挂载文件系统
/opt (可选应用程序)
第三方应用程序的安装位置
/proc (虚拟文件系统)
包含系统进程和内核信息的虚拟文件系统,如 /proc/cpuinfo (CPU 信息), /proc/meminfo (内存信息)
/root (root 用户主目录)
超级用户 root 的主目录
/run (运行时数据)
存储系统运行时的临时数据,如 /run/lock (锁文件)
/tmp (临时文件)
存放临时文件,系统重启后通常会被清空
1.3 系统资源目录
/usr (用户程序)
包含用户应用程序和文件
1.3.1 重要子目录:
-  
/usr/bin: 用户命令
 -  
/usr/sbin: 系统管理命令
 -  
/usr/lib: 库文件
 -  
/usr/local: 本地安装的软件
 -  
/usr/share: 共享数据
 
/var (可变数据)
存放经常变化的文件
重要子目录:
-  
/var/log: 系统日志
 -  
/var/cache: 应用程序缓存
 -  
/var/spool: 队列数据
 -  
/var/www: Web 服务器目录 (常见)
 
1.4 特殊目录
/sys (虚拟文件系统)
提供内核数据结构接口, 用于配置设备和内核参数
/srv (服务数据)
包含特定服务提供的数据, 如网站数据、FTP 数据等
/lost+found (恢复文件)
文件系统修复后找到的丢失文件
2 常见shell 指令
Shell 是 Linux/Unix 系统的命令行界面,是与操作系统交互的主要方式。以下是常用的 Shell 指令分类介绍:
2.1 文件和目录操作
2.1.1 ls - 列出目录内容
ls          # 列出当前目录内容
ls -l       # 详细列表(长格式)
ls -a       # 显示隐藏文件(以.开头)
ls -lh      # 人类可读的文件大小显示
 
2.1.2 cd - 切换目录
cd /path/to/dir  # 切换到指定目录
cd ~             # 切换到用户主目录
cd ..            # 切换到上级目录
cd -             # 切换到上一个工作目录
 
2.1.3 pwd - 显示当前工作目录
pwd  # 打印当前目录的完整路径
 
2.1.4 mkdir - 创建目录
mkdir dirname      # 创建单个目录
mkdir -p dir1/dir2 # 创建多级目录
 
2.1.5 rm - 删除文件或目录
rm file.txt        # 删除文件
rm -r dirname      # 递归删除目录
rm -f file.txt     # 强制删除,不提示
 
2.1.6 mv - 移动或重命名文件/目录
mv file1 file2     # 重命名
mv file1 dir/      # 移动文件
 
2.1.7 touch - 创建空文件或更新文件时间戳
touch file.txt  # 创建空文件或更新访问时间
 
2.2 文件查看和编辑
2.2.1 cat - 查看文件内容
cat file.txt      # 显示文件内容
cat -n file.txt   # 显示行号
 
2.2.2 less/more - 分页查看文件
less file.txt  # 可前后翻页
more file.txt  # 只能向下翻页
 
2.2.3 head/tail - 查看文件开头/结尾
head -n 5 file.txt  # 查看前5行
tail -f logfile     # 实时查看日志更新
 
2.2.4 grep - 文本搜索
grep "pattern" file.txt      # 搜索包含pattern的行
grep -i "pattern" file.txt   # 忽略大小写
grep -r "pattern" /path      # 递归搜索目录
 
2.3 系统信息
2.3.1 ps - 查看进程
ps aux       # 查看所有运行中的进程
ps -ef       # 另一种格式显示进程
 
2.3.2 top/htop - 动态查看系统状态
top          # 动态显示进程和资源使用
htop         # 更友好的交互式top(需安装)
 
2.3.3 free - 查看内存使用
free -h      # 以人类可读格式显示内存信息
 
2.3.4 df - 查看磁盘空间
df -h        # 显示磁盘使用情况(人类可读)
 
2.3.5 uname - 显示系统信息
uname -a     # 显示所有系统信息
 
2.4 网络相关
2.4.1 ping - 测试网络连接
ping example.com  # 测试到example.com的连接 
2.4.2 ifconfig/ip - 网络接口配置
ifconfig      # 显示网络接口信息(较旧)
ip addr       # 显示网络接口信息(新版)
 
2.4.3 netstat/ss - 网络统计
netstat -tuln # 显示监听端口(较旧)
ss -tuln      # 显示监听端口(新版)
 
2.4.5 wget/curl - 下载工具
wget http://example.com/file  # 下载文件
curl -O http://example.com/file
 
2.5 权限管理
2.5.1 chmod - 修改文件权限
chmod 755 file.sh   # 设置权限(rwxr-xr-x)
chmod +x file.sh    # 添加执行权限
 
2.5.2 chown - 修改文件所有者
chown user:group file.txt  # 修改所有者和组
 
2.5.3 sudo - 以超级用户权限执行
sudo command  # 以root权限执行命令
 
2.6 压缩和解压
2.6.1 tar - 打包和解包
tar -czvf archive.tar.gz dir/  # 创建gzip压缩包
tar -xzvf archive.tar.gz       # 解压gzip包
 
2.6.2 zip/unzip - ZIP压缩/解压
zip archive.zip file1 file2   # 创建zip压缩包
unzip archive.zip             # 解压zip包
 
2.6.3 gzip/gunzip - GZIP压缩/解压
gzip file.txt        # 压缩文件(生成file.txt.gz)
gunzip file.txt.gz   # 解压文件
 
2.7 其他实用命令
2.7.1 find - 查找文件
find /path -name "*.txt"  # 按名称查找
find . -type f -size +1M  # 查找大于1M的文件
 
2.7.3 which/whereis - 查找命令位置
which ls      # 显示ls命令的路径
whereis ls    # 显示命令及其手册页位置
 
2.7.4 alias - 创建命令别名
alias ll='ls -alF'  # 创建ll别名
 
2.7.5 history - 查看命令历史
history       # 显示命令历史
!n            # 执行历史记录中第n条命令
 
2.7.6 man - 查看命令手册
man ls        # 查看ls命令的手册页
 
2.7.7 echo - 输出文本
echo "Hello"  # 输出文本
echo $PATH    # 输出环境变量
 
2.7.8 date - 显示或设置日期时间
date          # 显示当前日期时间
date +"%Y-%m-%d"  # 格式化输出
sudo date -s "2024-03-15 14:30:00"
 
3 Shell 脚本
Shell 脚本是 Linux/Unix 系统中自动化任务和系统管理的重要工具。以下是 Shell 脚本开发的全面指南:
3.1 初步了解
第一行 #!/bin/bash 称为 shebang,指定解释器
#!/bin/bash
# 这是一个注释
echo "Hello, World!"
 
3.2 运行方式
chmod +x script.sh  # 添加执行权限
./script.sh         # 直接执行bash script.sh      # 指定解释器执行
sh script.sh        # 使用 sh 解释器执行
source script.sh    # 在当前 shell 环境中执行
 
3.3 变量定义与使用
name="Alice"        # 定义变量
echo $name          # 使用变量
echo ${name}        # 推荐使用大括号readonly PI=3.14    # 只读变量
unset name          # 删除变量
 
3.4 特殊变量
$0       # 脚本名称
$1-$9    # 脚本参数
$#       # 参数个数
$*       # 所有参数
$@       # 所有参数(推荐)
$?       # 上条命令的退出状态
$$       # 当前进程PID
$!       # 最后一个后台进程PID
 
3.5 字符串操作
str="Hello World"# 字符串长度
echo ${#str}        # 11# 子字符串
echo ${str:0:5}     # Hello# 替换
echo ${str/World/Bash}  # Hello Bash# 大小写转换
echo ${str^^}       # 转大写
echo ${str,,}       # 转小写
 
3.6 数组
# 定义数组
fruits=("Apple" "Banana" "Orange")# 访问元素
echo ${fruits[0]}   # Apple
echo ${fruits[@]}   # 所有元素# 数组长度
echo ${#fruits[@]}  # 3# 遍历数组
for fruit in "${fruits[@]}"; doecho $fruit
done
 
3.7 条件判断
if [ $a -eq $b ]; thenecho "a等于b"
elif [ $a -gt $b ]; thenecho "a大于b"
elseecho "a小于b"
fi
 
3.8 # 定义函数
greet() {local name=$1    # 局部变量echo "Hello, $name"
}# 调用函数
greet "Alice"# 返回值
add() {return $(($1 + $2))
}
add 3 5
echo $?             # 8
 
4 综合案例
4.1 备份脚本
#!/bin/bash
# 简单备份脚本BACKUP_DIR="/backup"
SOURCE_DIR="/home/user"
DATE=$(date +%Y%m%d)if [ ! -d "$BACKUP_DIR" ]; thenmkdir -p "$BACKUP_DIR"
fitar -czf "$BACKUP_DIR/backup_$DATE.tar.gz" "$SOURCE_DIR" && \
echo "备份成功完成" || echo "备份失败"
 
4.2 系统监控脚本
 #!/bin/bash
# 系统资源监控echo "=== 系统监控 ==="
echo "当前时间: $(date)"
echo "主机名: $(hostname)"
echo "=== 系统负载 ==="
uptime
echo "=== 内存使用 ==="
free -h
echo "=== 磁盘空间 ==="
df -h