小编ulv*_*ver的帖子

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

好的,这让我抓狂:

`ls #{"/media/music/Miles Davis"}`
Run Code Online (Sandbox Code Playgroud)

由于"Miles"和"Davis"之间的空间而失败

假设我写了一个ruby脚本,用户将文件路径作为参数传递.如何将其转义并输入shell-out命令.是的,是的,我知道,应该避免炮击.但这是一个人为的例子,我仍然需要这个.

我会这样做system("ls", ARGV[0]),但它不会将ls的stdout输出作为字符串返回,这是反引号做得好的.

如何逃避在shellout中插入的内容?

ruby bash shell scripting

26
推荐指数
2
解决办法
6527
查看次数

git:在目录树中查找所有未提交的本地存储库

我的文件系统上有一堆(10-15)本地git存储库,但所有文件夹/ data /

我想找到所有/任何具有未经修改的更改的文件夹.我怎样才能做到这一点?有点像递归的全局git status变体.

我认为所有答案都错了.任何git命令只能在git控件下的文件夹中工作.我需要一些东西来搜索这样的文件夹.

所以我写了这个脚本来做到这一点:

#!/usr/bin/env ruby
require 'find'
require 'fileutils'

#supply directory to search in as argument

@pat = ARGV[0]
(puts "directory argument required"; exit) unless @pat
Dir.chdir(@pat)
Find.find(@pat) do |path|
  if FileTest.directory?(path)
    Dir.chdir(path)
    resp = `git status 2>&1`
    unless resp =~ /fatal|nothing to commit \(working directory clean\)/i
      puts "#{'#'*10}\n#{Dir.pwd}#{'#'*10}\n#{resp}"
      Find.prune
    end

    Dir.chdir(@pat)
  end
end
Run Code Online (Sandbox Code Playgroud)

git scripting file

20
推荐指数
5
解决办法
5033
查看次数

为Motorola 68K处理器编写操作系统.我可以效仿它吗?我可以试驾OS开发吗?

下一学期,我需要为Motorola 68K处理器编写基本操作系统,作为课程实验材料的一部分.

是否有使用该处理器的基本硬件设置的Linux仿真器?所以我的合作伙伴和我可以在我们的计算机上更快地调试,而不是在物理上重新启动电路板和东西.

是否有可能将测试驱动的开发技术应用于OS开发?代码主要是汇编和C.尝试试驾这个主要困难是什么?关于如何做的任何建议?

c tdd operating-system 68000 motorola

10
推荐指数
3
解决办法
5109
查看次数

如何在crontab中测试东西

这一直在我身上发生:1)我写了一个脚本(ruby,shell等).2)运行它,它的工作原理.3)把它放在crontab中让它在几分钟内运行,所以我知道它从那里运行.4)它没有,没有错误跟踪,回到步骤2或3 1000次.

当我在crontab中的ruby脚本失败时,我真的不知道为什么它失败导致我输出这样的输出:

ruby script.rb >& /path/to/output
Run Code Online (Sandbox Code Playgroud)

我得到了脚本的输出,但我没有得到它的任何错误,我没有得到来自bash的错误(如果找不到ruby或文件不存在)

我不知道设置了哪些环境变量以及它是否是一个问题.事实证明,要从crontab运行ruby脚本,您必须导出大量的环境变量.

我有没有办法让crontab运行一个脚本,就像我自己从终端运行它一样

调试时,我必须重置计时器并返回等待.非常耗时.

如何更好地测试crontab中的东西或避免这些问题?

ruby unix bash scripting crontab

9
推荐指数
3
解决办法
3701
查看次数

如何找到"必要"方法来提供Ruby mixins的接口?

问题标题的可怕性是我想要解决的问题.例:

在Ruby中,Enumerable是一个界面,在某种意义上我可以实现一些东西并将其记录为:

def myfancymethod(please_pass_me_an_Enumerable_here)
Run Code Online (Sandbox Code Playgroud)

但另一方面,Enumerable是一种对#each作为其中一种方法的接口的放大.如果我有课

class Foo
  def each
    :bar
  end
end
Run Code Online (Sandbox Code Playgroud)

对于那些不熟悉的Ruby,如果混入可枚举模块中的一类,你会得到许多方法,只有依靠#each的方法来提供类似的东西#map,#select等等.

我可以说我的Foo班级是可枚举的或可枚举的兼容或什么?什么术语描述了"成为一个可枚举者需要什么?","你必须拥有#each"的答案

同样,在Ruby中

(Array.new.methods - Object.new.methods).size # 111
Run Code Online (Sandbox Code Playgroud)

这是否意味着伪造一个Array接口,我必须实现111个方法?没办法,但我怎么找出哪些方法是Array的"本质".它只是#[],#[]=而且#size?怎么理解它?

ruby oop inheritance implementation interface

9
推荐指数
2
解决办法
146
查看次数

如何在RDB中实现常规索引和复合索引?

在MySQL或Oracle等数据库中,如何实现索引?我认为常规索引存储为B树,但无法找到任何关于在多列上索引的复合索引.我正在寻找所用数据结构的名称,以便我可以研究它们.

更一般地说,在哪里可以找到有关数据库实现细节的更多此类信息?我将在大学学习这门课程,但我现在很好奇.

mysql database tree implementation data-structures

6
推荐指数
1
解决办法
1665
查看次数

vim取消映射所有内容(完全剥离vim)

爱vim.试过Janus.就像这个想法,但它太慢了,100个插件竞争键绑定.我想真正理解我所做的每个vim配置.

有没有办法"取消映射"所有vim键或尽可能多.删除大多数命令等.这点是我自己的练习.我想要一个超小的地图,设置,绑定子集,所以我可以根据需要逐个添加.

你见过这样的努力吗?

vim editor janus

5
推荐指数
2
解决办法
1324
查看次数

在文本中查找ASCII"箭头"

我试图在文本中找到所有出现的"箭头",所以在

"<----=====><==->>"
Run Code Online (Sandbox Code Playgroud)

箭头是:

"<----", "=====>", "<==", "->", ">"
Run Code Online (Sandbox Code Playgroud)

这有效:

 String[] patterns = {"<=*", "<-*", "=*>", "-*>"};
    for (String p : patterns) {
      Matcher A = Pattern.compile(p).matcher(s);
       while (A.find()) {
        System.out.println(A.group());
      }         
    }
Run Code Online (Sandbox Code Playgroud)

但这不是:

      String p = "<=*|<-*|=*>|-*>";
      Matcher A = Pattern.compile(p).matcher(s);
       while (A.find()) {
        System.out.println(A.group());
      }         
Run Code Online (Sandbox Code Playgroud)

不知道为什么.它通常报告"<"而不是"<===="或类似.

怎么了?

java regex

4
推荐指数
2
解决办法
720
查看次数

学生练习和宠物项目的最佳主持?应该支持铁轨

您好我正在寻找,让我与也许博客和其他物品一起部署一批轨道和非Rails应用最便宜的托管.流量可能相当低,但仍然很重要.

像投资组合网站.

什么是好的托管服务提供商?

hosting portfolio ruby-on-rails

2
推荐指数
1
解决办法
832
查看次数