行末にファイルをアップロードするための SCP ワンライナー

行末にファイルをアップロードするための SCP ワンライナー

私はよくこうします:

scp some_file [email protected]

私はいつもこの行をコピーして貼り付け、その後アップロードするファイルを変更するには真ん中を編集する必要があるため、これにイライラしています。

この行をいじってファイル名を末尾にしても機能するようにすることは可能ですか?

基本的に、シェルに貼り付けることができる任意の文字列が必要で、ファイル名を入力して、そのファイルをscpサーバーにアップロードします。

答え1

超簡単なスクリプトを作ってみませんか? sayという名前のファイルを編集するだけでmyscp

#!/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の代わりにを使用したことに注意してください。exitこれは対話型シェルによって読み込まれるため、 を使用するとexitシェルが終了するためです。

答え4

いいえ、シェル スクリプトでラップせずにパラメーターの順序を変更することはできませんが、可能です...

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

関連情報