【Linux命令大全】001.文件管理(理论篇)

【Linux命令大全】001.文件管理(理论篇)

✨ 本文为Linux系统文件管理命令的全面汇总与深度优化,结合图标、结构化排版与实用技巧,专为高级用户和系统管理员打造。

(关注不迷路哈!!!)

文章目录

  • 【Linux命令大全】001.文件管理(理论篇)
    • [📄 cat 命令](#📄 cat 命令)
    • [🔐 chattr 命令](#🔐 chattr 命令)
    • [👥 chgrp 命令](#👥 chgrp 命令)
    • [🔧 chmod 命令](#🔧 chmod 命令)
    • [👤 chown 命令](#👤 chown 命令)
    • [🔍 cksum 命令](#🔍 cksum 命令)
    • [🔎 cmp 命令](#🔎 cmp 命令)
    • [📂 cp 命令](#📂 cp 命令)
    • [✂️ cut 命令](#✂️ cut 命令)
    • [🔄 diff 命令](#🔄 diff 命令)
    • [📊 diffstat 命令](#📊 diffstat 命令)
    • [📄 file 命令](#📄 file 命令)
    • [🔍 find 命令](#🔍 find 命令)
    • [📦 git 命令](#📦 git 命令)
    • [🖼️ gitview 命令](#🖼️ gitview 命令)
    • [📐 indent 命令](#📐 indent 命令)
    • [🔗 ln 命令](#🔗 ln 命令)
    • [🔎 locate 命令](#🔎 locate 命令)
    • [🔍 lsattr 命令](#🔍 lsattr 命令)
    • [🛠️ mattrib 命令](#🛠️ mattrib 命令)
    • [🖥️ mc 命令](#🖥️ mc 命令)
    • [📥 mcopy 命令](#📥 mcopy 命令)
    • [🗑️ mdel 命令](#🗑️ mdel 命令)
    • [📁 mdir 命令](#📁 mdir 命令)
    • [📁 mktemp 命令](#📁 mktemp 命令)
    • [📁 mmove 命令](#📁 mmove 命令)
    • [📁 mread 命令](#📁 mread 命令)
    • [📝 mren 命令](#📝 mren 命令)
    • [🔍 mshowfat 命令](#🔍 mshowfat 命令)
    • [🛠️ mtools 命令](#🛠️ mtools 命令)
    • [🧪 mtoolstest 命令](#🧪 mtoolstest 命令)
    • [📁 mv 命令](#📁 mv 命令)
    • [🔢 od 命令](#🔢 od 命令)
    • [📊 paste 命令](#📊 paste 命令)
    • [🛠️ patch 命令](#🛠️ patch 命令)
    • [🌐 rcp 命令](#🌐 rcp 命令)
    • [🔐 rhmask 命令](#🔐 rhmask 命令)
    • [🗑️ rm 命令](#🗑️ rm 命令)
    • [🔎 slocate 命令](#🔎 slocate 命令)
    • [📁 split 命令](#📁 split 命令)
    • [🔄 tee 命令](#🔄 tee 命令)
    • [🧹 tmpwatch 命令](#🧹 tmpwatch 命令)
    • [📄 touch 命令](#📄 touch 命令)
    • [🔐 umask 命令](#🔐 umask 命令)
    • [🔎 whereis 命令](#🔎 whereis 命令)
    • [🔍 which 命令](#🔍 which 命令)

📄 cat 命令

功能与作用

将多个文件的内容连接并输出到标准输出或指定文件,常用于查看文件内容、合并日志等。

参数详解

参数 说明
-n 对所有行编号(从1开始)
-b 类似 -n,但空白行不编号
-s 将连续多个空白行替换为单行
-v 显示非打印字符
-A 等同于 -vET,显示所有控制字符
-E 在每行末尾显示 $
-T 将制表符显示为 ^I

使用示例

bash 复制代码
# 把textfile1的档案内容加上行号后输入textfile2这个档案里
cat -n textfile1 > textfile2

# 把textfile1和textfile2的档案内容加上行号(空白行不加)之后将内容附加到textfile3里
cat -b textfile1 textfile2 >> textfile3

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

# 合并多个文件内容到一个新文件
cat file1.log file2.log file3.log > combined.log

# 查看文件内容(包括特殊字符)
cat -vET special_chars.txt

# 查看文件内容,并在每行末尾显示$符号
cat -E config.txt

# 显示制表符为^I
cat -T document.txt

# 显示所有控制字符(包括换行、制表符等)
cat -A script.sh

# 将多个文件内容合并并显示行号,同时保留原始文件
cat -n file1.txt file2.txt > merged_with_line_numbers.txt

# 使用管道将cat输出传递给其他命令
cat config.txt | grep "database"  # 查找包含"database"的行

🔐 chattr 命令

功能与作用

设置文件的扩展属性(如不可修改、仅追加),增强文件安全性。

参数详解

参数 说明
-R 递归处理目录
-v 设置版本号
-V 显示执行过程
+<属性> 开启属性
-<属性> 关闭属性
=<属性> 设置为指定属性

支持的属性

属性 说明
a 仅允许追加
i 不可修改(immutable)
s 安全删除(覆盖写入)
u 可恢复删除(保留数据)
d 排除在备份之外

使用示例

bash 复制代码
# 设置文件为不可修改(immutable)
sudo chattr +i important_config.conf

# 移除文件的不可修改属性
sudo chattr -i important_config.conf

# 设置目录下所有文件只能追加内容
sudo chattr -R +a /var/log/myapp/

# 设置文件在删除后可以恢复
sudo chattr +u important_document.txt

# 查看文件特殊属性
lsattr /etc/passwd

# 设置文件为只读且不可修改
sudo chattr +i +a secure_file.txt

# 检查是否成功设置了属性
lsattr secure_file.txt

# 临时禁用某个文件的不可修改属性进行编辑
sudo chattr -i secure_file.txt
vim secure_file.txt
sudo chattr +i secure_file.txt  # 编辑完成后重新启用保护

👥 chgrp 命令

功能与作用

更改文件或目录的所属组,用于权限控制。

参数详解

参数 说明
-c 仅当组变更成功时显示
-f 不提示错误
-v 显示详细信息
-R 递归处理
-h 仅修改符号链接本身

使用示例

bash 复制代码
# 将文件所属组改为developers
sudo chgrp developers file.txt

# 递归修改目录及其内容所属组
sudo chgrp -R www-data /var/www/html

# 修改符号链接本身的组(而非目标文件)
chgrp -h symlink_file groupname

# 显示修改过程
chgrp -v users document.pdf

# 批量修改多个文件的组
chgrp -R developers *.txt *.log

# 验证组变更是否生效
ls -l file.txt

# 更改符号链接指向的文件的所有者而非链接本身
sudo chown -h newuser symlink

# 更改文件组为admin组
sudo chgrp admin myfile.txt

🔧 chmod 命令

功能与作用

修改文件或目录的读、写、执行权限。

权限表示法

  • 符号法u(所有者)、g(组)、o(其他)、a(全部)
  • 数字法r=4, w=2, x=1

参数详解

参数 说明
-c 仅显示变更
-f 忽略错误
-v 显示详细过程
-R 递归处理

使用示例

bash 复制代码
chmod u+x script.sh                 # 添加执行权限
chmod go-w data.txt                 # 移除组/其他写权限
chmod 644 readme.md                 # 所有者可读写,其他人只读
chmod -R 755 myapp/                 # 递归设置目录权限

# 设置文件为所有人可读写
chmod a+rw shared_file.txt

# 移除所有人的执行权限
chmod a-x script.sh

# 仅允许所有者读写,组和其他人无权限
chmod 600 private_data.txt

# 递归设置目录权限,子目录755,文件644
find . -type d -exec chmod 755 {} \; && find . -type f -exec chmod 644 {} \;

# 查看文件当前权限
ls -l file.txt

👤 chown 命令

功能与作用

更改文件或目录的所有者和所属组。

参数详解

参数 说明
-c 显示变更
-f 忽略错误
-h 仅修改符号链接
-R 递归处理
-v 显示详细信息

使用示例

bash 复制代码
# 更改文件所有者
sudo chown root:admin config.ini

# 只更改文件所有者,保留原组
sudo chown newowner file.txt

# 递归更改目录及其内容的所有者和组
sudo chown -R www-data:www-data /var/www/myapp

# 更改符号链接指向的文件的所有者而非链接本身
sudo chown -h newuser symlink

# 更改文件组为admin组
sudo chgrp admin myfile.txt

# 批量更改多个文件的所有者
sudo chown -R user:group *.conf *.json

# 验证所有权变更
ls -l file.txt

# 更改文件所有者为root,组保持不变
sudo chown root file.txt

🔍 cksum 命令

功能与作用

计算文件的CRC校验和与字节数,用于验证文件完整性。

参数详解

参数 说明
无参数 输出校验和、字节数、行数
- 从标准输入读取

使用示例

bash 复制代码
# 查看文件的CRC校验和和大小
cksum data.bin

# 检查两个文件是否相同
cksum file1.txt file2.txt

# 通过管道检查数据
printf "hello" | cksum

# 比较两个文件的校验和是否一致
cksum file1.txt | awk '{print $1}' > checksum1.txt
cksum file2.txt | awk '{print $1}' > checksum2.txt
diff checksum1.txt checksum2.txt

# 生成文件校验和并保存到文件
cksum largefile.iso > checksum.txt

# 验证下载的文件是否完整
wget https://example.com/file.tar.gz
cksum file.tar.gz > downloaded_checksum.txt
# 与官方提供的校验和对比
diff downloaded_checksum.txt official_checksum.txt

🔎 cmp 命令

功能与作用

逐字节比较两个文件,输出第一个差异位置。

参数详解

参数 说明
-b 显示不同字节(八进制)
-l 列出所有差异字节
-s 静默模式(仅返回退出码)
-i NUM 忽略前NUM个字节

使用示例

bash 复制代码
# 比较两文件,显示首个不同
cmp file1.txt file2.txt

# 列出所有不同字节及其内容
cmp -bl a.bin b.bin

# 静默比较,用于脚本判断
if cmp -s orig.cfg backup.cfg; then
  echo "文件一致"
fi

# 忽略前100字节的比较
cmp -i 100 file1 file2

# 比较两个二进制文件的差异
cmp -l firmware_old.img firmware_new.img

# 在脚本中使用cmp进行文件一致性检查
check_files() {
  local file1="$1"
  local file2="$2"
  if cmp -s "$file1" "$file2"; then
    echo "✓ 文件一致"
  else
    echo "✗ 文件不一致"
    cmp "$file1" "$file2"
  fi
}

📂 cp 命令

功能与作用

复制文件或目录。

参数详解

参数 说明
-a 保留所有属性(等价于 -dpR
-r / -R 递归复制目录
-f 强制覆盖
-i 覆盖前询问
-n 不覆盖已有文件
-p 保留时间戳
-s 创建符号链接
-v 显示详细过程

使用示例

bash 复制代码
# 复制文件
cp file1.txt file2.txt

# 递归复制目录
cp -r source_dir/ destination_dir/

# 复制时保留文件属性
cp -a config.ini /backup/

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

# 不覆盖已存在的文件
cp -n file.txt dir/

# 复制时显示详细过程
cp -v file.txt dir/

# 创建符号链接而非复制文件
cp -s source_file link_name

# 复制多个文件到目录
cp file1.txt file2.txt file3.txt /backup/

# 递归复制并保留权限和时间戳
cp -a /etc/nginx /backup/nginx/

# 复制文件并重命名
cp config.txt config.bak

# 使用通配符复制多个文件
cp *.log /var/log/archive/

# 复制文件并设置特定权限
cp file.txt /tmp/ && chmod 600 /tmp/file.txt

✂️ cut 命令

功能与作用

从每行中提取指定字段或字符。

参数详解

参数 说明
-b 按字节提取
-c 按字符提取
-d DELIM 自定义分隔符(默认为制表符)
-f 提取指定字段
--complement 取反选择
--output-delimiter 设置输出分隔符

使用示例

bash 复制代码
# 提取每行的第3个字符
cut -c 3 filename

# 提取第1到第5个字符
cut -c 1-5 filename

# 提取第5个字符到结尾
cut -c 5- filename

# 以冒号作为分隔符,提取第1和第3字段
cut -d ':' -f 1,3 /etc/passwd

# 提取日志文件中以空格为分隔符的第4个字段
cut -d' ' -f4 access.log

# 提取逗号分隔文件中的第2和第4字段
cut -d',' -f2,4 data.csv

# 提取所有字段除了第2个
cut -d',' --complement -f2 data.csv

# 使用自定义分隔符提取字段
cut -d';' -f1,3 data.semicolon

# 提取字段并用逗号分隔输出
cut -d':' -f1,3 /etc/passwd --output-delimiter=','

# 提取文件名(假设路径用/分隔)
echo "/home/user/documents/file.txt" | cut -d'/' -f5

# 提取IP地址的最后一个段
echo "192.168.1.100" | cut -d'.' -f4

# 提取用户名(从/etc/passwd)
cut -d':' -f1 /etc/passwd

🔄 diff 命令

功能与作用

比较两个文件或目录的差异,输出补丁格式。

参数详解

参数 说明
-u 统一格式输出(推荐)
-r 递归比较目录
-N 缺失文件视为空
-i 忽略大小写
-w 忽略空白
-q 仅报告是否不同
-y 并排显示

使用示例

bash 复制代码
# 比较两文件,显示统一格式差异
diff -u file1.txt file2.txt

# 递归比较目录
diff -rq dir1/ dir2/

# 忽略大小写比较
diff -i file1.txt file2.txt

# 比较并显示简洁差异
diff -q file1.txt file2.txt

# 并排显示差异
diff -y file1.txt file2.txt

# 忽略空白差异
diff -w file1.txt file2.txt

# 生成补丁文件
diff -u old_version.txt new_version.txt > patch.diff

# 应用补丁
patch < patch.diff

# 比较两个目录的差异
diff -r /old_project/ /new_project/

# 比较文件时忽略行尾空格
diff -B file1.txt file2.txt

# 比较文件时忽略空白行
diff -B file1.txt file2.txt

# 比较文件时忽略大小写和空白
diff -iw file1.txt file2.txt

📊 diffstat 命令

功能与作用

统计 diff 输出的变更情况,以柱状图展示。

参数详解

参数 说明
-p N 剥离路径前N层
-w N 设置宽度
-l 仅显示文件名
-n N 显示前N个结果

使用示例

bash 复制代码
# 统计补丁影响
diff -u old/ new/ | diffstat

# 剥离一级路径并设置宽度
diff -ruN src-old src-new | diffstat -p1 -w 80

# 仅显示文件名
diff -u file1 file2 | diffstat -l

# 显示前10个变更最多的文件
diff -u old/ new/ | diffstat -n 10

# 显示变更统计并限制宽度
diff -u src/ dst/ | diffstat -w 100

# 生成详细的变更统计报告
diff -u before/ after/ | diffstat -p2 -w 120 > change_report.txt

# 统计代码提交的变更情况
git diff HEAD~1 HEAD | diffstat -p1 -w 100

📄 file 命令

功能与作用

识别文件类型(文本、二进制、压缩包、图片等)。

参数详解

参数 说明
-b 仅输出类型
-L 跟随符号链接
-z 尝试解压查看
--mime 显示MIME类型
--mime-type 仅显示MIME类型

使用示例

bash 复制代码
# 输出文件类型
file /bin/bash

# 查看图片类型
file photo.jpg

# 查看文本文件类型
file config.ini

# 查看压缩包类型
file archive.tar.gz

# 显示MIME类型
file --mime-type document.pdf

# 查看文件类型并显示MIME
file --mime /path/to/file

# 查看压缩文件内部内容
file -z compressed.tar.gz

# 查看符号链接的目标文件类型
file -L symlink_to_binary

# 批量检查多个文件类型
for file in *.txt *.jpg *.zip; do
  echo "=== $file ==="
  file "$file"
done

# 检查文件是否为可执行程序
file script.sh | grep "executable"

# 检查文件是否为PDF
file document.pdf | grep "PDF"

🔍 find 命令

功能与作用

在目录树中查找文件,支持多种条件过滤。

参数详解

参数 说明
-name 按名称查找
-iname 不区分大小写
-type f/d/l 按类型查找
-size +N 大于N单位
-mtime +N 超过N天未修改
-user 按所有者查找
-group 按组查找
-perm 按权限查找
-exec CMD {} \; 执行命令
-ok CMD {} \; 交互式执行

使用示例

bash 复制代码
# 查找所有名为config.ini的文件
find . -name "*.txt"

# 查找/var/log目录中大于10MB的文件
find /var/log -size +10M

# 查找/home目录中30天内未被修改的文件
find /home -mtime +30

# 查找/etc目录中属于root用户的文件
find /etc -user root

# 查找/tmp目录中属于nobody组的文件
find /tmp -group nobody

# 查找/opt目录下所有权限为777的文件
find /opt -perm 777

# 查找当前目录中3天内被修改过的所有文件
find . -mtime -3

# 查找并删除30天前的日志文件
find /var/log -name "*.log" -mtime +30 -delete

# 查找并压缩30天未修改的配置文件
find /etc -name "*.conf" -mtime +30 -exec gzip {} \;

# 查找并显示文件详细信息
find . -type f -exec ls -l {} \;

# 查找所有php和html文件
find . \( -name "*.php" -o -name "*.html" \)

# 查找名称匹配正则表达式的文件
find . -regex ".*\.\(py\|sh\)$"

# 查找但不进入挂载点以外的其他文件系统
find . -mount -name "*.txt"

# 查找深度不超过3层的目录
find . -maxdepth 3 -type d

# 查找并统计文件数量
find . -type f | wc -l

# 查找所有隐藏文件
find . -name ".*"

# 查找所有符号链接
find . -type l

# 查找所有空文件
find . -type f -empty

# 查找所有大文件(>100MB)
find /var/log -type f -size +100M

# 查找所有可执行文件
find . -type f -executable

# 查找所有权限为644的文件
find . -type f -perm 644

# 查找并移动文件
find . -name "*.tmp" -exec mv {} /tmp/old/ \;

# 查找并删除文件(交互式)
find . -name "*.bak" -ok rm {} \;

📦 git 命令

功能与作用

分布式版本控制系统,用于代码管理。

常用子命令

子命令 说明
clone 克隆仓库
init 初始化仓库
add 添加文件到暂存区
commit 提交更改
status 查看状态
diff 查看差异
log 查看提交历史
branch 管理分支
checkout 切换分支
pull 拉取远程更新
push 推送本地更改
merge 合并分支

使用示例

bash 复制代码
# 克隆远程仓库
git clone https://github.com/user/repo.git

# 初始化新仓库
git init

# 查看仓库状态
git status

# 添加所有文件到暂存区
git add .

# 提交更改
git commit -m "提交说明"

# 查看提交历史
git log --oneline --graph

# 创建并切换到新分支
git checkout -b feature-branch

# 推送到远程仓库
git push origin main

# 拉取远程更新
git pull origin main

# 查看文件差异
git diff

# 查看提交详情
git show HEAD

# 查看分支列表
git branch -a

# 切换到特定分支
git checkout develop

# 合并分支
git merge feature-branch

# 删除分支
git branch -d feature-branch

# 查看远程仓库信息
git remote -v

# 添加远程仓库
git remote add origin https://github.com/user/repo.git

# 查看提交历史的图形化视图
git log --graph --oneline --all

# 查看文件的修改历史
git log --follow file.txt

# 查看某个文件的差异
git diff HEAD~1 HEAD file.txt

# 查看某个文件的完整历史
git log --follow --oneline file.txt

# 查看某个文件的修改记录
git blame file.txt

# 查看某个文件的修改次数
git log --oneline --follow file.txt | wc -l

🖼️ gitview 命令

功能与作用

图形化查看Git仓库历史与分支。

使用示例

bash 复制代码
gitview .                           # 打开当前仓库
gitview /path/to/repo               # 打开指定仓库

💡 替代工具:gitk, lazygit, tig


📐 indent 命令

功能与作用

格式化C/C++源代码,统一缩进风格。

参数详解

参数 说明
-kr K&R风格
-bsd BSD风格
-gnu GNU风格
-i N 缩进N个空格
-ts N 制表符宽度
-nut 不使用Tab

使用示例

bash 复制代码
indent -kr -i4 -nut hello.c         # K&R风格,4空格缩进
indent -gnu -l120 *.cpp             # GNU风格,行宽120

# 格式化所有C文件
find . -name "*.c" -exec indent -kr -i4 {} \;

# 格式化所有C++文件
find . -name "*.cpp" -exec indent -gnu -l120 {} \;

# 格式化文件并保留原文件
indent -kr -i4 -o formatted_hello.c hello.c

# 格式化文件并显示进度
indent -kr -i4 -v hello.c

# 格式化文件并使用制表符
indent -kr -i8 -ts8 hello.c

# 格式化文件并设置行宽
indent -kr -i4 -l80 hello.c

🔗 ln 命令

功能与作用

创建硬链接或符号链接。

参数详解

参数 说明
-s 创建软链接
-f 强制覆盖
-i 交互确认
-v 显示过程

使用示例

bash 复制代码
ln -s /opt/app/bin/cli /usr/local/bin/cli  # 创建软链接
ln data.orig data.hard                  # 创建硬链接
ln -sf new.cfg config.ini               # 强制更新软链接

# 创建软链接并验证
ln -s /etc/passwd ~/passwd_link
ls -l ~/passwd_link

# 创建硬链接并验证
ln file.txt file_hardlink
ls -i file.txt file_hardlink  # 查看inode是否相同

# 创建软链接到目录
ln -s /var/log /home/user/logs

# 创建软链接并强制覆盖
ln -sf /new/location/config.conf /etc/config.conf

# 创建软链接并交互确认
ln -si /source/file /destination/link

# 查看链接目标
readlink /path/to/symlink

# 查看链接类型
ls -l /path/to/symlink

🔎 locate 命令

功能与作用

通过预先构建的数据库快速查找文件,速度比 find 快得多,但由于依赖数据库,可能无法找到最新创建的文件。

参数详解

参数 说明
-i 忽略大小写
-n N 显示前N条
-r 正则表达式
-0 null分隔输出
-c 仅显示数量

使用示例

bash 复制代码
# 查找所有包含"passwd"的文件路径
locate passwd

# 忽略大小写查找所有.jpg文件
locate -i "*.jpg"

# 使用正则表达式查找/etc目录下的配置文件
locate -r "^/etc/.*\.conf$"

# 限制只显示前5个结果
locate -n 5 "httpd"

# 显示匹配项的数量而不是具体路径
locate -c "*.log"

# 使用null字符分隔输出(适用于包含空格的文件名)
locate -0 "*.txt" | xargs -0 ls -l

# 结合其他命令使用
locate "*.conf" | grep nginx

# 查找特定目录下的文件
locate /var/log/ | grep error

# 更新数据库后查找
sudo updatedb && locate newfile.txt

# 查找多个关键词
locate "config" | grep -E "(apache|nginx)"

# 查找并统计数量
locate "*.pdf" | wc -l

⚠️ locate 命令依赖于 updatedb 命令维护的数据库,默认每天自动更新一次。如果需要查找刚创建的文件,应先运行 sudo updatedb 更新数据库。


🔍 lsattr 命令

功能与作用

查看文件的扩展属性(由 chattr 设置),用于显示文件的特殊保护标志。

参数详解

参数 说明
-a 显示隐藏文件属性
-d 仅显示目录自身属性
-R 递归显示
-v 显示版本

使用示例

bash 复制代码
# 查看文件的扩展属性
lsattr /etc/passwd

# 显示家目录下所有文件的属性(包括隐藏文件)
lsattr -a ~

# 仅显示目录本身的属性,而不显示其内容的属性
lsattr -d /home/user

# 递归显示目录及其子目录下所有文件的属性
lsattr -R /var/log

# 显示文件的版本信息
lsattr -v /etc/hosts

# 查看多个文件的属性
lsattr file1.txt file2.txt

# 查看系统关键文件的属性
lsattr /etc/shadow /etc/group

# 结合grep筛选特定属性的文件
lsattr -aR /home 2>/dev/null | grep "\----i"

# 查看当前目录下所有文件的属性
lsattr *

# 查看符号链接文件的属性
lsattr -d symlink_file

🛠️ mattrib 命令

功能与作用

在MS-DOS文件系统(如FAT、VFAT)上设置或清除文件属性,如只读、隐藏、系统和归档属性。

参数详解

参数 说明
+r 设置只读
+h 设置隐藏
+s 设置系统
+a 设置归档
-r/-h/-s/-a 清除对应属性

使用示例

bash 复制代码
# 设置文件为只读属性
mattrib +r a:test.txt

# 设置文件为隐藏属性
mattrib +h a:hidden.dat

# 同时设置多个属性
mattrib +r +h a:protected.doc

# 清除文件的只读属性
mattrib -r a:writable.txt

# 查看文件当前属性
mattrib a:test.txt

# 设置文件为系统文件
mattrib +s a:system.sys

# 设置文件为归档属性
mattrib +a a:archive.zip

# 清除所有特殊属性
mattrib -r -h -s -a a:normal.file

# 批量设置多个文件属性
mattrib +r a:*.exe

# 查看磁盘根目录下所有文件的属性
mattrib a:*

⚠️ 此命令仅适用于MS-DOS兼容文件系统(如FAT16、FAT32、VFAT)。


🖥️ mc 命令

功能与作用

Midnight Commander,一个可视化的终端文件管理器,提供双面板界面,支持鼠标操作和内置编辑器/查看器。

参数详解

参数 说明
-c 彩色模式
-d 不使用鼠标
-v 使用内部编辑器查看文件
-P 退出时显示工作目录
-x 使用xterm模式

使用示例

bash 复制代码
# 启动Midnight Commander
mc

# 以彩色模式启动
mc -c

# 使用内部查看器打开指定文件
mc -v /etc/passwd

# 不使用鼠标支持启动
mc -d

# 退出时显示当前工作目录
mc -P

# 在xterm兼容模式下运行
mc -x

# 启动并打开两个指定目录
mc /home/user /var/log

# 以超级用户权限启动
sudo mc

# 启动并打开当前目录和上级目录
mc . ..

# 使用FISH协议连接远程服务器
mc sh://user@server/path/

# 启动并在左右面板分别打开不同目录
mc ~/Documents /tmp

💡 快捷键:F1 帮助,F2 用户菜单,F3 查看文件,F4 编辑文件,F5 复制,F6 移动,F7 创建目录,F8/Delete 删除,F9 主菜单,F10 退出,Tab 切换面板


📥 mcopy 命令

功能与作用

在MS-DOS文件系统和Unix/Linux文件系统之间复制文件。

使用示例

bash 复制代码
# 从软盘复制文件到当前目录
mcopy a:document.txt .

# 将本地文件复制到软盘
mcopy report.doc a:

# 复制多个文件到软盘
mcopy file1.txt file2.txt a:

# 从软盘复制整个目录
mcopy -s a:project/* project/

# 递归复制目录内容
mcopy -s source/ a:backup

# 交互式复制(覆盖前询问)
mcopy -i a:data.zip .

# 复制并保持时间戳
mcopy -p a:important.dat .

# 复制时显示详细过程
mcopy -v a:manual.pdf docs/

# 强制覆盖已存在文件
mcopy -o config.sys a:

# 复制软盘上所有文件到当前目录
mcopy a:* .

🗑️ mdel 命令

功能与作用

删除MS-DOS文件系统上的文件。

使用示例

bash 复制代码
# 删除软盘上的单个文件
mdel a:temp.txt

# 删除多个文件
mdel a:file1.tmp a:file2.tmp

# 使用通配符删除文件
mdel a:*.bak

# 交互式删除(删除前确认)
mdel -i a:important.dat

# 删除目录中的所有文件
mdel a:temp/*

# 强制删除只读文件
mdel -f a:readonly.txt

# 显示删除过程
mdel -v a:oldfiles/*

# 删除具有特定扩展名的文件
mdel a:*.log

# 删除隐藏文件
mdel a:hidden.*

📁 mdir 命令

功能与作用

显示MS-DOS文件系统中的目录内容。

使用示例

bash 复制代码
# 显示软盘根目录内容
mdir a:

# 显示指定目录内容
mdir a:documents

# 宽屏显示(每行显示多个文件)
mdir -w a:

# 显示详细信息(类似ls -l)
mdir -l a:

# 同时显示多个目录
mdir a:docs a:images

# 显示所有文件(包括隐藏文件)
mdir -a a:

# 递归显示子目录内容
mdir -s a:project

# 显示文件大小和日期
mdir -l a:*.txt

# 以紧凑格式显示
mdir -c a:

# 显示目录并按扩展名分类
mdir -x a:

📁 mktemp 命令

功能与作用

安全地创建临时文件或目录,避免命名冲突和安全问题。

参数详解

参数 说明
-t 使用模板生成名称
-d 创建临时目录
-p DIR 指定目录
--suffix=SUFFIX 添加后缀

使用示例

bash 复制代码
# 创建临时文件
tmpfile=$(mktemp)

# 创建临时目录
tmpdir=$(mktemp -d)

# 在指定目录创建临时文件
tmpfile=$(mktemp -p /tmp)

# 使用模板创建临时文件
tmpfile=$(mktemp testXXXXXX)

# 创建带特定后缀的临时文件
tmpfile=$(mktemp --suffix=.sh)

# 在/tmp目录下创建临时文件
tmpfile=$(mktemp /tmp/script.XXXXXX)

# 创建多个临时文件
tmp1=$(mktemp)
tmp2=$(mktemp)

# 创建临时文件并设置权限
tmpfile=$(mktemp)
chmod 600 "$tmpfile"

# 创建临时目录用于存放中间文件
workdir=$(mktemp -d)
# 使用完毕后清理
rm -rf "$workdir"

💡 建议使用完临时文件后及时删除,避免占用磁盘空间。


好的,以下是 mmove 命令及后续命令的详细说明和示例:


📁 mmove 命令

功能与作用

在MS-DOS与Unix之间移动文件。

参数详解

参数 说明
-o 强制覆盖目标

使用示例

bash 复制代码
# 将软盘上的文件移动到当前目录
mmove a:\readme.txt .

# 将本地文件移动到软盘
mmove source.file a:\dest.file

# 强制覆盖目标文件
mmove -o source.file dest.file

# 移动多个文件到软盘
mmove file1.txt file2.txt a:\

# 从软盘移动目录内容到本地
mmove -s a:\project\* ./project/

# 显示移动过程
mmove -v a:\document.doc ./

# 移动并重命名文件
mmove a:\original.txt renamed.txt

# 交互式移动(覆盖前确认)
mmove -i a:\important.dat ./

# 移动具有特定扩展名的文件
mmove a:\*.log /tmp/logs/

# 移动隐藏文件
mmove a:\hidden.* ./

📁 mread 命令

功能与作用

从MS-DOS文件系统读取文件到Unix。

使用示例

bash 复制代码
# 读取软盘上的批处理文件并转换行尾
mread a:\autoexec.bat autoexec.txt

# 读取多个文件到当前目录
mread a:\file1.txt a:\file2.txt ./

# 读取目录下所有文件
mread a:\docs\* ./docs/

# 递归读取目录内容
mread -s a:\project\* ./project/

# 读取并保持原始时间戳
mread -p a:\data.dat data_copy.dat

# 显示读取过程
mread -v a:\report.doc ./

# 交互式读取(覆盖前确认)
mread -i a:\config.sys ./

# 读取具有特定扩展名的文件
mread a:\*.ini /etc/configs/

# 读取隐藏文件
mread a:\.config ./

📝 mren 命令

功能与作用

在MS-DOS文件系统上重命名文件。

使用示例

bash 复制代码
# 重命名单个文件
mren a:\oldname.txt a:\newname.txt

# 批量重命名文件(需要多次调用)
mren a:\file1.tmp a:\file1.bak
mren a:\file2.tmp a:\file2.bak

# 重命名目录
mren a:\old_directory a:\new_directory

# 重命名具有特定扩展名的文件
mren a:\*.tmp a:\*.backup

# 使用通配符重命名部分文件
mren a:\document_*.txt a:\doc_*.txt

# 重命名隐藏文件
mren a:\.oldconfig a:\.newconfig

# 显示重命名过程
mren -v a:\tempfile a:\finalfile

# 交互式重命名(确认操作)
mren -i a:\important.a:\important.bak

# 重命名系统文件
mren a:\system.sys a:\system_backup.sys

🔍 mshowfat 命令

功能与作用

显示FAT文件系统的簇链,分析存储结构。

使用示例

bash 复制代码
# 显示文件的簇链分布
mshowfat a:\data\image.jpg

# 显示多个文件的簇链
mshowfat a:\file1.txt a:\file2.txt

# 显示目录的簇链
mshowfat a:\documents

# 显示系统文件的簇链
mshowfat a:\io.sys

# 显示隐藏文件的簇链
mshowfat a:\.config

# 显示具有长文件名的文件簇链
mshowfat a:\very_long_filename.txt

# 显示根目录的簇链
mshowfat a:\

# 显示损坏文件的簇链(用于诊断)
mshowfat a:\corrupted.file

# 显示大文件的簇链分布
mshowfat a:\large_archive.zip

# 显示可执行文件的簇链
mshowfat a:\program.exe

🛠️ mtools 命令

功能与作用

MS-DOS文件系统工具集入口。

使用示例

bash 复制代码
# 列出所有可用的mtools命令
mtools -l

# 显示mtools版本信息
mtools -V

# 显示mtools配置信息
mtools -c

# 设置mtools行为选项
mtools -D o # 设置默认驱动器为o

# 显示帮助信息
mtools -h

# 使用特定配置文件
mtools -C ~/.mtoolsrc

# 启用调试模式
mtools -d

# 设置默认设备
mtools -D a: -i /dev/fd0

# 显示当前环境变量设置
mtools -e

# 测试mtools配置是否正确
mtools -t

🧪 mtoolstest 命令

功能与作用

测试mtools配置是否正确。

使用示例

bash 复制代码
# 显示当前mtools配置
mtoolstest

# 验证配置文件语法
mtoolstest

# 检查默认驱动器设置
mtoolstest

# 显示所有已定义的驱动器
mtoolstest

# 验证特定驱动器配置
mtoolstest

# 检查文件系统访问权限
mtoolstest

# 显示mtools编译时的选项
mtoolstest

# 测试与软盘驱动器的通信
mtoolstest

# 验证长文件名支持
mtoolstest

# 检查字符集转换设置
mtoolstest

📁 mv 命令

功能与作用

移动或重命名文件/目录。

参数详解

参数 说明
-b 覆盖前备份
-f 强制覆盖
-i 交互确认
-u 仅当源更新时移动
-v 显示过程
-n 不覆盖已存在文件

使用示例

bash 复制代码
# 重命名文件
mv oldname.txt newname.txt

# 重命名目录
mv old_directory/ new_directory/

# 移动文件到另一个目录
mv file.txt /path/to/dir/

# 移动多个文件到目录
mv file1.txt file2.txt file3.txt /path/to/dir/

# 移动目录及其内容
mv source_dir/ destination_dir/

# 交互式移动(覆盖前询问)
mv -i file.txt dir/

# 强制覆盖目标文件
mv -f file.txt dir/

# 仅当源文件比目标文件新时才移动
mv -u newer_file.txt older_file.txt

# 移动时显示详细过程
mv -v file.txt dir/

# 移动时不覆盖已存在的文件
mv -n file.txt dir/

# 移动并备份已存在的目标文件
mv -b file.txt existing_file.txt

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

# 移动文件到用户主目录
mv file.txt ~/

# 使用通配符移动多个文件
mv *.log /var/log/archive/

# 移动隐藏文件
mv .hidden_file.txt visible_file.txt

# 移动并重命名文件
mv /path/to/source.txt /new/path/destination.txt

# 移动目录到另一个目录中
mv project/ backup/projects/project_$(date +%Y%m%d)/

🔢 od 命令

功能与作用

以十六进制、八进制、ASCII等格式转储文件内容。

参数详解

参数 说明
-x 十六进制双字节
-c ASCII字符
-b 八进制单字节
-d 十进制双字节
-A 地址基数(o/d/x)
-w N 每行显示N字节
-v 显示重复行

使用示例

bash 复制代码
# 以十六进制格式查看二进制文件
od -x config.bin

# 以ASCII字符查看脚本文件
od -c script.sh

# 以八进制单字节查看文件
od -b datafile

# 以十进制双字节查看文件
od -d numbers.dat

# 指定每行显示16字节
od -x -w16 largefile.bin

# 以不同地址基数显示
od -A d -x file.txt  # 十进制地址
od -A o -x file.txt  # 八进制地址
od -A x -x file.txt  # 十六进制地址

# 显示所有行,包括重复行
od -v -x file.txt

# 组合使用多种格式
od -x -c file.txt

# 只显示部分内容(跳过前100字节,显示接下来的50字节)
od -x -N 50 -j 100 file.txt

# 以短整型格式查看
od -t d2 file.txt

# 以浮点数格式查看
od -t f4 file.txt

# 查看文件头信息(前32字节)
od -x -N 32 header.bin

📊 paste 命令

功能与作用

将多个文件按列合并输出。

参数详解

参数 说明
-d DELIM 指定分隔符
-s 串行模式(每个文件一行)
-z 使用null分隔

使用示例

bash 复制代码
# 按列合并两个文件
paste col1.txt col2.txt

# 使用逗号作为分隔符
paste -d',' col1.txt col2.txt

# 使用多个分隔符循环
paste -d',:' col1.txt col2.txt col3.txt

# 串行模式:每个文件占一行
paste -s file1.txt file2.txt

# 使用制表符作为分隔符(默认)
paste names.txt scores.txt

# 合并三个文件
paste file1.txt file2.txt file3.txt

# 使用空格作为分隔符
paste -d' ' file1.txt file2.txt

# 处理标准输入
cat list1.txt | paste - list2.txt

# 创建表格形式输出
paste -d'\t' headers.txt data1.txt data2.txt

# 使用换行符作为分隔符
paste -d$'\n' file1.txt file2.txt

# 合并文件并重定向到新文件
paste name.txt age.txt > people.txt

# 处理空文件
touch empty.txt
paste file1.txt empty.txt file2.txt

🛠️ patch 命令

功能与作用

应用补丁文件,实现自动化更新。

参数详解

参数 说明
-pN 剥离路径前N层
-i FILE 从文件读取补丁
-R 反向打补丁
--dry-run 模拟执行
-f 强制应用
-E 删除空文件
-b 备份原文件

使用示例

bash 复制代码
# 应用补丁(剥离一层路径)
patch -p1 < fix.patch

# 指定补丁文件
patch -i fix.patch source.c

# 反向打补丁(撤销补丁)
patch -R -p1 < fix.patch

# 模拟执行,不实际修改文件
patch --dry-run -p1 < fix.patch

# 强制应用补丁
patch -f -p1 < fix.patch

# 应用补丁并备份原文件
patch -b -p1 < fix.patch

# 删除补丁创建的空文件
patch -E -p1 < fix.patch

# 剥离两层路径
patch -p2 < ../patches/update.patch

# 从标准输入应用补丁
cat fix.patch | patch -p1

# 应用补丁到特定目录
patch -d /path/to/source -p1 < fix.patch

# 生成备份文件并指定后缀
patch -b -z .orig -p1 < fix.patch

# 忽略空白字符差异
patch -l -p1 < fix.patch

# 应用补丁并显示详细信息
patch -v -p1 < fix.patch

🌐 rcp 命令

功能与作用

远程复制文件(不加密,已过时,建议使用scp/sftp替代)。

参数详解

参数 说明
-r 递归复制目录
-p 保留修改时间等属性
-v 显示详细过程

使用示例

bash 复制代码
# 复制文件到远程主机
rcp file.txt user@remote:/tmp/

# 从远程主机复制文件
rcp user@remote:/path/to/file.txt ./

# 递归复制目录
rcp -r src/ user@remote:/dest/

# 保留文件属性
rcp -p file.txt user@remote:/tmp/

# 显示复制过程
rcp -v file.txt user@remote:/tmp/

# 复制多个文件
rcp file1.txt file2.txt user@remote:/tmp/

# 使用特定端口(需要配合.rhosts文件)
rcp -r local_dir/ user@remote:/remote_dir/

# 复制到用户主目录
rcp document.pdf user@remote:~

# 复制隐藏文件
rcp .config user@remote:/backup/

# 复制并重命名
rcp local.txt user@remote:/remote/new_name.txt

# 在同一台远程主机间复制
rcp user@remote1:/file.txt user@remote2:/dest/

⚠️ 不加密,存在安全隐患。


🔐 rhmask 命令

功能与作用

基于RC4流加密的简单文件加密/解密工具。

参数详解

参数 说明
-k 密钥文件
-d 解密模式

使用示例

bash 复制代码
# 加密文件
rhmask -k secret.key data.txt

# 解密文件
rhmask -d -k secret.key data.txt.masked

# 使用密码短语作为密钥
echo "mypassword" > passphrase.key
rhmask -k passphrase.key document.txt

# 解密并输出到新文件
rhmask -d -k key.txt encrypted.doc masked.doc

# 加密多个文件
rhmask -k key.txt file1.txt file2.txt

# 使用二进制密钥文件
rhmask -k binary_key.dat data.bin

# 加密并重定向输出
rhmask -k key.txt input.txt > output.txt.masked

# 解密并检查结果
rhmask -d -k key.txt output.txt.masked > decrypted.txt
diff input.txt decrypted.txt

# 创建随机密钥
openssl rand -base64 32 > random.key
rhmask -k random.key sensitive.data

# 加密大文件
rhmask -k key.txt large_archive.tar.gz

💡 仅适合轻量级保护。


🗑️ rm 命令

功能与作用

删除文件或目录。

参数详解

参数 说明
-i 交互确认
-f 强制删除
-r / -R 递归删除
-I 多文件删除前询问一次
-v 显示过程
-d 删除空目录

使用示例

bash 复制代码
# 删除单个文件
rm file.txt

# 交互式删除
rm -i *.tmp

# 强制删除(不询问)
rm -f temp_file.txt

# 递归删除目录及其内容
rm -rf dir/

# 删除多个文件
rm file1.txt file2.txt file3.txt

# 删除时显示详细过程
rm -v temp.log

# 删除大量文件前询问一次
rm -I *.bak

# 删除空目录
rm -d empty_directory/

# 删除隐藏文件
rm .temp_config

# 删除带有特殊字符的文件
rm -- "file name with spaces.txt"

# 删除目录中的所有内容但保留目录
rm -rf directory/*

# 删除并备份(需要先手动备份)
cp file.txt file.txt.backup && rm file.txt

# 安全删除(多次覆写)
shred -u sensitive_data.txt

# 清空文件内容但保留文件
> empty_me.txt

⚠️ 删除不可逆,建议使用 trash-cli 替代。


🔎 slocate 命令

功能与作用

安全路径查找工具,基于预建数据库。

参数详解

参数 说明
-u 更新数据库
-c 仅显示匹配数量
-i 忽略大小写
-r 使用正则表达式

使用示例

bash 复制代码
# 查找包含passwd关键字的文件路径
slocate passwd

# 忽略大小写查找jpg文件
slocate -i "*.jpg"

# 使用正则表达式查找配置文件
slocate -r "^/etc/.*\.conf$"

# 仅显示匹配项的数量
slocate -c "*.log"

# 更新slocate数据库
slocate -u

# 查找特定目录下的文件
slocate "/var/log/*.log"

# 查找多个关键词
slocate "config" | grep -E "(apache|nginx)"

# 查找并限制结果数量
slocate "error" | head -n 10

# 结合其他命令使用
slocate "*.conf" | xargs ls -l

# 查找最近创建的文件(需要先更新数据库)
sudo slocate -u && slocate "*.txt"

📁 split 命令

功能与作用

将大文件分割成多个小文件,常用于处理超大文件或便于传输。

参数详解

参数 说明
-l N 按行数分割(每块 N 行)
-b N 按字节数分割(每块 N 字节)
-d 使用数字后缀(如 x00, x01
-a N 设置后缀长度(如 -a 2 表示两位数字)

使用示例

bash 复制代码
# 每1000行分割一次access.log文件
split -l 1000 access.log part_

# 每1MB分割一次大文件
split -b 1M largefile.zip chunk_

# 使用数字后缀分割文件
split -d -b 500K data.bin piece_

# 设置后缀长度为3位
split -a 3 -l 500 bigfile.txt segment_

# 指定前缀名进行分割
split -l 1000 logfile.txt log_part_

# 按照文件大小分割并使用数字后缀
split -d -b 2M video.mp4 video_chunk_

# 分割并指定输出目录(需要配合其他命令)
mkdir splits && split -l 1000 data.txt splits/part_

# 显示分割过程
split -v -l 1000 file.txt

# 分割二进制文件
split -b 1024k binary_file.bin bin_part_

# 分割并保留原文件名的一部分作为前缀
cp large_file.txt temp.txt && split -l 500 temp.txt lf_

💡 分割后的文件默认前缀为 xaa, xab, xac... 若需自定义前缀,可指定输出名。


🔄 tee 命令

功能与作用

将标准输入同时输出到标准输出和一个或多个文件中,常用于管道中记录日志。

参数详解

参数 说明
-a 追加到文件末尾(不覆盖)
-i 忽略中断信号

使用示例

bash 复制代码
# 输出到终端并保存到文件
cat config.txt | tee log.txt

# 追加内容到文件而不覆盖
echo "new entry" | tee -a logfile.txt

# 同时写入多个文件
ls -la | tee file1.txt file2.txt

# 在管道中记录中间结果
ps aux | grep nginx | tee debug.txt | wc -l

# 忽略中断信号
command | tee -i output.txt

# 结合重定向使用
date | tee -a log.txt > /dev/null

# 多级tee使用
echo "test" | tee first.txt | tee second.txt | cat

# 使用tee进行调试
find /etc -name "*.conf" | tee found_files.txt | wc -l

# 清空文件并写入新内容
echo "header" | tee newfile.txt

✅ 实现"边看边存"的效果,适合调试和日志采集。


🧹 tmpwatch 命令

功能与作用

删除指定目录下超过指定时间未使用的文件,常用于清理临时文件。

参数详解

参数 说明
-f 强制删除(忽略权限问题)
-r 递归删除子目录中的文件
-m 时间单位为分钟
-h 时间单位为小时
-d 时间单位为天

使用示例

bash 复制代码
# 删除/tmp目录中超过7天未访问的文件
tmpwatch 7d /tmp

# 强制递归删除/var/tmp中24小时以上的文件
tmpwatch -f -r 24h /var/tmp

# 删除/root/tmp中超过30分钟的文件
tmpwatch -m 30 /root/tmp

# 仅删除普通文件,不删除目录
tmpwatch 7d -f /tmp

# 删除/home/user/cache中超过2小时的文件
tmpwatch -h 2 /home/user/cache

# 显示将要删除的文件但不实际删除(测试模式)
tmpwatch -t 7d /tmp

# 删除特定用户拥有的旧文件
tmpwatch 7d --user username /tmp

# 删除空目录
tmpwatch -d 7 --folders /tmp

# 结合find命令使用更精确的条件
find /tmp -type f -mtime +7 -delete

# 清理系统缓存目录
tmpwatch 1d /var/cache

⚠️ 注意:该命令会直接删除文件,请谨慎使用。


📄 touch 命令

功能与作用

创建空文件或更新文件的时间戳(访问时间、修改时间)。

参数详解

参数 说明
-t YYYYMMDDhhmm[.ss] 设置特定时间戳
-c 不创建文件,仅更新时间戳
-a 仅更新访问时间
-m 仅更新修改时间
-r FILE 使用参考文件的时间戳

使用示例

bash 复制代码
# 创建一个新的空文件
touch newfile.txt

# 更新现有文件的时间戳为当前时间
touch existing.txt

# 设置特定时间戳
touch -t 202301011200 report.txt

# 仅更新访问时间
touch -a document.pdf

# 仅更新修改时间
touch -m script.sh

# 不创建文件(如果不存在)
touch -c possibly_missing_file.txt

# 使用参考文件的时间戳
touch -r reference.txt target.txt

# 同时创建多个文件
touch file1.txt file2.txt file3.txt

# 设置微秒级时间戳(如果有支持)
touch -t 202301011200.30 precise_time.txt

# 批量更新一组文件的时间戳
touch *.log

# 创建隐藏文件
touch .hidden_config

🔍 可用于模拟文件更新或触发某些基于时间的脚本逻辑。


🔐 umask 命令

功能与作用

设置用户创建文件或目录时的默认权限掩码,控制新文件的默认权限。

参数详解

参数 说明
000 全部权限(默认)
022 所有者可读写,组和其他只读
077 仅所有者可读写(最安全)
-p 显示当前 umask 值
-S 以符号形式显示umask值

使用示例

bash 复制代码
# 查看当前umask值
umask

# 设置默认权限为755(目录)和644(文件)
umask 022

# 设置最严格的权限(仅所有者可读写)
umask 077

# 以符号形式显示umask
umask -S

# 临时改变umask值
umask 002 && touch testfile.txt

# 在脚本中使用umask
#!/bin/bash
umask 027
mkdir private_dir
touch private_file.txt

# 恢复默认umask
umask 022

# 显示并设置umask
umask -p 027

# 根据需要设置不同的umask值
umask 007  # 组内共享文件
umask 077  # 私人文件

# 查看umask对文件权限的影响
umask 022
touch demo.txt
ls -l demo.txt  # 应该是-rw-r--r--

📌 新建文件默认权限 = 666 - umask,新建目录默认权限 = 777 - umask


🔎 whereis 命令

功能与作用

查找二进制文件、源代码文件和帮助文档的位置,基于系统数据库快速定位。

参数详解

参数 说明
-b 仅搜索二进制文件
-m 仅搜索手册页
-s 仅搜索源代码文件
-u 查找未安装的程序
-B 指定二进制文件搜索目录
-M 指定手册页搜索目录
-S 指定源代码搜索目录

使用示例

bash 复制代码
# 查找gcc的二进制文件、源代码和手册页位置
whereis gcc

# 仅查找二进制文件
whereis -b python

# 仅查找手册页
whereis -m vim

# 仅查找源代码文件
whereis -s bash

# 查找未安装的程序
whereis -u nonexistent_program

# 在指定目录中查找二进制文件
whereis -B /usr/local/bin -f custom_script

# 在指定目录中查找手册页
whereis -M /usr/share/man -f mycommand

# 在指定目录中查找源代码
whereis -S /usr/src -f myprogram

# 同时指定多个搜索目录
whereis -B /usr/bin -M /usr/share/man -S /usr/src -f program_name

# 查找多个程序的相关文件
whereis ls ps grep

# 显示详细信息
whereis -l

# 查找特定类型的文件并显示路径
whereis -b java | xargs ls -l

# 结合其他命令使用
whereis httpd | xargs file

# 查找程序但排除某些目录
whereis -B /bin -M /usr/man -f program_name

⚠️ 数据库由 makewhatis 更新,建议定期刷新。


🔍 which 命令

功能与作用

查找可执行文件在 PATH 环境变量中的路径,通常用于定位命令的实际位置。

参数详解

参数 说明
-a 列出所有匹配的路径
-V 显示版本信息
-s 静默模式,不输出结果

使用示例

bash 复制代码
# 查找python的路径
which python

# 列出所有名为grep的命令路径
which -a grep

# 静默模式检查命令是否存在
if which curl > /dev/null 2>&1; then
    echo "curl is installed"
else
    echo "curl is not installed"
fi

# 查找多个命令的路径
which ls ps top

# 显示详细信息
which -V

# 检查命令是否存在并执行
if command=$(which node); then
    echo "Node.js found at: $command"
    $command --version
else
    echo "Node.js not found"
fi

# 查找命令并验证其可执行性
cmd_path=$(which docker)
if [ -x "$cmd_path" ]; then
    echo "Docker is executable at: $cmd_path"
else
    echo "Docker is not executable or not found"
fi

# 查找并使用绝对路径执行命令
$(which python3) -c "print('Hello from Python')"

# 在脚本中使用which进行错误处理
EDITOR=$(which vim || which nano || which vi)
if [ -n "$EDITOR" ]; then
    echo "Using editor: $EDITOR"
else
    echo "No suitable editor found"
fi

# 查找命令并创建别名
GIT_PATH=$(which git)
if [ -n "$GIT_PATH" ]; then
    alias git="$GIT_PATH"
    echo "Git alias created"
fi

💡 若命令不在 PATH 中,which 返回空。


总结以上是Linux系统中最重要的文件管理命令的完整汇总,从基础的文件操作(cp、mv、rm)到高级的文件查找(find、locate)、权限管理(chmod、chown)、系统工具(tmpwatch、slocate)等,涵盖了日常系统管理和维护的各个方面。这些命令广泛应用于 Linux 文件管理、日志处理、权限控制等场景,建议结合实际操作练习掌握。

相关推荐
小年糕是糕手6 小时前
【C++同步练习】模板初阶
服务器·开发语言·前端·javascript·数据库·c++·改行学it
Spirited_Away6 小时前
修改请求头插件迁移manifest V3记录
前端·chrome
VekiSon7 小时前
Linux系统编程——进程进阶:exec 族、system 与工作路径操作
linux·运维·服务器
博语小屋7 小时前
Socket UDP 网络编程V2 版本- 简单聊天室
linux·网络·c++·网络协议·udp
YJlio7 小时前
[鸿蒙2025领航者闯关] 鸿蒙 6 实战:给“支付/账单页”加上 AI 防窥 + 超级隐私模式兜底 + 方舟引擎性能优化
服务器·笔记·学习
Sammyyyyy7 小时前
Django 6.0 发布,新增原生任务队列与 CSP 支持
数据库·后端·python·django·sqlite·servbay
一个平凡而乐于分享的小比特7 小时前
Linux 内核设计中的核心思想与架构原则
linux·架构·linux设计思想
BullSmall7 小时前
Shell脚本波浪号避坑指南
linux·bash
luoyayun3617 小时前
Linux下安装使用Claude遇到的问题及解决方案
linux·claude