gem list rails
用于匹配开始与“rails”(和the documentation still claims it works that way)的所有内容,但在某些时候它开始匹配包含的所有内容在名称的任何地方使用rails。这可能会变得荒谬,因为有(现在我写这个,但我确信它实际上按小时计算)2,764项与“rails”相匹配的项目:
gem list rails --remote | wc -l
2764
Rubygems可以默认只返回完全匹配吗?我没有看到任何commandline switches that force an exact match。可能是~/.gemrc
中的设置?
显然我可以通过将输出连接到其他实用程序来实现这一点,但每次你想要(例如)检查宝石的最新版本时都会感到很痛苦,而且速度要慢得多,并迫使你停下来思考一个细节(IMO)会分散您正在处理的任何问题。
gem list rails --remote | grep '^rails '
有没有一种方法可以将其设为默认值?
答案 0 :(得分:8)
您基本上是在命令行上输入正则表达式,所以
gem list -r ^rails$
无需管道即可进行精确搜索。我使用的是rubygems 2.0.6和2.4.5,它适用于两个版本。
但是,我无法找到任何可以放入.gemrc的内容。您可以轻松地为最常见的情况设置包装器shell脚本。答案 1 :(得分:2)
如果您想搜索以“rails”开头的宝石,可以使用以“^”开头的搜索字符串:
gem list ^rails+ --remote
我已尝试使用版本1.8.24的rubygems list
,其行为如文档中所述,但对于rubygems 2.2.1,您将不得不使用此版本。
答案 2 :(得分:0)
似乎他们在版本2.7.3或其附近添加了一个选项。我在2.5.1中没有。
http://guides.rubygems.org/command-reference/#gem-list
-e, --exact - Name of gem(s) to query on matches the provided STRING
如果您使用的是Windows,则必须使用REGEX的引号,否则它将无法正常工作。
gem list "^pg$" --remote --all