Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用pager制作ruby命令行应用程序?_Ruby_Command Line_Pager - Fatal编程技术网

如何使用pager制作ruby命令行应用程序?

如何使用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/

我正在使用Ruby制作一个命令行工具。它将在屏幕上打印大量文本。目前,我正在使用shell管道(
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