基本上,我的目标是在进入ROR项目时将rails版本作为提示段打印到终止符(terminal).
我已经找到了一种在terminator中将其显示为自定义段的方法,但我在提取rails版本时遇到了困难.为了提取ROR项目的rails版本,有一个名为Gemfile.lock
的文件,其中有一个ruby Gem列表,以及它为应用程序安装的rails版本.
这就是Gemfile.lock
的样子:
GEM
remote: https://rubygems.org/
specs:
actioncable (7.0.3.1)
actionpack (= 7.0.3.1)
activesupport (= 7.0.3.1)
nio4r (~> 2.0)
websocket-driver (>= 0.6.1)
actionmailbox (7.0.3.1)
actionpack (= 7.0.3.1)
activejob (= 7.0.3.1)
activerecord (= 7.0.3.1)
activestorage (= 7.0.3.1)
activesupport (= 7.0.3.1)
mail (>= 2.7.1)
net-imap
net-pop
....
....
rails (7.0.3.1)
actioncable (= 7.0.3.1)
actionmailbox (= 7.0.3.1)
actionmailer (= 7.0.3.1)
actionpack (= 7.0.3.1)
actiontext (= 7.0.3.1)
actionview (= 7.0.3.1)
activejob (= 7.0.3.1)
activemodel (= 7.0.3.1)
....
....
DEPENDENCIES
bootsnap
capybara
debug
importmap-rails
jbuilder
puma (~> 5.0)
rails (~> 7.0.3, >= 7.0.3.1)
redis (~> 4.0)
selenium-webdriver
....
....
我想提取的Ruby 是 rails (7.0.3.1)
我正在研究一个.zshrc
文件来提取它,到目前为止,我已经提出了这个解决方案:
ver=`awk -F' ' '$1~/^rails/{print $0}' Gemfile.lock`
这将产生以下输出
rails-dom-testing (~> 2.0)
rails-html-sanitizer (~> 1.0, >= 1.2.0)
rails-dom-testing (~> 2.0)
rails-html-sanitizer (~> 1.1, >= 1.2.0)
rails (7.0.3.1)
rails-dom-testing (2.0.3)
rails-html-sanitizer (1.4.3)
rails (~> 7.0.3, >= 7.0.3.1)
正如你所见,有多个Ruby ,其中包括名称rails
.但我只想提取这个gem rails (7.0.3.1)
的版本,其中有一个前导的4个空格字符.
我正在寻找的预期输出就是这样的gem版本:7.0.3.1
不带括号,返回为字符串类型.然后将其存储在一个变量中,然后我将在终端中以自定义提示段的形式打印出来,并使用如下自定义 colored颜色 :
local color="%F{#f7507b}"
# ver = ``
echo "%{$color%}$ver"
其中ver
是存储了rails版本的变量.
我已经试了半天了,但运气不好,我也试过用[[:blank:]]
&;\s
但它在这种情况下不起作用.我也try 过使用rails -v
,它输出我们所在项目目录的rails版本,但在少数情况下也会出现错误,用户没有安装Gemfile
中指定的ruby版本.
无论用户是否在其系统中安装了特定版本的ruby或rails,输出都应给出应用程序使用的rails版本.所以我认为从Gemfile.lock
中提取rails版本是唯一的方法.但是,如果你有任何其他方法来解决这个问题,我洗耳恭听!