簡體   English   中英

為什么 ack over ssh 不起作用?

[英]Why does ack over ssh not work?

我有一個簡單的 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 進入服務器並運行它時,這很完美,但是當我在一個命令中使用它時,它不起作用:

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

這似乎永遠凍結或運行:我沒有輸出並且命令永遠不會結束。 有人知道為什么這對 ack 不起作用嗎?

當 ack 在終端中運行時,它的行為可能會有所不同。 嘗試使用 -t 參數

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

當 ack 檢測到 stdin 不是終端(tty 設備)時,它將嘗試從 stdin 而不是給定的文件/文件夾讀取文本以進行搜索。 這就是當您通過 ssh 運行它時會發生的情況,stdin 將連接到 ssh 連接,這看起來不像終端(tty)來確認。

ssh的 -t 參數會分配一個 tty 並將其連接到您運行的程序的 stdin/out,然后 ack 會認為它在終端中運行,而是使用文件/文件夾參數進行搜索。 http://github.com/beyondgrep/ack2/issues/659

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM