bashで「-」をエスケープする方法[複製]


14

重複の可能性:
Unixツール:ファイルの名前が何かマイナスの場合

これをエスケープする方法を教えてください:

[root @ unix〜]#./-sh
-bash:./-sh:許可が拒否されました
[root @ unix〜]#chmod + x -sh
chmod:無効なモード: `-sh '
詳細については、「chmod --help」を試してください。
[root @ unix〜]#

#chmod a + x "\\-sh" chmod: `\\-sh 'にアクセスできません:そのようなファイルまたはディレクトリはありません
soundhax

回答:


24

を使用し--ます。

chmod +x -- -sh。GNU言語で--は、オプションの終わりを意味するため-sh、オプションとして解析されなくなりました。

[編集]サンプルを追加しました:

カブトムシ:/ home / hennes / test> touch--sh

カブトムシ:/ home / hennes / test> ls -l--sh
-rw ------- 1 hennesユーザー0 2013-01-04 17:20 -sh

カブトムシ:/ home / hennes / test> chmod + x--sh

カブトムシ:/ home / hennes / test> ls -l--sh
-rwx ------ 1 hennesユーザー0 2013-01-04 17:20 -sh

興味深いことに、これはGNU printfでは機能しますが、GNU echoでは機能しないようです。これは動作しますprintf -- -sh。そして、これはしません:echo -n -- -sh
ルーカスポコルニー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.