我知道extname是rb
。
我知道linux file
命令在某些情况下有效。
但是所有不够准确无法决定文件的是ruby脚本
编辑:我想要做的是:我写的红宝石线更适合 使用bash shell脚本如下:
find -name '*.rb' |xargs -n100 cat |grep -v '\s*#' |wc -l
但实际上,我写了一些可执行的ruby脚本,还有其他的,例如
.rake
,Gemfile
Capfile
jbuider
等...
由于
答案 0 :(得分:2)
使用ruby -c
。从手册页:
-c Causes Ruby to check the syntax of the script and exit
这将告诉您文件是否是有效的Ruby脚本而不执行它。如果是,它将打印"语法OK"到STDOUT并以状态码0退出;否则它会向STDERR输出语法错误并以非零代码退出。 (当然,您可以使用I / O重定向来抑制消息,例如&>/dev/null
。)
当然,误报是可能的(事实上文件有效 Ruby并不一定意味着它本来是一个Ruby脚本),但除了非常短的文件外不太可能
答案 1 :(得分:0)
你想要的是不可能的。例如,以下是至少Ruby,PHP,Scala和Perl中有效且语义相同的程序:
print("Hello");
它在Python中也有效,虽然在语义上略有不同:它打印换行符(即打印字符串"Hello\n"
)而其他人不打印(其他人打印"Hello"
没有换行符)
它在ECMAScript中至少在语法上有效,并且在语法上可以等效,假设标准库中存在合适的print
函数。
它可能在很多语言中有效,我能想到的有AmbientTalk,Atomy,CoffeeScript,Converge,Dart,Dylan,E,Elixir,Falcon,Fancy,Groovy,Hack,Io,Ioke, Julia,Lua,Monte,Neko,Pico,Pike和Seph。它也是一个有效的片段,虽然不是一个完整的程序,至少在Perl6,C,C ++,Objective-C,Objective-C ++,D,Java,C♯,Spec♯,Sing♯,M♯,Cω,X♯ ,Kotlin,锡兰,铁锈和铁锈。
除了询问编写它的人之外,无法知道这是否是Ruby程序。