Linux系统下进行文件与目录操作:列出指定目录下的文件信息,并把结果输出到指定文件。 要求文件与目录的读写操作使用Linux系统调用,子目录中的文件不用列示。 程序执行的命令行如: Usage: list [-p <path>] [-i] [-o <file>]
时间: 2024-10-19 13:10:38 浏览: 33
在Linux系统中,你可以通过`ls`命令结合管道(`|`)和`>`运算符来完成这个任务。这里是一个简单的bash脚本示例,它接受三个选项:
1. `-p`:显示隐藏文件(默认不显示)
2. `-i`:仅显示文件的索引节点(适用于查看权限等元信息)
3. `-o <file>`:将结果输出到指定的文件
```bash
#!/bin/bash
# 检查参数
while getopts ":p:i:o:" opt; do
case $opt in
p) show_hidden="$OPTARG"
;;
i) show_info_only="true"
;;
o) output_file="$OPTARG"
;;
\?) echo "Invalid option -$OPTARG" >&2
exit 1
;;
esac
done
shift $((OPTIND -1))
# 如果未提供输出文件,默认输出到stdout
[ -z "$output_file" ] && output_file="-"
# 使用ls命令列出指定路径(不包括子目录)并根据选项过滤信息
if [ "$show_hidden" = true ]; then
ls -lAh $1 | grep -v "/$" # 显示隐藏文件
else
ls -l $1 | grep -v "/$" # 不显示隐藏文件
fi |
# 如果只显示元信息,添加-n(显示索引节点)选项
[ "$show_info_only" = true ] && ls -li $1 | # 输出索引节点
# 将结果定向到输出文件
echo "$@" > "$output_file" || { echo "Error writing to file $output_file"; exit 1; }
# 显示帮助信息
if [ $# -eq 0 ]; then
echo "Usage: list [-p <path>] [-i] [-o <file>]"
fi
```
运行此脚本,例如 `./list /path/to/directory -o result.txt`,会列出 `/path/to/directory` 中的文件信息,并将结果保存到 `result.txt` 文件中。如果省略 `-o` 参数,则结果会被直接打印到终端。
阅读全文
相关推荐


















