如何使用pager制作ruby命令行应用程序?
我正在使用Ruby制作一个命令行工具。它将在屏幕上打印大量文本。目前,我正在使用shell管道(如何使用pager制作ruby命令行应用程序?,ruby,command-line,pager,Ruby,Command Line,Pager,我正在使用Ruby制作一个命令行工具。它将在屏幕上打印大量文本。目前,我正在使用shell管道(may|u app | more)来实现这一点。但我认为最好有一个默认的寻呼机 这就像执行git log时看到的一样。可以使用git--nopage log禁用寻呼机 我在谷歌上做了很多工作,找到了一个gem:,但这似乎有点过头了 经过多次尝试,我目前正在使用shell wrapper: #/bin/bash #rb是核心脚本 #做主要的逻辑和意志 #在屏幕上输出多行文本 #屏风 X射线=$HOME/
may|u app | more
)来实现这一点。但我认为最好有一个默认的寻呼机
这就像执行git log时看到的一样。可以使用git--nopage log禁用寻呼机
我在谷歌上做了很多工作,找到了一个gem:,但这似乎有点过头了
经过多次尝试,我目前正在使用shell wrapper:
#/bin/bash
#rb是核心脚本
#做主要的逻辑和意志
#在屏幕上输出多行文本
#屏风
X射线=$HOME/fdev X射线/X射线.rb
如果[“--nopage”==“$1”];然后
转移
$X射线$*
其他的
$X射线$*|更多
fi
它起作用了。但是有更好的方法吗?你做得对。但是,如果有环境变量,最好使用
more
从$pager
获取一个寻呼机
例如,有些人喜欢
less
而不是more
,还有一些人在这个变量中设置了他们最喜欢的解析器选项。您可以通过调用系统
在Ruby中使用管道,并提供如下选项(以及一个很好的帮助界面):
现在,您可以在命令行上支持
--pager
和--no pager
,这很好。这与我想要的不同。我想在系统中使用寻呼机。
require 'optparse'
pager = ENV['PAGER'] || 'more'
option_parser = OptionParser.new do |opts|
opts.on("--[no-]pager",
"[don't] page output using #{pager} (default on)") do |use_pager|
pager = nil unless use_pager
end
end
option_parser.parse!
command = "cat #{ARGV[0]}"
command += " | #{pager}" unless pager.nil?
unless system(command)
STDERR.puts "Problem running #{command}"
exit 1
end