linux 文件 utf 8,linux – 如何检测文件在Bash中是否具有UTF-8 BOM?

首先,我们来证明头部实际工作正常:

$printf '\xef\xbb\xbf' >file

$head -c 3 file

$head -c 3 file | hexdump -C

00000000 ef bb bf |...|

00000003

现在,我们来创建一个工作函数has_bom.如果你的grep支持-P,那么一个选项是:

$has_bom() { head -c3 "$1" | LC_ALL=C grep -qP '\xef\xbb\xbf'; }

$has_bom file && echo yes

yes

目前,只有GNU grep支持-P.

另一个选择是使用bash的$’…’:

$has_bom() { head -c3 "$1" | grep -q $'\xef\xbb\xbf'; }

$has_bom file && echo yes

yes

ksh和zsh也支持$’…’,但是这个结构不是POSIX,破折号不支持它.

笔记:

>使用明确的return $?是可选的.默认情况下,该函数将返回与最后一个命令运行的退出代码.

>我已经使用POSIX窗体来定义函数.这相当于bash形式,但是如果您必须在另一个shell下运行该功能,则可以减少处理的问题.

> bash确实接受使用字符 – 在函数名中,但这是一个有争议的功能.我把它换成了更广泛接受的_ (有关此问题的更多信息,请参阅this answer.)> grep make的-q选项是安静的,这意味着它仍然设置一个正确的退出代码,但它不会向stdout发送任何字符.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值