最近、Windows 10では、Windows用のLinuxサブシステムイニシアチブの一部としてbashシェルが追加されました。これは一般的に素晴らしいですが、興味深い問題に直面しました。 Windowsファイルシステムは、ファイル名にコロン/その他の特殊文字を許可しません。だから、次のようなことを試すときscp
:
scp user@remote:/path/to/file-2016-09-07_08:45:45.txt .
scpで無効な引数エラーが発生します。これを解決する1つの方法は、特殊文字なしで新しいファイル名を指定することです。しかし、次のようなことをしようとすると面倒です。
scp user@remote:/path/to/file-2016-09-07* .
これは、すべてのファイルで無効なパラメータエラーが発生したためです。_
たとえば、.bashrcファイルにいくつかのコードを入れてscp引数を受け入れ、問題のある各文字をに置き換えることができますか?等しい
scp user@remote:/path/to/file-2016-09-07_08:45:45 file-2016-09-07_08_45_45.txt
しかし、ポータブルですか*
?
答え1
名前を変数に入れると、名前のパラメータ置換を実行できます。ただし、シェルはリモートファイルシステムでscp
「見ることができる」ワイルドカード拡張を「見ない」ので、シェルエイリアスは何の効果もありません。
説明に基づいて要求されたアクションを実行するスクリプトを作成できます。たとえば、次のようになります。
ssh
リモートファイル名のリストを取得するには- 屋根ふき...
- ローカルファイル名を形成し、
- 実際のリモート/ローカルファイルをコピーするには、scpを使用してください。
答え2
元のファイル名に代替 Unicode 文字を使用して、命名問題なくコピーすることもできます。
- コロンの場合は、次を使用します。ハック - 修飾子コロン: U+A789 - Unicode 文字表。
- 疑問符の場合は、以下を使用してください。? - 全角疑問符:U+FF1F - Unicode文字表。
- アスタリスクの場合⁎ - 低アスタリスク: U+204E - Unicode 文字表。