Aar*_*ron 0 ruby string methods terminal gem
在Ruby gem的默认框架代码.gemspec中,Gem::Specification类中的文件有这一行:
spec.files = `git ls-files -z`.split("\x0") < - 请注意本问题末尾的PS
当我git ls-files -z在终端跑步时,我得到了
.gitignoreGemfileLICENSE.txtREADME.mdRakefiledogeify.gemspeclib/dogeify.rblib/dogeify/version.rb
这个.split("\x0")方法产生什么作为输出?
PS:参考第一行代码,``字符是否允许终端执行代码并将结果与Ruby方法结合起来?
mu *_*ort 11
该混帐(1)帮助说:
$ git help ls-files
[...]
-z
\0 line termination on output.
Run Code Online (Sandbox Code Playgroud)
所以当你说git ls-files -z,它会列出零字节的文件作为文件名之间的分隔符.当你说find ... -print0或使用时,你会看到类似格式的输出xargs -0.您使用零字节作为分隔符的原因是它们不能出现在文件名中,但任何其他分隔符(例如空格)都可以.
然后回到Ruby中,你需要解压缩那个定\x0界列表.如果你string.split("\x0"),你将string分开零字节("\x0")并将部分作为数组返回; 例如:
> "where\x0is\x0pancakes\x0house?".split("\x0")
=> ["where", "is", "pancakes", "house?"]
Run Code Online (Sandbox Code Playgroud)
因此,git ls-files -z为您提供文件名之间零字节的文件列表,并将split("\x0")该字符串分解为文件名数组.
| 归档时间: |
|
| 查看次数: |
1611 次 |
| 最近记录: |