次のbashコマンドで、!#(感嘆符ハッシュ)、!$:r:r(感嘆符ドルコロンr)、!#:t(感嘆符ハッシュコロンt)とはどういう意味ですか?

次のbashコマンドで、!#(感嘆符ハッシュ)、!$:r:r(感嘆符ドルコロンr)、!#:t(感嘆符ハッシュコロンt)とはどういう意味ですか?

Nagiosパッケージをインストールしようとしましたが、ガイドで奇妙なbash拡張機能が見つかりました。ここ。拡張が何を意味するのかを理解するのに役立つ人はいますか? Wikiリンクは将来の参照にも役立ちます。

root@z:~> wget http://mathias-kettner.de/download/check_mk-1.1.7i5.tar.gz
root@z:~> tar zxvf !#:t
root@z:~> chown -R root:root !$:r:r && chmod -R o-w !$:r:r && cd !$:r:r
root@z:~/check_mk-1.1.7i5> ./setup.sh

ベストアンサー1

これらはすべてbash歴史的拡張キーワード。シェル履歴から行を選択し、その行の一部を再挿入します(おそらく修正後)。あなたがリンクしたサイトではこれについて合理的に説明していますが、すべての内容を説明するわけではありません。

tar zxvf !#:t

実際には意味がありません。!#これまでに入力した行を選択しましたが、tar zxvfそれらのどれも再利用したくありません。しなければならない

tar zxvf !$:t

!$指定されたURLである前の行の最後の部分()を選択し、wgetファイル名の部分(:t、tailを意味します - 技術的には、最後のディレクトリ区切り文字の後に残された部分として/URLとうまく機能します)を取得します。 。

それから

chown -R root:root !$:r:r

前の行の最後の部分を選択し、ファイル拡張子を削除します(:r厳密に言えば、最後の部分以降のすべて.を含めて削除.)。これにより、ディレクトリ名が提供されます(Tarballには、Tarballのデフォルト名と同じ名前のディレクトリが含まれていると仮定します)。 )).chmodコマンドもcd同じ方法で進行します。

おすすめ記事