SCP 1行コマンドは、行末でファイルをアップロードします。

SCP 1行コマンドは、行末でファイルをアップロードします。

私はしばしばそうします:

scp some_file [email protected]

常にこの行をコピーして貼り付けてから、アップロードするファイルを変更するには中間部分を編集する必要があるため、迷惑です。

ファイル名が最後に来るようにして、引き続き機能するようにこの行を変更できますか?

デフォルトでは、私はシェルに貼り付けることができる文字列が欲しく、ファイル名を入力してファイルをscpサーバーにアップロードします。

答え1

非常に単純なスクリプトを作成してみてはいかがでしょうか?以下をmyscp含むsayというファイルを編集します。

#!/bin/bash
scp $1 [email protected]

その後、chmod +x myscp後で簡単に

./myscp some_file

これはすべてmyscpスクリプトが現在のディレクトリにあると仮定し、そうでない場合はパスを追加します。

/path/to/myscp some_file

または、より良い方法は、場所へのパスと、このスクリプトと将来のスクリプトを$path

答え2

考えられる解決策の1つ:

(read FILE_NAME; scp "$FILE_NAME" [email protected]) <<< some_file

答え3

シェルまたはそれに対応する端に追加します.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代わりに使用しました。exitexit

答え4

いいえ、パラメータをシェルスクリプトにラップしない限り、パラメータの順序を変更することはできません。ただし、次の作業は可能です。

R='[email protected]'
scp some_file $R
scp other_file $R
...

関連情報