「sudo /bin/ls %s %foo」はどういう意味ですか?

「sudo /bin/ls %s %foo」はどういう意味ですか?

上記のコマンドを理解しようとしています。

sudo /bin/ls %s %file_path
  1. それは何を%するのでしょうか? 何らかの代替メカニズムでしょうか?

  2. sudo /bin/lsをするのですか?

答え1

bashスクリプトの%はアンカーを意味しますが、プログラムによってその役割が異なる場合があります。パラメータの一部または別の。 のためにls何もしません。sudoの場合はいくつかのことを行いますが、このコンテキストではそうではありません。私には意味がわかりません...このコマンドは単に(rootとして)実行しようとするだけです。記録によると、実行する必要はほとんどありません。lsルートとして、ファイル名が通常のユーザーによってアクセスできない場所はほとんどありません。ls) はディレクトリ %s と %foo でファイルを検索し、「ls は %s にアクセスできません: そのようなファイルまたはディレクトリはありません」という結果を返します。%foo の場合も同様です。(ディレクトリ %s は、自分で作成しない限り、存在できません)

スクリプトでは、以下の操作を行います。

からhttp://wiki.bash-hackers.org/syntax/pe:

アンカーさらに、式を「アンカー」することもできます。# (ハッシュマーク) は、式が文字列の先頭部分と一致することを示し、% (パーセント記号) は末尾部分と一致することを示します。

MYSTRING=xxxxxxxxxx
echo ${MYSTRING/#x/y}  # RESULT: yxxxxxxxxx
echo ${MYSTRING/%x/y}  # RESULT: xxxxxxxxxy

(コードが行っていることは、最初または最後の「x」を「y」と交換することです)

関連情報