Tag: bash

如何使用正确的gemset加载rvm然后执行rake任务

编写一个cds到另一个目录的脚本,加载正确的rvm rvmrc文件,然后允许我执行rake任务。 我有以下脚本在我的计算机上工作,但当其他人将其下载到他们的机器时,他们会收到以下错误“Ruby rvmrc未安装”。 Bundler.with_clean_env do Dir.chdir(“../some_dir”) do puts `source ~/.rvm/scripts/rvm && rvm –with-rubies rvmrc exec — rake some_task` end end 我有最新版本的rvm(他们也是这样),我在mt.lion上 我试过像这样创建一个bash函数…… function foo { [[ -s “$HOME/.rvm/scripts/rvm” ]] && . “$HOME/.rvm/scripts/rvm” && rvm use @my_gemset } 或者,替换此行 rvm –with-rubies rvmrc exec 像…这样的事情 rvm rvmrc load rvm use rvm env –path — ree-1.8.7@some_gemset 但它都没有奏效。 […]

仅当从ruby脚本运行时,Bash for循环才会出现语法错误

我有一个Ruby脚本,可以编排许多其他脚本。 其中一个bash脚本从服务器中提取日志数据,然后ruby脚本会解析它们。 我的bash脚本看起来像这样: #pullLogs.sh for ((x = $2; x <= $3; x++)); do # creates a subdirectory for each server number rsync –progress -rvze ssh name@$ARCHIVE_SERVER:/path/to/log/$logDate.gz $x/ done for ((x = $2; x <= $3; x++)); do cd $x for z in *.gz; do gunzip $z; done cd .. done cd .. 此脚本的作用是从指定的服务器中提取给定日期的日志。 通常有十个服务器,因此脚本将从服务器1拉出,然后从服务器2拉出等等。 如果我从命令行指定所需的日期,则此脚本可以正常工作 […]

.gsub(/ \ … /,“”)。worub(/ \(/,“”)。gsub(/ \)/,“”)。gsub(/ \ localhost /,“”)<=这是少数

我正在编写一个程序,它将从who命令中提取信息并格式化输出。 正常who命令: user ip date (ip) user ip date (ip) user ip date (ip) user ip date (ip) user ip date (ip) user ip date (ip) user ip date (ip) user ip date (ip) user ip date (ip) user ip date (ip) 我对who命令的新看法: user user user user user user user user user user user 为了做到这一点,我不得不用gsub和其他一些东西完全删除数字,整行看起来像这样: […]

以编程方式测试任意用户是否可以访问任意文件

我希望能够编写说明用户soandso可以读取或编辑文件such_and_such测试或规范。 虽然我最终希望这是在RSpec中,但我认为它将全部归结为Bash命令(当然,整齐地包装在Ruby方法中),因为它似乎在Ruby的File类中不可用,或者我看过的其他任何事情。 我一直在寻找Bash中的东西来做这件事,并且找不到任何东西(File类中的任何东西看起来都没用)。 (注意:File.owned? 不能做我想要的,因为它只测试运行Ruby代码的进程是否为所有者,而不是任何任意用户有权编辑或读取,因此它在两个方面有显着差异。) 有没有办法做到这一点,内置到Bash? (或Ruby,或者一些我错过的Ruby gem?)或者我是否需要自己构建一个系统,获取文件的所有者和组信息,以及每个的读取,写入和执行位,然后查找该组的成员(如果so_and_so不是所有者),并通过所有权或组成员身份查看所需的权限是否可用于soandso ? 我目前只关心在类Unix系统上这样做,虽然不依赖于也可以在Windows上运行的Unix shell,这将是一个很好的奖励。 另外,我对测试实际文件感兴趣,所以像FakeFS这样的东西(据我所知)对我没用。 我不是要测试我的Ruby代码如何与文件系统交互,我试图validation是否可以对实际文件和目录执行所有必要的操作。 (同样,)我希望能够指定soandso可以编辑(或读取)文件such_and_such ,而不是指定文件such_and_such由soandso拥有。 这一点的重点不是指定所有权(因为这是一个实现细节,可能需要更改以适应其他要求,例如安全性),但只指定我的应用程序和用户实际需要能够对文件系统执行的操作。

为什么我需要在我的路径中添加〜/ .rbenv / bin?

我读了“ rbenv无法更改全局ruby版本 ”,我需要将~/.rbenv/bin添加到我的PATH以使rbenv工作。 它也在文档中提到但该目录不存在,如下所示: ➜ ~ ls -a ~/.rbenv/ . .. plugins shims version versions 那么为什么我需要在我的路径中添加一个不存在的目录,以便rbenv工作? 编辑: @theTinMan,我尝试卸载并重新安装,但我仍然没有〜/ .rbenv / bin路径。 您在文档中看到它应该在哪里? ➜ ~/D/w/t/underline-test rbenv –version rbenv 1.0.0 ➜ ~/D/w/t/underline-test which rbenv rbenv () { local command command=”$1″ if [ “$#” -gt 0 ] then shift fi case “$command” in (rehash | shell) eval “$(rbenv […]

打开终端时正确的Ruby版本

每次我打开一个终端,我的Ruby版本都是错误的。 我不得不手动执行以下命令: source /usr/local/rvm/scripts/rvm 我读过RVM不会修改.bashrc或.bash_profile但我注意到我的.bashrc最后有: PATH=$PATH:$HOME/.rvm/bin 不仅我自己没有插入,而且rvm的路径是错误的! 我改变了: PATH=$PATH:/usr/local/rvm/bin 我重新打开了一个终端,但Ruby版本总是错的!

如何为所需的Ruby版本设置正确的shebang

我正在使用MacOS x运行Ruby 2.0.0。 出于某种原因,当我在我的本地gitlab上运行git push时,我有一个开头的脚本 #! /usr/bin/env ruby 处理的Ruby版本是ruby1.8.7 ,它破坏了应用程序。 如何才能正确设置这个shebang才能使用Ruby 2.0.0?

在运行Ruby脚本时更改bash终端输出颜色

我想简单地改变我的终端输出颜色,运行一个Ruby脚本,以便stdout以改变的颜色打印,“睡眠”一秒,然后再将其更改。 我知道如何设置颜色,如提示: PS1=”\e[0;36m[\w] \e[m ” 我想我需要编写一个bash函数来执行此操作。 那会是什么样的?

rvm系统范围安装:警告! PATH未正确设置

我在Ubuntu 12.10上的/usr/local/rvm/bin安装了多用户版本的RVM。 当我将Ruby从1.9.3升级到2.0.0时,这似乎导致每当我执行rvm version或类似命令时弹出以下错误消息: $ rvm version Warning! PATH is not properly set up, ‘/usr/local/rvm/gems/ruby-2.0.0-p247/bin’ is not at first place, usually this is caused by shell initialization files – check them for ‘PATH=…’ entries, it might also help to re-add RVM to your dotfiles: ‘rvm get stable –auto-dotfiles’, to fix temporarily in this shell session […]

RVM不断向我的PATH添加目录,然后抛出警告未正确设置PATH

我知道还有很多其他问题可以解决这个问题,但是我找不到任何适用于我的解决方案,所以我发帖以防万一我错过了什么。 使用命令行,当我进入Rails站点目录时,RVM通过在PATH变量的前面添加“Users / username / bin”来改变我的路径,然后它会抛出有关如何正确设置PATH的警告,因为因为rubygem版本不在PATH的第一位。 在更改为ROR目录之前,这是我的$ PATH输出: /Users/username/.rvm/gems/ruby-2.1.1/bin:/Users/username/.rvm/gems/ruby- 2.1.1@global/bin:/Users/username/.rvm/rubies/ruby2.1.1/bin:/Users/username/.nvm/v0.10.18/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/munki:/Users/username/.rvm/bin:/Users/username/.rvm/bin 将目录更改为ROR目录后: /Users/username/bin:/Users/username/.rvm/gems/ruby-2.1.1@rorproject/bin:/Users/username/.rvm/gems/ruby-2.1.1@global/bin:/Users/username/.rvm/rubies/ruby-2.1.1/bin:/Users/username/.rvm/bin:/Users/username/.nvm/v0.10.18/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/munki 我意识到RVM应该改变PATH变量,但为什么要在前面添加“Users / username / bin”? 这是我的.bashrc文件: [[ -s /Users/username/.nvm/nvm.sh ]] && . /Users/username/.nvm/nvm.sh # This loads NVM export PATH=”$PATH:$HOME/.rvm/bin” # Add RVM to PATH for scripting 这是我的.profile文件: export PATH=”$PATH:$HOME/.rvm/bin” # Add RVM to PATH for scripting 和.bash_profile文件: source ~/.profile if [ -f ~/.bashrc […]