代码之家  ›  专栏  ›  技术社区  ›  techpeace

ack未命中结果(与grep)

  •  46
  • techpeace  · 技术社区  · 15 年前

    我肯定我误解了ack的文件/目录忽略默认值,但也许有人能帮我解释一下:

    mbuck$ grep logout -R app/views/
    Binary file app/views/shared/._header.html.erb.bak.swp matches
    Binary file app/views/shared/._header.html.erb.swp matches
    app/views/shared/_header.html.erb.bak: <%= link_to logout_text, logout_path, { :title => logout_text, :class => 'login-menuitem' } %>
    mbuck$ ack logout app/views/
    mbuck$
    

    鉴于。。。

    mbuck$ ack -u logout app/views/
    Binary file app/views/shared/._header.html.erb.bak.swp matches
    Binary file app/views/shared/._header.html.erb.swp matches
    app/views/shared/_header.html.erb.bak
    98:<%= link_to logout_text, logout_path, { :title => logout_text, :class => 'login-menuitem' } %>
    

    只是打电话 ack 如果没有选项,则无法在 .bak 但打电话给 --unrestricted 默认情况下为文件。

    更新

    感谢下面的评论,这里是我的新内容 ~/.ackrc

    --type-add=ruby=.haml,.rake
    --type-add=css=.less
    
    4 回复  |  直到 15 年前
        1
  •  52
  •   Joachim Sauer    12 年前

    ack

    引用手册页:

    没有文件选择, ack-grep 只搜索其识别类型的文件。如果你有一个叫做 foo.wango ,和 确认grep 不知道什么是.wango文件, 确认grep 不会搜索的。

    (请注意,我使用的是Ubuntu,其中二进制文件被称为 确认grep

    ack --help-types 将显示ack安装支持的类型列表。

        2
  •  13
  •   Andy Lester    15 年前

    如果您对ack将搜索哪些文件感到困惑,只需添加-f选项。它将列出它找到的所有可搜索的文件。

        3
  •  12
  •   nevets1219    15 年前

    ack --man

    如果你想搜索每个文件, 即使是那些它总是忽略的 核心转储和备份文件,使用

    程序员,为程序员,为 搜索大型代码树。最多 代码库中有很多文件 编译对象文件,源代码管理 花了很多时间去寻找这些 以及从 那些文件。

    搜索它无法识别的东西 只搜索 你想看的东西。

    编辑:如果你看源代码, bak 文件被忽略。

        4
  •  5
  •   Jonathan Hartley Zombie    9 年前

    使我高兴的grep配置在我的.bashrc中如下所示:

    # Custom 'grep' behaviour
    # Search recursively
    # Ignore binary files
    # Output in pretty colors
    # Exclude a bunch of files and directories by name
    # (this both prevents false positives, and speeds it up)
    function grp {
        grep -rI --color --exclude-dir=node_modules --exclude-dir=\.bzr --exclude-dir=\.git --exclude-dir=\.hg --exclude-dir=\.svn --exclude-dir=build --exclude-dir=dist --exclude-dir=.tox --exclude=tags "$@"
    }
    
    function grpy {
        grp --include=*.py "$@"
    }
    

    添加子定制也很容易,正如我在“grpy”中展示的那样,我用它来grep Python源代码。

    像这样定义bash函数比设置GREP\u选项更可取,这将导致从您的登录shell执行GREP的所有行为都不同,包括那些由您运行的程序调用的行为。这些程序可能会对grep出人意料的不同行为感到厌烦。

    我的新函数“grp”和“grpy”故意不使用“grep”的影子,这样我就可以随时使用原始行为。