Appearance
文件管理
文件类型
file - 查看文件类型
bash
file file1 # 查看文件类型
file -I file1 # 显示 MIME 类型
file -b file1 # 不显示文件名
file -z compressed.gz # 查看压缩文件内容macOS 文件类型
| 类型标识 | 说明 | 示例 |
|---|---|---|
| - | 普通文件 | 文本、二进制文件 |
| d | 目录文件 | /Users |
| l | 符号链接 | 软链接 |
| b | 块设备 | /dev/disk0 |
| c | 字符设备 | /dev/tty |
| p | 命名管道 | FIFO |
| s | 套接字 | Unix Socket |
链接文件
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 # 查看链接指向软链接特点:
- 类似快捷方式
- 可以跨文件系统
- 可以链接目录
- 原文件删除后链接失效
文件属性
stat - 查看文件属性
bash
stat file1 # 查看详细属性
stat -f "%z" file1 # 只显示大小
stat -f "%Su %Sg" file1 # 显示所有者和组
stat -f "%Sm" file1 # 显示修改时间
stat -f "%N: %z bytes" file1 # 自定义格式文件时间属性
| 时间 | 说明 |
|---|---|
| atime | 访问时间 (Access) |
| mtime | 修改时间 (Modify) |
| ctime | 状态改变时间 (Change) |
| birthtime | 创建时间 |
bash
ls -lu file1 # 显示 atime
ls -l file1 # 显示 mtime
ls -lc file1 # 显示 ctime
stat -f "%SB" file1 # 显示创建时间修改时间戳
bash
touch -a file1 # 更新 atime
touch -m file1 # 更新 mtime
touch -t 202312251200 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 -b 10M largefile part_ -d # 数字后缀合并文件:
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 # 并排显示
diff --suppress-common-lines file1 file2 # 只显示差异cmp - 按字节比较
bash
cmp file1 file2 # 比较文件
cmp -l file1 file2 # 显示所有差异
cmp -b file1 file2 # 显示差异字节校验文件
bash
md5 file1 # 计算 MD5
shasum file1 # 计算 SHA1
shasum -a 256 file1 # 计算 SHA256
shasum -a 512 file1 # 计算 SHA512
shasum -c checksum.sha256 # 校验文件生成校验文件:
bash
md5 file1 file2 > checksum.md5
shasum -a 256 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 -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 # 查看内容ditto - macOS 复制工具
bash
ditto src dst # 复制目录
ditto -c -k src archive.zip # 创建 zip 压缩包
ditto -x -k archive.zip dst # 解压 zip
ditto --hfsCompression src dst # 使用 HFS+ 压缩文件系统操作
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" # 排除文件磁盘工具
bash
diskutil list # 列出所有磁盘
diskutil info disk0 # 磁盘信息
diskutil eraseDisk JHFS+ NewDisk disk0 # 格式化磁盘
diskutil verifyVolume / # 验证卷
diskutil repairVolume / # 修复卷扩展属性
xattr - 扩展属性管理
bash
xattr file1 # 列出属性
xattr -l file1 # 显示属性值
xattr -w com.my.attr "value" file1 # 设置属性
xattr -d com.my.attr file1 # 删除属性
xattr -c file1 # 删除所有属性
xattr -cr dir1 # 递归删除所有属性隔离属性
macOS 下载的文件会有隔离属性:
bash
xattr -d com.apple.quarantine file1 # 移除隔离属性
xattr -cr /Applications/app.app # 移除应用隔离属性