我想通過bash代碼管道文件名到eog。Bash:管道到eog
這是我的代碼:ls | grep "sample" | head -1
其中sample是所需文件的名稱。
我很難弄清楚如何將輸出管道連接到eog。
我試着將上面代碼的輸出存儲到一個變量,然後將該變量傳遞給eog失敗。
有什麼建議嗎?
我想通過bash代碼管道文件名到eog。Bash:管道到eog
這是我的代碼:ls | grep "sample" | head -1
其中sample是所需文件的名稱。
我很難弄清楚如何將輸出管道連接到eog。
我試着將上面代碼的輸出存儲到一個變量,然後將該變量傳遞給eog失敗。
有什麼建議嗎?
eog(「侏儒的眼睛」)不會讓你管道文件進入它。您必須提供文件名作爲命令行參數。
如果只有一個匹配的文件名,你可以只需鍵入:
eog *sample*
但是,這將有一個顯示在當前目錄中名稱包含單詞sample
所有文件的效果。這不是我清楚你爲什麼會想到的第一個字母,例如文件,以顯示一個,但你可以這樣寫:
eog $(ls *sample* | head -n1)
你可能更願意找到一個更具體的模式,雖然。
謝謝。你的解決方案和@linuts的解決方案都可以工作。 – mundomug
可以說,比從ls
解析輸出有時會出錯(例如空格或換行符的文件名),所以你可以嘗試下:
find . -iname '*sample*' -exec eog '{}' \; -quit
或限制到當前目錄
find . -maxdepth 1 -iname '*sample*' -exec eog '{}' \; -quit
上面會找到任何文件包含什麼「樣本」(不區分大小寫 - 使用-name
爲區分大小寫),並在其上運行eog
- 和第一賽後將退出,所以只能打開第一個文件。
什麼是'eog'?一份文件?一個程序?爲了我的錢,將代碼編寫爲shell腳本並使其可執行;如果失敗了,請將其作爲功能。 –
只是爲了澄清:你是否想用文件名作爲參數調用eog,還是要將文件名寫入eog的stdin?我不認爲後者會完成任何事情。 – sepp2k
@JonathanLeffler:[Eye of GNOME](http://projects.gnome.org/eog/),一個圖像查看器。 – hammar