如何在 git 存储库中找到双向 Unicode 控制字符?
How to find Bidirectional Unicode control characters in git repo?
我在 NPM 上有一个包,显示它包含 socket.dev 报告的“双向 unicode 控制字符”。
我找到了这个问题的答案 。
我用过:
git grep -oP "[^\x00-\x7F]*"
它在二进制文件中找到了一些匹配项,所以我从 .gitattributes 中删除了所有二进制标志,现在我只有 __tests__
目录中的文件,其中包含 ANSI 文件和一张图像,但这些文件未发布到 NPM。
找到这些“双向 unicode 控制字符”的正确方法是什么?
perl
一班
perl -CSD -ne 'print "$ARGV: $_" if /\p{Bidi_Control}/' file1 file2 ...
将打印出包含双向控制字符的给定 UTF-8 编码文件的行。
不幸的是,git grep -P
使用的 PCRE 不支持接近 perl 正则表达式所支持的 unicode 属性级别的任何地方。不过,您可以明确搜索控制字符:
$ git clone https://github.com/jcubic/jquery.terminal.git
$ cd jquery.terminal
$ git grep -IP '(*UTF)[\x{061C}\x{200E}\x{200F}\x{202A}-\x{202E}\x{2066}-\x{2069}]'
js/jquery.terminal-src.js: "‎": "<U+200E>",
js/jquery.terminal-src.js: "‏": "<U+200F>",
-I
选项跳过二进制文件。
(取自 perluniprops 的控制字符列表)。
我在 NPM 上有一个包,显示它包含 socket.dev 报告的“双向 unicode 控制字符”。
我找到了这个问题的答案
我用过:
git grep -oP "[^\x00-\x7F]*"
它在二进制文件中找到了一些匹配项,所以我从 .gitattributes 中删除了所有二进制标志,现在我只有 __tests__
目录中的文件,其中包含 ANSI 文件和一张图像,但这些文件未发布到 NPM。
找到这些“双向 unicode 控制字符”的正确方法是什么?
perl
一班
perl -CSD -ne 'print "$ARGV: $_" if /\p{Bidi_Control}/' file1 file2 ...
将打印出包含双向控制字符的给定 UTF-8 编码文件的行。
不幸的是,git grep -P
使用的 PCRE 不支持接近 perl 正则表达式所支持的 unicode 属性级别的任何地方。不过,您可以明确搜索控制字符:
$ git clone https://github.com/jcubic/jquery.terminal.git
$ cd jquery.terminal
$ git grep -IP '(*UTF)[\x{061C}\x{200E}\x{200F}\x{202A}-\x{202E}\x{2066}-\x{2069}]'
js/jquery.terminal-src.js: "‎": "<U+200E>",
js/jquery.terminal-src.js: "‏": "<U+200F>",
-I
选项跳过二进制文件。
(取自 perluniprops 的控制字符列表)。