scp 知道目標機器路徑嗎?

scp 知道目標機器路徑嗎?

我最近從 OSX 切換到 Linux 供我個人使用。我有一台運行無頭 Ubuntu 的家庭媒體伺服器,現在有一台運行 Mint 的筆記型電腦。我的習慣是將東西移動到伺服器上scp。過去,在 OSX 上,當我鍵入複製目標時,我會煞費苦心地鍵入路徑中的每個字符,因為如果出於習慣我嘗試按 Tab 鍵完成,機器會變得暴躁,我必須重新開始。然而,我剛剛設定了新電腦的 ssh 金鑰,並且正在將檔案從筆記型電腦傳輸到伺服器的過程中scp,當我不小心按下 Tab 時,令我驚訝的是,它正確地完成了路徑!這是正常行為嗎?為什麼它在 OSX 上的 term2 上不起作用?請注意,我確實在另一個終端機視窗中開啟了與伺服器的連線。

答案1

這是 shell 的命令完成實際操作:它「知道」噹噹前命令列以 開頭時scp,在某些上下文中它需要連接到目標系統(如果可以)以完成那裡的路徑。這可以透明地完成,因為您已經載入了金鑰。

您會看到這通常在/usr/share/bash-completion/completions/scp(如果您使用的是 Bash)或/usr/share/zsh/functions/Completion/Unix/_ssh(對於 Zsh)中實現。

相關內容