歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> SHELL編程 >> 向遠程 Shell 傳遞通配符

向遠程 Shell 傳遞通配符

日期:2017/2/28 11:24:00   编辑:SHELL編程


假設您需要列出遠程 home 目錄中所有的 C 源文件。在本地的情況下,您可能會輸入像 ls -l *.c 這樣的命令,所以您可以在 ssh 中嘗試該方法:
可能會出現兩種情況:如果在本地計算機的當前工作目錄中不存在任何 C 文件,那麼 Shell 將返回 zsh: no matches found: *.c;或者,如果當前工作目錄中存在一些 C 文件,而它們在遠程計算機的 home 目錄中卻不存在,那麼遠程計算機的 Shell 可能會返回 ls: whosit.c: No such file or directory。您是不是被弄糊塗了?
問題在於,在發送 ssh 命令之前,本地 Shell 將首先展開 通配符 *。而您所希望的是,在遠程系統中展開這個 *。
要實現這一點,您必須阻止本地 Shell 對通配符進行解釋(前面曾出現過一次這樣的情況)。您可以將 * 放到單引號中,或使用反斜槓 (\) 對星號進行轉義。這樣一來,會將星號作為常規字符傳遞到遠程 Shell,並在遠程計算機的上下文中對其進行解釋。
這裡有兩種不同的方法,可以根據實際情況選擇使用合適的方法
Copyright © Linux教程網 All Rights Reserved