私はよくこうします:
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
...