如何解析bash输出中的链接

时间:2009-10-14 10:01:03

标签: linux bash terminal-emulator

假设我们在bash控制台中有这个输出:

$ findgrep RAILS_ENV                                   
./script/munin_stats:7:RAILS_ENV = ENV['RAILS_ENV'] || "development"
./script/munin_stats:12:    dbconfig = dbhash[RAILS_ENV]            
./lib/tasks/juggernaut.rake:4:    @rails_env = ENV["RAILS_ENV"] || "development"                             
./lib/tasks/cruise.rake:19:    ENV['RAILS_ENV'] = 'test'                                                     
./lib/tasks/populate.rake:15:      dumper = MysqlDumper.new(ActiveRecord::Base.configurations[RAILS_ENV])    
./lib/tasks/populate.rake:21:      dumper = MysqlDumper.new(ActiveRecord::Base.configurations[RAILS_ENV])    
./lib/tasks/populate.rake:29:      RAILS_ENV = "test"

如何创建文件名(例如'./script/munin_stats:7')可点击链接(例如Ctrl +单击),这将在我喜欢的编辑器中打开所选文件?

3 个答案:

答案 0 :(得分:1)

这更像是终端模拟器(例如,xterm或gnome-terminal)的功能而不是bash。流行的urxvt终端模拟器(例如apt-get install rxvt-unicode)在Perl中是可扩展的,因此应该可以编写urxvt过滤器来进行选择并根据选择执行编辑器。

默认的“selection-popup”脚本(参见Perl source here)已经识别出何时有文件:选择了数字模式,并提供了将其转换为vi命令的选项,该命令将在右侧打开文件

答案 1 :(得分:0)

Hotwire可以做到这一点。

答案 2 :(得分:0)

如果您不介意使用GUI显示列表,可以尝试zenity:

vi `findgrep RAILS_ENV * | cut -f 1 -d : |  zenity --list --column Files`

注意:如果您显示您(更喜欢)使用的终端模拟器,它可能会很有用。