web-dev-qa-db-ja.com

cdの「-@」パラメータはどのように機能しますか?

bashのマニュアルページ(およびhelp cd)は、cd-@パラメータ(「それをサポートするシステム上」)をサポートし、「拡張属性を持つファイルをファイル属性を含むディレクトリ」

これを使用した例はありますか? (理想的には、一般的に存在するファイル、または例を作成するためのセットアップを使用します(xattr currneltに精通していません))

どこでサポートされていますか?どこでもxattrsをサポートしていますか、それとももっとカーネルサポートが必要ですか? (つまり、xattrをサポートするバージョンのOSX、Solaris、FreeBSD、Linuxなどで使用できますか)

私の推測では、ファイル、/path/fxattrsがある場合、cd -@ /path/fを実行できます。lsは、xattrsを(エミュレートされた)「ファイル」としてエミュレートされた「ディレクトリ "/path/f? (このため、lsのようなものはbashの外部に存在するため、カーネルにはこのシミュレーションの何らかのサポートが必要であると想定します。つまり、bashは実行できません。エミュレーション)

2

_-@_はSolaris(およびIllumosなどのSolarisベースのシステム)でのみサポートされていると思います。 Solarisでは、拡張属性は直交する名前空間内のファイルと見なすことができます。理論的には、任意のファイル(一般的な意味で、ディレクトリなどを含む)は拡張属性を持つことができ、それ自体が拡張属性などを持つことができます。この属性のフォレストを探索するために、それらをファイルのツリー。これは、_cd -@_が使用するものです(および他のコマンドでは_-@_)。詳細については、 fsattr(5) を参照してください。これは、サポートするファイルシステムに応じて制限できます。たとえば、UFSでは、ディレクトリを属性として使用することはできません。また、属性に属性自体を含めることもできません。

Solarisでは、これがユーザーに表示される方法は次のとおりです。

_~$ touch test
~$ cd -@ test
/proc/1604/fd/6$ ls
SUNWattr_ro  SUNWattr_rw
/proc/1604/fd/6$ touch attribute
_

これにより、「テスト」ファイルに添付された「属性」拡張属性ファイルが作成されます。 _cd -@ attribute_も属性ツリー内で機能し、うさぎの穴を下っていくことができます。

Linux用の同様の拡張属性APIが最近(2019年1月)、特に _fs-verity_ の一部として公開されました。

3
Stephen Kitt