Appearance
文件管理
文件类型
查看文件类型
bash
file file1 # 查看文件类型
file -i file1 # 显示 MIME 类型
file -b file1 # 不显示文件名Linux 文件类型
| 类型标识 | 说明 | 示例 |
|---|---|---|
| - | 普通文件 | 文本、二进制文件 |
| d | 目录文件 | /home |
| l | 符号链接 | 软链接 |
| b | 块设备 | /dev/sda |
| c | 字符设备 | /dev/tty |
| p | 命名管道 | FIFO |
| s | 套接字 | Unix Socket |
bash
ls -l /dev/sda
brw-rw---- 1 root disk 8, 0 Dec 25 12:00 /dev/sda
ls -l /dev/tty
crw-rw-rw- 1 root tty 5, 0 Dec 25 12:00 /dev/tty链接文件
ln - 创建链接
硬链接
bash
ln file1 file2 # 创建硬链接
ls -li file1 file2 # 查看 inode 号硬链接特点:
- 指向同一个 inode
- 删除原文件不影响链接
- 不能跨文件系统
- 不能链接目录
软链接(符号链接)
bash
ln -s file1 file2 # 创建软链接
ln -s /path/to/file link_name
ls -l link_name # 查看链接指向软链接特点:
- 类似 Windows 快捷方式
- 可以跨文件系统
- 可以链接目录
- 原文件删除后链接失效
对比
| 特性 | 硬链接 | 软链接 |
|---|---|---|
| inode | 相同 | 不同 |
| 跨文件系统 | 否 | 是 |
| 链接目录 | 否 | 是 |
| 原文件删除 | 仍可用 | 失效 |
文件属性
stat - 查看文件属性
bash
stat file1 # 查看详细属性
stat -c "%s" file1 # 只显示大小
stat -c "%U %G" file1 # 显示所有者和组文件时间属性
| 时间 | 说明 |
|---|---|
| atime | 访问时间 (Access) |
| mtime | 修改时间 (Modify) |
| ctime | 状态改变时间 (Change) |
bash
ls -lu file1 # 显示 atime
ls -l file1 # 显示 mtime
ls -lc file1 # 显示 ctime修改时间戳
bash
touch -a file1 # 更新 atime
touch -m file1 # 更新 mtime
touch -d "2023-12-25" file1 # 设置指定日期
touch -r file1 file2 # 使用 file1 的时间文件内容操作
tee - 同时输出到文件和屏幕
bash
echo "Hello" | tee file1
echo "World" | tee -a file1 # 追加
ls -l | tee output.txt
command 2>&1 | tee log.txt # 包含错误输出split - 分割文件
bash
split -b 10M largefile part_ # 按大小分割
split -l 1000 file.txt part_ # 按行数分割
split -d largefile part_ # 数字后缀
split -b 10M largefile part_ -d --additional-suffix=.txt合并文件:
bash
cat part_* > largefiletruncate - 截断文件
bash
truncate -s 100M file1 # 扩展或截断到100M
truncate -s +10M file1 # 增加10M
truncate -s -10M file1 # 减少10M文件比较
diff - 比较文件
bash
diff file1 file2 # 比较两个文件
diff -u file1 file2 # 统一格式
diff -r dir1 dir2 # 比较目录
diff -q file1 file2 # 只显示是否不同
diff -y file1 file2 # 并排显示cmp - 按字节比较
bash
cmp file1 file2 # 比较文件
cmp -l file1 file2 # 显示所有差异
cmp -b file1 file2 # 显示差异字节md5sum/sha256sum - 校验文件
bash
md5sum file1 # 计算 MD5
sha256sum file1 # 计算 SHA256
md5sum -c checksum.md5 # 校验文件
sha256sum -c checksum.sha256生成校验文件:
bash
md5sum file1 file2 > checksum.md5
sha256sum file1 file2 > checksum.sha256文件搜索内容
grep - 搜索文件内容
bash
grep "pattern" file1 # 搜索内容
grep -i "pattern" file1 # 忽略大小写
grep -r "pattern" dir1/ # 递归搜索
grep -n "pattern" file1 # 显示行号
grep -v "pattern" file1 # 反向匹配
grep -c "pattern" file1 # 统计匹配行数
grep -l "pattern" *.txt # 只显示文件名
grep -w "word" file1 # 匹配整个单词
grep -A 3 "pattern" file1 # 显示匹配行及后3行
grep -B 3 "pattern" file1 # 显示匹配行及前3行
grep -C 3 "pattern" file1 # 显示匹配行及前后各3行
grep -E "pattern1|pattern2" file1 # 扩展正则
grep --color=auto "pattern" file1 # 高亮显示grep 正则表达式
bash
grep "^start" file1 # 以 start 开头
grep "end$" file1 # 以 end 结尾
grep "[0-9]" file1 # 包含数字
grep "[a-z]" file1 # 包含小写字母
grep "a\{3\}" file1 # a 出现3次
grep "a\{2,4\}" file1 # a 出现2-4次
grep "a.*b" file1 # a 和 b 之间任意字符
grep -E "a+" file1 # a 出现1次或多次
grep -E "a?" file1 # a 出现0次或1次文件压缩与归档
tar - 归档文件
bash
tar -cvf archive.tar dir1/ # 创建归档
tar -xvf archive.tar # 解压归档
tar -tvf archive.tar # 查看归档内容
tar -rvf archive.tar file1 # 追加文件
tar -xvf archive.tar -C /target/ # 解压到指定目录结合压缩:
bash
tar -czvf archive.tar.gz dir1/ # gzip 压缩
tar -cjvf archive.tar.bz2 dir1/ # bzip2 压缩
tar -cJvf archive.tar.xz dir1/ # xz 压缩
tar -xzvf archive.tar.gz # 解压 gzip
tar -xjvf archive.tar.bz2 # 解压 bzip2
tar -xJvf archive.tar.xz # 解压 xzgzip - gzip 压缩
bash
gzip file1 # 压缩文件(删除原文件)
gzip -k file1 # 压缩文件(保留原文件)
gzip -d file1.gz # 解压
gzip -9 file1 # 最大压缩比
gzip -1 file1 # 最快压缩
gunzip file1.gz # 解压
zcat file1.gz # 查看压缩文件内容zip/unzip - zip 压缩
bash
zip archive.zip file1 file2 # 压缩文件
zip -r archive.zip dir1/ # 压缩目录
zip -e archive.zip file1 # 加密压缩
zip -u archive.zip file1 # 更新压缩包
unzip archive.zip # 解压
unzip archive.zip -d /target/ # 解压到指定目录
unzip -l archive.zip # 查看压缩包内容
unzip -t archive.zip # 测试压缩包bzip2 - bzip2 压缩
bash
bzip2 file1 # 压缩
bzip2 -d file1.bz2 # 解压
bunzip2 file1.bz2 # 解压
bzcat file1.bz2 # 查看内容xz - xz 压缩
bash
xz file1 # 压缩
xz -d file1.xz # 解压
xz -k file1 # 保留原文件
xzcat file1.xz # 查看内容文件系统操作
df - 磁盘空间
bash
df # 显示磁盘使用
df -h # 人类可读格式
df -T # 显示文件系统类型
df -i # 显示 inode 使用
df -x tmpfs # 排除 tmpfsdu - 目录大小
bash
du # 显示目录大小
du -h # 人类可读格式
du -sh dir1 # 显示总大小
du -h --max-depth=1 # 显示一层深度
du -ah # 显示所有文件
du -sh * # 显示当前目录下各文件大小
du -h --exclude="*.log" # 排除文件ln - 创建链接(补充)
bash
ln -sf /new/target link # 强制更新软链接
readlink link # 读取链接目标
readlink -f link # 获取绝对路径