%E3%80%81!%24%3Ar%3Ar%20(%E6%84%9F%E5%98%86%E7%AC%A6%E3%83%89%E3%83%AB%E3%82%B3%E3%83%AD%E3%83%B3%20r)%E3%80%81!%23%3At%20(%E6%84%9F%E5%98%86%E7%AC%A6%E3%83%8F%E3%83%83%E3%82%B7%E3%83%A5%E3%82%B3%E3%83%AD%E3%83%B3%20t)%20%E3%81%AF%E3%81%A9%E3%81%86%E3%81%84%E3%81%86%E6%84%8F%E5%91%B3%E3%81%A7%E3%81%99%E3%81%8B%3F.png)
私はNagiosパッケージをインストールしようとしていたのですが、ガイドでこれらの奇妙なbash拡張を見つけました。ここ誰か、拡張が何を意味するのか教えてくれませんか? ウィキリンクがあれば、今後の参考になります。
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
末尾の 、厳密に言えば最後のディレクトリ区切り文字 の後に残っている部分であり、/
これは URL でうまく機能します) を取得します。
それから
chown -R root:root !$:r:r
は、前の行の最後の部分を選択し、ファイル拡張子 ( :r
— 厳密に言えば、最後の の後の ) をすべて削除します (.
も含む.
)。これにより、ディレクトリ名が生成されます (tarball に、tarball のベース名と同じ名前のディレクトリが含まれていると仮定します)。 コマンドchmod
とcd
コマンドは同じように処理されます。