我常常這樣做:
scp some_file [email protected]
我對此感到惱火,因為我總是複製和貼上這一行,然後我需要編輯中間部分來更改我要上傳的檔案。
是否可以修改這一行,使檔案名稱位於末尾並且仍然有效?
基本上我想要可以貼上到 shell 中的任何字串,然後輸入檔案名稱並將檔案上傳scp
到伺服器。
答案1
為什麼不製作一個超級簡單的腳本呢?只需編輯一個名為 say 的文件,其中myscp
包含
#!/bin/bash
scp $1 [email protected]
然後chmod +x myscp
,以便稍後您可以簡單地
./myscp some_file
這一切都假設您的myscp
腳本位於當前目錄,否則添加路徑
/path/to/myscp some_file
或者更好的是,將位置的路徑以及此腳本和希望將來的腳本添加到您的$path
.
答案2
可能的解決方案之一:
(read FILE_NAME; scp "$FILE_NAME" [email protected]) <<< some_file
答案3
新增到您的 shell 或等效項的末尾.bashrc
:
my_function_name() {
if [ -r "$1" ]; then
scp "$1" [email protected]
else
echo "File does not exists or can not be read, $1" >&2
return 1
fi
}
my_function_name
根據您的需求進行更改。
現在,您只需按名稱呼叫函數並傳遞一個檔案作為參數,它將測試讀取存取權限並scp
使用它運行,或者如果無法讀取它則退出。
請注意,我使用了return
而不是exit
因為它將由您的互動式 shell 加載,並且如果您使用exit
shell 將終止。
答案4
不,如果不將參數包裝在 shell 腳本中,您就無法更改參數的順序,但您可以...
R='[email protected]'
scp some_file $R
scp other_file $R
...