!$ とはどういう意味ですか?

!$ とはどういう意味ですか?

チュートリアルを読んでいますが、次のコマンドを実行すると言われています。

sudo chmod 700 !$

私は慣れていません!$。どういう意味ですか?

ベストアンサー1

デフォルトでは、前のコマンドの最後のパラメーターです。

!$前のコマンドの「終了」です。次の例を考えてみましょう。まず、ファイル内の単語を探します。

grep -i joe /some/long/directory/structure/user-lists/list-15

joeがユーザーリストにある場合、私たちは彼を削除したいと思います。長いディレクトリツリーを引数として使用してviを起動するか、単にvi !$which bashが次に展開されるかのように起動することができます。

vi /some/long/directory/structure/user-lists/list-15

源泉;それでも便利なガイド)


!$このフラグと特殊シェル変数の区別は意味がありません$_。もちろん、両方前のコマンドの最後のパラメータに展開します。しかし!$その間に拡張歴史的拡張$_拡張中パラメータ拡張。これの重要な結果!$は、次を使用するときです。拡大するコマンドが履歴に保存されます。

たとえば、キーストロークを考えてみましょう。

  • echo Foo Enter echo !$ Jar Enter Up Enter;そして

  • echo Foo Enter echo $_ Jar Enter Up Enter

(変更される文字は中間$!とのみです。)$_

前者では、を押すとUpコマンドラインが読み取られるため、echo Foo Jarstdoutに書き込まれる最後の行はですFoo Jar

後者の場合、を押すとUpコマンドラインが表示されますが、値が以前とは異なり、実際にはnowなので、 stdoutに作成さecho $_ barれた最後の行はnowです。$_$_JarJar Jar

別の結果は、_コマンドシーケンスなどの他のパラメータ拡張に使用できることです。

printf '%s '    isomorphism
printf '%s\n'   ${_%morphism}sceles

印刷isomorphism isosceles。しかし、同様の拡張子はありません${!$%morphism}

Bashの拡張手順の詳細については、以下を参照してくださいEXPANSIONman 1 bashシェル拡張オンライン版では)。このHISTORY EXPANSIONセクションは別個です。

おすすめ記事