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

为什么ssh上的ack不起作用?

  •  2
  • kramer65  · 技术社区  · 7 年前

    我有一个简单的bash脚本,可以通过ssh删除远程服务器上的一些文件夹。基本上是这样做的:

    THE_HOST=12.34.56.78
    ssh me@$THE_HOST "rm /the/file/path/thefile.zip"
    

    ack :

    ack thestring /the/folder/path/
    

    ssh me@$THE_HOST "ack thestring /the/folder/path/"
    

    这似乎是冻结或永远运行:我没有输出,命令永远不会结束。有人知道为什么这对ack无效吗?

    1 回复  |  直到 7 年前
        1
  •  2
  •   nos    7 年前

    ssh -t me@$THE_HOST "ack thestring /the/folder/path/"
    

    当ack检测到stdin不是终端(tty设备)时,它将尝试从stdin而不是给定的文件/文件夹中读取要搜索的文本。当您通过ssh运行stdin时,会发生这种情况,stdin将连接到ssh连接,而ssh连接看起来不像是要进行ack的终端(tty)。

    ssh 相反,分配一个tty并将其连接到您运行的程序之外的stdin/上,ack将认为它在终端中运行,而是使用file/folder参数进行搜索。 看到了吗 http://github.com/beyondgrep/ack2/issues/659