194、编写一个函数,列出当前工作目录中普通文件、目录、块特殊文件、字符特殊文件、FIFO(命名管道)和符号链接的数量。用两种不同的方式实现:a. 使用 ls -l 输出的首字母来确定文件类型。b. 使用 [[ 表达式 ]] 语法的文件类型条件测试来确定文件类型。
以下是使用Bash实现该功能的代码:
# 方法a:使用ls -l的首字母确定文件类型
count_files_a() {
local ordinary=0
local directory=0
local block=0
local character=0
local fifo=0
local symlink=0
for file in *; do
file_info=$(ls -l "$file" | cut -c1)
case $file_info in
-)
((ordinary++))
;;
d)
((directory++))
;;
b)
((block++))
;;
c)
((character++))
;;
p)
((fifo++))
;;
l)
((symlink++))
;;
esac
done
echo "普通文件数量: $ordinary"
echo "目录数量: $directory"
echo "块特殊文件数量: $block"
echo "字符特殊文件数量: $character"
echo "FIFO数量: $fifo"
echo "符号链接数量: $symlink"
}
# 方法b:使用[[ 表达式 ]]语法的文件类型条件测试
count_files_b() {
local ordinary=0
local directory=0
local block=0
local character=0
local fifo=0
local symlink=0
for file in *; do
if [[ -f "$file" ]]; then
((ordinary++))
elif [[ -d "$file" ]]; then
((directory++))
elif [[ -b "$file" ]]; then
((block++))
elif [[ -c "$file" ]]; then
((character++))
elif [[ -p "$file" ]]; then
((fifo++))
elif [[ -L "$file" ]]; then
((symlink++))
fi
done
echo "普通文件数量: $ordinary"
echo "目录数量: $directory"
echo "块特殊文件数量: $block"
echo "字符特殊文件数量: $character"
echo "FIFO数量: $fifo"
echo "符号链接数量: $symlink"
}
# 调用函数
count_files_a
count_files_b
上述代码定义了两个函数 count_files_a 和 count_files_b ,分别使用两种不同的方法来统计当前工作目录中不同类型文件的数量,并输出统计结果。
195、在Perl中开启警告有哪两种不同的方式?
可以使用 -w 选项和 use warnings 语句这两种方式在Perl中开启警告。
196、数组和哈希之间的区别是什么?
数组是有序的,而哈希是无序的。当将哈希赋值给列表时,键值对会保留,但顺序既不是字母顺序,
也不是插入哈希时的顺序,而是随机的。
197、在以下每个示例中,何时使用哈希(hash),何时使用数组(array)?a. 统计日志文件中每个 IP 地址的出现次数。b. 生成一份报告,列出超出磁盘配额的用户名单。
a. 使用哈希。因为需要将 IP 地址作为键,出现次数作为值来统计,哈希适合存储键值对。
b. 使用数组。只需要列出超出磁盘配额的用户,数组可以按顺序存储这些用户。
198、描述使用单引号和双引号引用字符串的区别。
在 Perl 中,双引号允许 Perl 插入变量并解释特殊字符,如换行符;单引号则不允许插值变量和解释特殊字符,会将引号内的字符原样输出。在赋值和使用包含空格或制表符的值时:
- 双引号可保留空格和制表符,且不阻止变量替换,还能关闭大多数字符的特殊含义;
- 单引号会将所有字符按字面意思解释。
199、编写一个程序,将目录层次结构中所有扩展名为 .ico 的文件复制到主目录下名为 icons 的目录中。(提示:使用 File::Find 和 File::Copy 模块。)
以下是一个使用 Perl 编写的示例程序

503

被折叠的 条评论
为什么被折叠?



