Tag: shell

在ruby脚本中,如何让git打开它的消息编辑器

我目前正在开发一个命令行ruby gem,它可以自动化https://gist.github.com/jbenet/ee6c9ac48068889b0912中讨论的“rebase + no-ff merge”工作流程。 您可以在https://github.com/gsmendoza/git_pretty_accept/tree/git_pretty_accept找到此gem的WIP代码。 gem会做这样的事情: git co master git pull git co pull_request git rebase master git co master git merge –edit –no-ff pull_request git push git branch -d pull_request git push origin:pull_request 当我尝试通过ruby运行这些git命令时, git merge –edit –no-ff pull_request不会像我希望的那样打开git commit消息编辑器。 相反,我认为git只是从编辑器收到一个空白的合并消息,而ruby继续使用脚本的其余部分。 有任何想法吗?

如何创建支持Ruby的shell命令?

我正在创建一个gem,我希望能够在gem中执行一个shell命令来执行一个函数。 在一个更简单的上下文中,我需要创建一个shell脚本,该脚本在触发shell命令时执行带有选项的Ruby函数。 最简单的方法是什么? 例如: $ cow moo 将使用cow命令的脚本获取一个cow gem,并在Ruby gem中执行’moo’function。 如果可以,我还想支持shell中常见的“选项”格式: $ cow -t moo 上面的示例将采用一个选项并在Ruby中应用脚本来处理它(在此示例中-t将打印’moo’两次)。 如果有人能帮助我们,这将是一个很大的帮助。 谢谢!

读取ruby中的所有shell变量

问题: 我在ruby脚本中运行shell脚本作为子进程,运行脚本后我希望有一个选项来检查shell的所有环境变量,包括数组变量。 到目前为止,我想出了: set | awk -F= ‘BEGIN {v=0;} /^[a-zA-Z_][a-zA-Z0-9_]*=/ {v=1;} v==1 && $2~/^[‘\”\$]/ {v=2;} v==1 && $2~/^\(/ {v=3;} v==2 && /’\”$/ && !/’\’\”$/ {v=1;} v==3 && /\)$/ {v=1;} v {print;} v==1 {v=0;} ‘ 哪个非常好只显示变量,包括数组,多行字符串和过滤函数。 但是这并不是一直使用相同的格式,尤其是数组变量在BASH和ZSH中的表示方式不同。 这是我目前的实现: https : //github.com/mpapis/tf/blob/master/lib/tf/environment.rb 题: 有一种简单的方法可以显示在BASH和ZSH /可能的其他shell中持久工作的所有变量。

shell脚本中的cd命令加载目标目录中的rvmrc吗?

当你有类似的东西.. 在projectx中给出一个.rvmrc文件,指定ruby 1.9.2并在我的系统上有两个ruby(ree-1.8.7和ruby1.9.2) #!/bin/bash cd applications/projectx which ruby ruby -v 最后两行输出ree-1.8.7及其路径,这不是我打算使用的。

有没有办法在Ruby中创建一个目录但是排除某些目录?

我想将一个目录全局化以后处理头文件。 但我想排除项目中的一些目录。 现在默认方式是…… Dir[“**/*.h”].each { |header| puts header } 如果它位于排除目录中,则手动检查每个标头条目似乎效率低下。

Sass – 安装时出错

我最近安装了Ruby gem Sass,并且经常将它用于我正在使用的应用程序。 今天我去运行sass –watch scss:css,正如我通常会注意到我得到以下错误: -bash: sass: command not found 然后我尝试运行以下行并获得此输出: ~$ sudo gem install sass ERROR: While executing gem … (Errno::EPERM) Operation not permitted – /usr/bin/sass 在解释shell / bash错误时,我会认为自己是一个新手,有什么可能导致这个问题的建议? 更新 我已经尝试了@ jperelli的建议并得到以下内容(ps我在Mac OS上): ~$ sudo gem update bundler Updating installed gems Updating bundler Fetching: bundler-1.10.5.gem (100%) ERROR: While executing gem … (Errno::EPERM) Operation […]

Ruby 1.8的Shellwords.shellescape实现

虽然1.8.7的构建我似乎有一个backported版本的Shellwords::shellescape ,但我知道这个方法是一个1.9function,并且在早期版本的1.8中肯定不支持。 有没有人知道我能找到哪里,无论是Gemforms还是仅作为一个片段,一个强大的独立实现Bourne-shell命令逃避Ruby?

使用rbenv安装Ruby的最新稳定版本

我想用rbenv安装最新的稳定版本的Ruby。 rbenv本身不会发生此function。 当我在shell中运行命令rbenv install -l时,我得到一长串可用版本。 该列表包含所有类型的条目。 以下是部分列表,以展示格式和多样性: $ rbenv install -l Available versions: 2.0.0-p643 2.0.0-p645 2.1.0-dev 2.1.0-preview1 2.1.0-preview2 2.1.0-rc1 2.1.4 2.1.5 2.1.6 2.2.0-dev 2.2.0-preview1 2.2.0-preview2 2.2.0-rc1 2.2.0 2.2.1 2.2.2 2.3.0-dev jruby-1.7.19 jruby-1.7.20 jruby-9.0.0.0-dev jruby-9.0.0.0+graal-dev jruby-9.0.0.0.pre1 jruby-9.0.0.0.pre2 maglev-1.0.0 maglev-1.1.0-dev maglev-2.0.0-dev mruby-dev mruby-1.0.0 mruby-1.1.0 rbx-2.5.2 rbx-2.5.3 ree-1.8.7-2011.12 ree-1.8.7-2012.01 ree-1.8.7-2012.02 topaz-dev 我的目标是在shell脚本中自动执行命令rbenv install VERSION ,其中VERSION是最高的xxx版本。 换句话说,我需要自动替换列表中以数字开头的最高条目,而不是以-something结尾进入VERSION 。 从这个列表中,我需要2.2.2 […]

Ruby转义ARGV参数或字符串作为shell命令的参数

好吧这让我抓狂: `ls #{“/media/music/Miles Davis”}` 由于“Miles”和“Davis”之间的空间而失败 假设我编写了一个ruby脚本,并且用户将文件路径作为参数传递。 如何将其转义并输入shell-out命令。 是的,是的,我知道,应该避免炮击。 但这是一个人为的例子,我仍然需要这个。 我会做system(“ls”, ARGV[0]) ,但它不会将ls的stdout输出作为字符串返回,这是反引号做得好的。 如何逃避在shellout中插入的内容?

拆分字符串以仅获取前5个字符

我想去位置/var/log/src/ap-kernelmodule-10.001-100 但看起来我的代码必须处理ap-kernelmodule-10.002-100,ap-kernelmodule-10.003-101等。我想用拆分字符串到达​​该位置并执行我的命令。 例如:/var/log/src/ap-kernelmodule-10./ 这个Linux机器的ruby脚本,所以我使用了Mixlib :: ShellOut。 begin cmd = Mixlib::ShellOut.new(“command run here” , :cwd => ‘/var/cache/acpchef/src/ap-kernelmodule-10xxx’) cmd.run_command end