bash 脚本使用 perl 检查文件是二进制还是文本?

bash 脚本使用 perl 检查文件是二进制还是文本?

有人能解释一下这个 bash 脚本片段是如何工作的吗?

is_text_file() { 
    perl -e 'exit((-B $ARGV[0])?1:0);' "$1"
}

谢谢。

答案1

Perl 有文件类型测试运算符,这会在其第一个参数上调用。然后,它使用三元运算符将 True/False 转换为 shell 状态 0 (isTxt) 或 1 (not)。该函数没有显式的返回值,因此它返回 perl 命令本身的状态。 Bash 本身在这里几乎什么也不做。

-T  File is an ASCII or UTF-8 text file (heuristic guess).
-B  File is a "binary" file (opposite of -T).

仔细注意“猜”这个词。

相关内容