- 浏览: 1247495 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (729)
- Java_about (144)
- Spring_Hibernate_Struts_OpenSource (27)
- linux_unix (62)
- life_sth (21)
- js_css_html_xml_nodejs (69)
- design_pattens (1)
- Perl (8)
- php_ecshop (4)
- DB_Mysql_Oracle_Informix_SqlServer (43)
- JSTL (8)
- Testing_自动化测试 (42)
- DB_ID_UUID (4)
- SEM_SEO (1)
- english_study_improvement (4)
- SVN_Git (9)
- WebService_SOA_CloudComputing (3)
- E-Commerce (1)
- Lucene_Solr (7)
- others (2)
- Regex (2)
- tomcat_jetty (8)
- zeroc-ice (1)
- java_excel (5)
- ant_maven_gradle (5)
- Unity_VR_AR_C# (2)
- jmeter (1)
- XPath_dom4j (1)
- Ruby_and_Rails (68)
- write_a_rails (17)
- manage_and_team (1)
- getting_real (1)
- ubuntu (20)
- git_and_git_flow (7)
- TODO (1)
- PM_design (2)
- Python_and_Django (8)
- NoSql_mongo_redis (24)
- C/C++ (3)
- vi_vim_gvim (0)
- c#_.Net_windows编程_dll (10)
- Php_and_Yii (9)
- Android_IOS (31)
- Mysql (5)
- sa_运维_network_硬件 (37)
- lua (2)
- c_cpp_VisualStudio (21)
- 硬件-RM-Arduino (6)
最新评论
-
shenkun58:
...
NoClassDefFoundError: Could not initialize springframework.BeanCreationException -
liaojia1:
正解,感谢
NoClassDefFoundError: Could not initialize springframework.BeanCreationException -
flingfox63:
谢谢分享,电脑上有IPV6,导致了Guard启动不了……
ruby错误解决: Address family not supported by protocol - connect(2) -
c39274936:
s = "hello_world_ruby" ...
驼峰格式和下划线格式转换_translation between camel and snake format -
yfj300:
学习了学习了学习了学习了
硬盘基本知识(磁道、扇区、柱面、磁头数、簇、MBR、DBR)
命令行参数
“从命令行开始”。不管 Ruby 用在哪个系统上,无论是超级的科学工作站或者是嵌入式 PDA 设备,你无论如何都要从 Ruby 的解释器开始,这会给我们传递命令 行参数的机会。
Ruby 的命令行由三个部分组成: Ruby 解释器选项,可选的要运行程序的名 字,和可选的用于那个程序的一组参数。
ruby [ options ] [ -- ] [ programfile ] [ arguments ]
Ruby 选项是命令行直接跟在第一个单词后面 的,它不能用连字号,或特殊标志 --( 两个连字号 ) 开头。
如果命令行上未出现文件名,或如果文件名是单个连字号 (-) , Ruby 从标准输入中读取程序源代码。
传递给程序本身的参数跟随在程序名字的后面。例如:
% ruby -w - "Hello World"
打开警告,从标准输入读取程序,并传递双引号字符串 "Hello World" 做为参数。
命令行选项
-0[octal] 0 标志 ( 数 字零 ) 指定记录的 分隔字符 ( ,如果 没有数字跟随 ) 。 -00 指出段落模式:记录由两个连续的缺省 记录分隔字符分隔。 -0777 一次读入整个文件 ( 它像个非法字符 ) 。设置 $/ 。
-a 当使用 -n 或 -p 时的自动分离模式,等价于在每个循环迭代 器上执行 $F = $_.split 。
-C directory 在运行之前修改工作路径。
-c 只检查符号,不运行程序。
-copyright 打印版权信息并退出。
-d, -debug 设置 $DEBUG 和 $VERBOSE 为 true 。这可以用于你的程序的额外追踪。
-e 'command' 执 行做为一行 Ruby 源 码的命令。允许几个 -e ,在同一程序中命令被视做多行。当 -e 出现时,如果程序文件被忽略,在 -e 命令被运行完后中止运行。程序运行时使用 -e 可访问旧的条件中的范围和正则表达式的行为 - 整数范围比较当前输入行号,正式表达式匹配 $_ 。
-F pattern 指定用于 split() 的缺省输入字段分隔符 ($;)( 影响 -a 选项 ) 。
-h, -help 显示一个简短的帮助屏幕。
-I directories 指 定预定义的 $LOAD_PATH($:) 指令。可以有多个 -I 选项。每个 -I 后可有多个用冒号:分隔的指令。在类 Unix 系统上是分号 (;) 。
-i[extension] 以替换形式编辑 ARGV 文件。 ARGV 内的每个文件名,你写入到标准输出的任何东西,都将被回储到那个文件的内容中。如果有扩展名的话,备 份文件会被保留下来。
% ruby -pi. bak –e "gsub(/Perl/, 'Ruby')" *.txt
-K kcode 指定要使用的编码。当 Ruby 使用日语时这个选项很有用。 Kcode 可以是这些当中的一个: e, E for EUC; s, S 对应 SJIS; u, U 对应 UTF-8; or a, A, n, N 对应 ASCII.
-l 自动进行行尾处理;设置 $ 的值为 $/ ,并且对读入的行自动地进行 String#chop! 处理。
-n Assumes a while gets; ...; end loop around your program. For example, a simple grep command could be implemented as
% ruby –n –e "print if /wombat/" *.txt
-p Places your program code within the loop while gets; ...; print; end.
% ruby –p –e "$_.downcase!" *.txt
-r library 在运行前请求给出名字的库。
-S 查看程序文件是否使用了 RUBYPATH 或 PATH 环境变量。
-s Any command-line switches found after the program filename, but before any filename arguments or before a , are removed from ARGV and set to a global variable named for the switch. In the following example, the effect of this would be to set the variable $opt to "electric".
% ruby -s prog -opt= electric ./mydata
-T[level] 设 置安全级别,执行不纯度测试 ( 见 379 页 ) 。 设置 $SAFE 。
-v, -verbose 设置 $VERBOSE 为 true ,打开冗长模式。也打印版本号。在冗长模式中,可打印编译警告。如果命令行上没有指定文件名,则 Ruby 退出。
--version 显 示 Ruby 的版本 信息并退出。
-w 打开冗长模式。与 -v 不同,如果命令行上没有指定文件名则从 标准输入读入程序。我们推荐带 –w 来运行你程序。
-W level 设置警告的级别。可有一个或两个级别 ( 或者没指定级别 ) ,等价于 -w— 给出额外的警告。如果级别为 1 ,运行在标准 ( 缺省 ) 警告级别上。使用 -W0 则不显示警告 ( 包括使用 Kernel.warn 的警告 ) 。
-X directory 在 运行前更改工作目录。类似于 -c directory 。
-x [directory] 从 #!Ruby 行取出文本,如果指定目录的话,并且要修改工作目录。
-y, -yydebug 在 解析器中打开 yacc 调试器。
ARGV
程序名字后面的任何命令行参数都会对你的程序打开全局数组 ARGV 。例如,假设 test.rb 包含了下面程序:
ARGV.each {|arg| p arg }
用下同命令行调用它:
% ruby –w test.rb "Hello World" a1 1.6180
会产生如下输出:
"Hello World"
"a1"
"1.6180"
这是给 C 程序员准备的 —ARGV[0] 是传递给程序的第一个参数,不是程序的名字。当前程序的名字是全局变量 $0 中的变量。注意 ARGV 的所有值都是字符串。
如果你的程序试图从标准输入来读 ( 或使用特殊文件 ARGF ,它 321 页描述 ) , ARGV 内的程序参数将接受文件名,并且 Ruby 会从这些文件中读入。如果你程序带有混合参数和文件名,确信你在从文件读之前倾空了 ARGV 数组。
程序中止
方法 Kernel#exit 中止你的程序,并向操作系统返回一个状态值。虽然,不像一些语言, exit 不立即中止程序。 Kernel#exit 首先引发一个 SystemExit 异常,你可以捕获它, 然后程序执行一系列清除动作,包括运行所有的注册的 at_exit 方法和对象的 finalizer 。参考 500 页的 Kernel#exit 描述。
环境变量
你可以使用预定义的变量 ENV 来访问操作系统环境变量。它像哈希表一样响应一些方法。 [ENV 其实不是哈希表,但如果你需要的话, 你可以使用 ENV#to_hash ,来把它转换到成哈希表 ] 。
ENV['SHELL'] => "/bin/sh"
ENV['HOME'] => "/Users/dave"
ENV['USER'] => "dave"
ENV.keys.size => 34
ENV.keys[0, 7] => ["MANPATH", "TERM_PROGRAM", "TERM", "SHELL",
"SAVEHIST", "HISTSIZE", "MAKEFLAGS"]
当 Ruby 首次启动时要读取一些环境变量值。这些变量修改解释程序的行为,像表 14.1 中显示的。
Table 14.1. Ruby 使用的环境变量 |
|
变量名称 |
描述 |
DLN_LIBRARY_PATH |
用于搜索被动态加载的模块的路径。 |
HOME |
指向用户的主目录。 |
LOGDIR |
Fallback pointer to the user’s home directory if $HOME is not set. Used only by Dir.chdir. |
OPENSSL_CONF |
指定 OpenSSL 的本地配置文件。 |
RUBYLIB |
为 Ruby 程序添加搜索路径 ($SAFE 必须被设置成 ) 。 |
RUBYLIB_PREFIX (Windows only) |
Mangle the RUBYLIB search path by adding this prefix to each component. |
RUBYOPT |
给 Ruby 添加命令行选项,在命令行选项并解析后进行检查 ($SAFE 必须设置成 0) 。 |
RUBYPATH |
指定 –S 选项, Ruby 会搜索路径 ( 缺省值是 PATH) 。 |
RUBYSHELL |
Shell to use when spawning a process under Windows; if not set, will also check SHELL or COMSPEC. |
RUBY_TCL_DLL |
Override default name for TCL shared library or DLL. |
RUBY_TK_DLL |
Override default name for Tk shared library or DLL. Both this and RUBY_TCL_DLL must be set for either to be used. |
写入环境变量
Ruby 程序可以对 ENV 对象进行写操作。在大多数系统上这会 修改相应的环境变量的值。虽然,这种修改是本地的,只针对于这个进程或其随后的子进程。环境变量的种继承在下面例子中说明。一个子进程若修改了一个环境变 量,这个修改会被一个进程继承然后启动。尽管修改对原有的父进程不可见。 ( 这只是证明了它的父进程并不真的知道子进程再做什么。 )
puts "In parent, term = #{ENV['TERM']}"
fork do
puts "Start of child 1, term = #{ENV['TERM']}"
ENV['TERM'] = "ansi"
fork do
puts "Start of child 2, term = #{ENV['TERM']}"
end
Process.wait
puts "End of child 1, term = #{ENV['TERM']}"
end
Process.wait
puts "Back in parent, term = #{ENV['TERM']}"
produces:
In parent, term = xtermcolor
Start of child 1, term = xtermcolor
Start of child 2, term = ansi
End of child 1, term = ansi
Back in parent, term = xtermcolor
Ruby 在哪里找到的它的模块
你使用 require 或 load 来使库模块添加到你的 Ruby 程序内。这些模块中一些应用于 Ruby ,一些你可以安装 Ruby 的应用程序文档 (RAA), 一些是你自己写。 Ruby 是如何找到它们呢?
当 Ruby 构建你的特殊机器时,它会预先确定持有库资料的标准目录。这些依赖于机器。你可以像这样在命令行中确 定它们
% ruby –e 'puts $:'
在典型的 Linux box 上,你或许会找到一些如下面显示的。注意 Ruby1.8 中,这些目录的次序已被修改 — 下面目录依赖于它们的机器。
/usr/local/lib/ruby/site_ruby/1.8
/usr/local/lib/ruby/site_ruby/1.8/i686linux
/usr/local/lib/ruby/site_ruby
/usr/local/lib/ruby/1.8
/usr/local/lib/ruby/1.8/i686linux
site_ruby 目录持有模块和你添加扩展 的模块。依赖于系统的目录 ( 本例中是 i686-linux) 持有可运行的和其它指定给此机器的。所有这些目录被自动地包含在 Ruby 对模块的搜索路径内。
P
P
P
+
P
P
P
发表评论
-
ruby计算平方和开方_n次方n次幂
2022-06-28 21:52 504= = = ruby计算平方和开方 3 ** 2#= ... -
Ruby发送HTTP请求
2015-07-21 18:06 1084Ruby使用HTTP协议发送请求的方法备忘。 好像这 ... -
invalid byte sequence in GBK”问题 invalid byte sequence in UTF-8”问题
2015-07-03 15:11 2718碰见错误: test.rb:8:in `ma ... -
Ruby1.9之字符串内编码和外编码
2015-07-02 17:52 1199这里的文章很不错的么:Rubyist http://ru ... -
DevKit介绍和安装in railsInstaller
2015-05-26 17:01 2566DevKit介绍和安装in railsInstaller ... -
Rails_migrations中使用mysql的bigint
2014-09-30 14:32 924From:http://rubyer.me/blog/468 ... -
Rails外如何启动rails的类自动加载_activates autoloading using ActiveSupport 3.x
2016-06-22 12:08 549The following cod ... -
如何在rails里打开gem里面的类_为何有时候不生效
2014-09-02 21:55 880在rails里面打开某个gem的类,补充一下等等,也 ... -
ruby的加载机制和rails_自动加载机制_对比
2014-09-02 16:51 1486prefer:http://urbanautomat ... -
Rails源码阅读(13)rails中的autoload和ruby的autoload
2014-07-30 17:13 1850Rails源码阅读(13)rails中的autoload和 ... -
Rails中命名路由的区别***_url与***_path
2014-07-29 16:37 1009Rails中命名路由的区别***_url与***_path ... -
ruby_gem安装_切换指定不同的源
2014-07-20 18:09 1089from:http://www.hiceon.com/to ... -
Ruby 的文件操作_不断总结
2014-07-11 11:55 1085一、用文件和目 ... -
Rails源码阅读(12)叫Rails的模块module_Rails常量使用
2014-07-02 09:35 981The module nams "Rail ... -
注册邮件中的链接无host
2014-05-19 14:47 580在注册邮件中用命名路由的xxx_url不起作用,导致注 ... -
每个命令都有bundle exec的麻烦
2014-04-18 17:33 1344问题: 每次都得搞这个东西bundle exec放在 ... -
关于favicon.ico的报错:RoutingError
2014-03-31 14:45 1858错误: ActionController::Routin ... -
rbenv_安装太慢_解决办法
2014-03-31 13:51 2076rvm做了很多“不为人知”的事情,而且做的太 ... -
配置sunspot tomcat结合sunspot_rails
2014-02-26 10:58 794这个sunspot的东西还是有不少缺点的。 ht ... -
RubyOrRails_使用技巧_收集
2013-11-09 14:39 1003#link_to not working in sc ...
相关推荐
Ruby图灵机描述这是一个打包成命令行工具的图灵机解释器。 我通过在网络上以我想要的方式轻松实现的大部分代码拼凑起来,然后添加一些额外的参数和选项。安装gem install ruby-tm用法在终端中运行tm以获得基本帮助。...
拍简单应用程序的命令行参数解析。描述Clap 是一个可以与您的命令行应用程序捆绑在一起的小型库。 它涵盖了基于传递的标志或参数执行代码的简单情况。用法使用 Clap 很简单:只需传递ARGV和标志的散列,它就会根据...
Cukesparse解析命令行参数,并从config / task.yml文件设置默认参数。 例如,请在下面的示例配置中查看选项的完整列表: test_task: feature_order: ['features/featureOne', 'features/featureTwo', 'features/...
Ruby脚本的集合,适合那些住在命令行中的人。 股票查找器/货币转换器/天气/电影搜索 安装/设置 轻松将所有脚本安装为 gem install jake - scripts 库存搜索-返回当前库存信息 加密货币搜索-返回当前的加密货币价格...
这是的ruby端口, 是最初用python编写的的选项解析器。 0.5.0版中的新功能: 如果重复(a-la ssh -vvv ),则对可重复的标志和命令进行计数。 带有参数的可重复选项将累积到列表中。 optparse和argparse如何根据...
“Ruby API和命令行客户端。 命令行用法 此项目的唯一动机是从命令行捕获待办事项的快速方法。 因此,我选择了一个非常短的命令名称ru (通常我永远不会允许自己这样做)。 所有参数都用空格连接,并用于调用“记住...
如果您未指定任何命令行参数,则脚本将在脚本的主目录中搜索所有swift文件。 您可以指定任意数量的命令行参数,这些参数应该是现有的目录或文件路径。 将以递归方式在目录中深度搜索快速文件。 教程: 注意: 该...
η规则读取 行政⇒ Ruby 有一个交互式命令行。 在终端中,输入irb 。 ⇒ 要查找您的 Ruby 版本,请输入ruby --version ; 或在 Ruby 脚本中: RUBY_VERSION # ⇒ 2.3.7# In general, use backtics `⋯` to call ...
安装使用以下命令将其安装为 gem: $ gem install esgob或者将此行添加到您的应用程序的 Gemfile 中: gem 'esgob' 然后执行: $ bundle命令行使用没有任何参数, esgob工具将显示命令列表: Commands: esgob ...
构建命令行应用程序,例如: Defaults = { :verbose => false } Applix.main(ARGV, Defaults) do handle(:one) do |*args, opts| if opts[:verbose] puts "arguments: #{args.inspect}" puts "options: #{...
必需的命令行参数: -g, --group Java 库的Maven 组标识符 -n, --name Java 库的名称 -v, --version Java 库的版本 -u, --uber-gem 创建一个包含所有 Java 依赖项的 gem。 (构建瘦宝石有问题。) 可选的命令行...
需要一个命令行参数作为搜索词 对于搜索播客档案有用 例子Ruby版本ruby focus_web_search.rb“ Windows防火墙” links.txt内容: Result: topic found in episode #1056 Java版本javac FocusedWebSearch.java java...
您好,我是 Claide,您的命令行工具助手。 我出生于对简单选项和命令解析器的需求,同时仍然提供了一个API,可让您快速创建功能全面的命令行界面。 安装 $ [sudo] gem install claide 用法 有关 CLAide API 的完整...
安装ruby1.8.7或1.9.2。注意selenium-webdriver只支持1.8.7以上的ruby版本; 使用gem安装selenium-webdriver;打开命令行,输入下列代码完成安装。注意,如果你的开发环境需要http proxy的话,请注意在gem命令中...
Ferver = 文件服务器... $ gem install ferver用法您可以从任何目录运行ferver ,只需传入您想要提供文件的目录作为命令行参数,或者留空以使用当前目录。使用当前目录$ ferver使用特定目录例如,要从/Users/rob/Proj
名称main.rb概要说明用于生成命令行程序的类工厂和dsl真正的快速URI http://codeforpeople.com/lib/ruby/ http://rubyforge.org/projects/codeforpeople/ http://github.com/ ahoward / main INSTALL gem inst名称...
cuke_commander gem 提供了一种简单的编程方式来构建用于运行 Cucumber 的命令行。 安装 将此行添加到应用程序的 Gemfile 中: gem 'cuke_commander' 然后执行: $ bundle 或者自己安装: $ gem install cuke...
使用Ruby解释器(2.5.3或更高版本)运行文件ch_digest.rb ,并将源文件和目标文件路径作为命令行参数传递给它。 该程序仅使用Ruby Core和Standard Library组件,不需要安装任何其他gem。 测验 测试环境使用来确保...
remote_syslog2 remote_syslog包含一个或多个日志文件...尽管大多数命令行参数相同,但某些命令行参数的语法略有变化。 默认主机名已被删除。 host配置文件选项或-d调用标志都是必需的。 正在安装 适用于Mac(Darwin
用法ClassBrowser 可以用命令行参数调用,或者,如果没有指定参数,ClassBrowser 将进入其交互模式。 在交互模式下,您可以重复输入与命令行相同的参数。 输入一个空行退出交互模式和程序。 用法:ClassBrowser ...