How does cd's “-@” parameter work?
Clash Royale CLAN TAG#URR8PPP
bash
's man page (and help cd
) mentions that cd
supports a -@
parameter ("on systems that support it") to "present a file with extended attributes as a directory containing the file attributes"
Is there an example of using this? (Ideally with a commonly present file, or with a setup to create an example (I'm not familiar enough with xattr
currnelt))
Where is it supported? Everywhere supporting xattr
s, or is there more kernel support needed? (i.e. Can I use it with an xattr
-supporting version of OS X, Solaris, FreeBSD, Linux, etc)
My guess is that if a file, /path/f
has xattr
s I can do cd -@ /path/f
and ls
would then show xattrs as (emulated) "files" in the emulated "directory" /path/f
? (For this, I assume that the kernel need some kind of support for this simulation, since things like ls
live outside bash
, which means that bash
can't be doing the emulation)
bash cd-command xattr
add a comment |
bash
's man page (and help cd
) mentions that cd
supports a -@
parameter ("on systems that support it") to "present a file with extended attributes as a directory containing the file attributes"
Is there an example of using this? (Ideally with a commonly present file, or with a setup to create an example (I'm not familiar enough with xattr
currnelt))
Where is it supported? Everywhere supporting xattr
s, or is there more kernel support needed? (i.e. Can I use it with an xattr
-supporting version of OS X, Solaris, FreeBSD, Linux, etc)
My guess is that if a file, /path/f
has xattr
s I can do cd -@ /path/f
and ls
would then show xattrs as (emulated) "files" in the emulated "directory" /path/f
? (For this, I assume that the kernel need some kind of support for this simulation, since things like ls
live outside bash
, which means that bash
can't be doing the emulation)
bash cd-command xattr
Related: Examples of options to bash cd, eg: cd -Pe@ $directory.
– Stephen Kitt
Feb 27 at 8:21
I triedsetfattr
on WSL and getsetfattr: test: Operation not supported
, so I'm assuming I need to try a real Linux to see if I can create an xattr on a file for my own testing... (A random XFS and ext4 filesystem gets the same result with the default mount options) (I know OS X makes extended use of xattrs, so it might be testable there)
– Gert van den Berg
Feb 27 at 8:29
@StephenKitt Useful, but no info on-@
beyond the man page orhelp
output there either...
– Gert van den Berg
Feb 27 at 8:31
add a comment |
bash
's man page (and help cd
) mentions that cd
supports a -@
parameter ("on systems that support it") to "present a file with extended attributes as a directory containing the file attributes"
Is there an example of using this? (Ideally with a commonly present file, or with a setup to create an example (I'm not familiar enough with xattr
currnelt))
Where is it supported? Everywhere supporting xattr
s, or is there more kernel support needed? (i.e. Can I use it with an xattr
-supporting version of OS X, Solaris, FreeBSD, Linux, etc)
My guess is that if a file, /path/f
has xattr
s I can do cd -@ /path/f
and ls
would then show xattrs as (emulated) "files" in the emulated "directory" /path/f
? (For this, I assume that the kernel need some kind of support for this simulation, since things like ls
live outside bash
, which means that bash
can't be doing the emulation)
bash cd-command xattr
bash
's man page (and help cd
) mentions that cd
supports a -@
parameter ("on systems that support it") to "present a file with extended attributes as a directory containing the file attributes"
Is there an example of using this? (Ideally with a commonly present file, or with a setup to create an example (I'm not familiar enough with xattr
currnelt))
Where is it supported? Everywhere supporting xattr
s, or is there more kernel support needed? (i.e. Can I use it with an xattr
-supporting version of OS X, Solaris, FreeBSD, Linux, etc)
My guess is that if a file, /path/f
has xattr
s I can do cd -@ /path/f
and ls
would then show xattrs as (emulated) "files" in the emulated "directory" /path/f
? (For this, I assume that the kernel need some kind of support for this simulation, since things like ls
live outside bash
, which means that bash
can't be doing the emulation)
bash cd-command xattr
bash cd-command xattr
asked Feb 27 at 8:15
Gert van den BergGert van den Berg
1,045616
1,045616
Related: Examples of options to bash cd, eg: cd -Pe@ $directory.
– Stephen Kitt
Feb 27 at 8:21
I triedsetfattr
on WSL and getsetfattr: test: Operation not supported
, so I'm assuming I need to try a real Linux to see if I can create an xattr on a file for my own testing... (A random XFS and ext4 filesystem gets the same result with the default mount options) (I know OS X makes extended use of xattrs, so it might be testable there)
– Gert van den Berg
Feb 27 at 8:29
@StephenKitt Useful, but no info on-@
beyond the man page orhelp
output there either...
– Gert van den Berg
Feb 27 at 8:31
add a comment |
Related: Examples of options to bash cd, eg: cd -Pe@ $directory.
– Stephen Kitt
Feb 27 at 8:21
I triedsetfattr
on WSL and getsetfattr: test: Operation not supported
, so I'm assuming I need to try a real Linux to see if I can create an xattr on a file for my own testing... (A random XFS and ext4 filesystem gets the same result with the default mount options) (I know OS X makes extended use of xattrs, so it might be testable there)
– Gert van den Berg
Feb 27 at 8:29
@StephenKitt Useful, but no info on-@
beyond the man page orhelp
output there either...
– Gert van den Berg
Feb 27 at 8:31
Related: Examples of options to bash cd, eg: cd -Pe@ $directory.
– Stephen Kitt
Feb 27 at 8:21
Related: Examples of options to bash cd, eg: cd -Pe@ $directory.
– Stephen Kitt
Feb 27 at 8:21
I tried
setfattr
on WSL and get setfattr: test: Operation not supported
, so I'm assuming I need to try a real Linux to see if I can create an xattr on a file for my own testing... (A random XFS and ext4 filesystem gets the same result with the default mount options) (I know OS X makes extended use of xattrs, so it might be testable there)– Gert van den Berg
Feb 27 at 8:29
I tried
setfattr
on WSL and get setfattr: test: Operation not supported
, so I'm assuming I need to try a real Linux to see if I can create an xattr on a file for my own testing... (A random XFS and ext4 filesystem gets the same result with the default mount options) (I know OS X makes extended use of xattrs, so it might be testable there)– Gert van den Berg
Feb 27 at 8:29
@StephenKitt Useful, but no info on
-@
beyond the man page or help
output there either...– Gert van den Berg
Feb 27 at 8:31
@StephenKitt Useful, but no info on
-@
beyond the man page or help
output there either...– Gert van den Berg
Feb 27 at 8:31
add a comment |
1 Answer
1
active
oldest
votes
I think -@
is only supported on Solaris (and systems based on Solaris, such as Illumos). On Solaris, extended attributes can be considered as files in an orthogonal name space; in theory, any file (in the general sense, including directories etc.) can have extended attributes, which themselves can have extended attributes, etc. In order to explore this forest of attributes, there are APIs which allow them to be handled as a tree of files, and this is what cd -@
uses (and -@
on other commands). See fsattr(5)
for details. This can be limited depending on the supporting file system; for example UFS doesn’t allow directories to be used as attributes, and doesn’t allow attributes to have attributes themselves.
On Solaris, the way this appears to the user is as you suggest:
~$ touch test
~$ cd -@ test
/proc/1604/fd/6$ ls
SUNWattr_ro SUNWattr_rw
/proc/1604/fd/6$ touch attribute
This creates an “attribute” extended attribute file attached to the “test” file. cd -@ attribute
works too, inside the attribute tree, and one can continue down the rabbit hole.
A similar extended attribute API was floated recently (January 2019) for Linux, notably as part of a discussion on fs-verity
.
Ah, I didin't realise that extended attributes differ that significantly between *nixes... (Other than to a "not enabled" or "not supported" level)
– Gert van den Berg
Feb 27 at 8:37
add a comment |
Your Answer
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "106"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f503271%2fhow-does-cds-parameter-work%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
I think -@
is only supported on Solaris (and systems based on Solaris, such as Illumos). On Solaris, extended attributes can be considered as files in an orthogonal name space; in theory, any file (in the general sense, including directories etc.) can have extended attributes, which themselves can have extended attributes, etc. In order to explore this forest of attributes, there are APIs which allow them to be handled as a tree of files, and this is what cd -@
uses (and -@
on other commands). See fsattr(5)
for details. This can be limited depending on the supporting file system; for example UFS doesn’t allow directories to be used as attributes, and doesn’t allow attributes to have attributes themselves.
On Solaris, the way this appears to the user is as you suggest:
~$ touch test
~$ cd -@ test
/proc/1604/fd/6$ ls
SUNWattr_ro SUNWattr_rw
/proc/1604/fd/6$ touch attribute
This creates an “attribute” extended attribute file attached to the “test” file. cd -@ attribute
works too, inside the attribute tree, and one can continue down the rabbit hole.
A similar extended attribute API was floated recently (January 2019) for Linux, notably as part of a discussion on fs-verity
.
Ah, I didin't realise that extended attributes differ that significantly between *nixes... (Other than to a "not enabled" or "not supported" level)
– Gert van den Berg
Feb 27 at 8:37
add a comment |
I think -@
is only supported on Solaris (and systems based on Solaris, such as Illumos). On Solaris, extended attributes can be considered as files in an orthogonal name space; in theory, any file (in the general sense, including directories etc.) can have extended attributes, which themselves can have extended attributes, etc. In order to explore this forest of attributes, there are APIs which allow them to be handled as a tree of files, and this is what cd -@
uses (and -@
on other commands). See fsattr(5)
for details. This can be limited depending on the supporting file system; for example UFS doesn’t allow directories to be used as attributes, and doesn’t allow attributes to have attributes themselves.
On Solaris, the way this appears to the user is as you suggest:
~$ touch test
~$ cd -@ test
/proc/1604/fd/6$ ls
SUNWattr_ro SUNWattr_rw
/proc/1604/fd/6$ touch attribute
This creates an “attribute” extended attribute file attached to the “test” file. cd -@ attribute
works too, inside the attribute tree, and one can continue down the rabbit hole.
A similar extended attribute API was floated recently (January 2019) for Linux, notably as part of a discussion on fs-verity
.
Ah, I didin't realise that extended attributes differ that significantly between *nixes... (Other than to a "not enabled" or "not supported" level)
– Gert van den Berg
Feb 27 at 8:37
add a comment |
I think -@
is only supported on Solaris (and systems based on Solaris, such as Illumos). On Solaris, extended attributes can be considered as files in an orthogonal name space; in theory, any file (in the general sense, including directories etc.) can have extended attributes, which themselves can have extended attributes, etc. In order to explore this forest of attributes, there are APIs which allow them to be handled as a tree of files, and this is what cd -@
uses (and -@
on other commands). See fsattr(5)
for details. This can be limited depending on the supporting file system; for example UFS doesn’t allow directories to be used as attributes, and doesn’t allow attributes to have attributes themselves.
On Solaris, the way this appears to the user is as you suggest:
~$ touch test
~$ cd -@ test
/proc/1604/fd/6$ ls
SUNWattr_ro SUNWattr_rw
/proc/1604/fd/6$ touch attribute
This creates an “attribute” extended attribute file attached to the “test” file. cd -@ attribute
works too, inside the attribute tree, and one can continue down the rabbit hole.
A similar extended attribute API was floated recently (January 2019) for Linux, notably as part of a discussion on fs-verity
.
I think -@
is only supported on Solaris (and systems based on Solaris, such as Illumos). On Solaris, extended attributes can be considered as files in an orthogonal name space; in theory, any file (in the general sense, including directories etc.) can have extended attributes, which themselves can have extended attributes, etc. In order to explore this forest of attributes, there are APIs which allow them to be handled as a tree of files, and this is what cd -@
uses (and -@
on other commands). See fsattr(5)
for details. This can be limited depending on the supporting file system; for example UFS doesn’t allow directories to be used as attributes, and doesn’t allow attributes to have attributes themselves.
On Solaris, the way this appears to the user is as you suggest:
~$ touch test
~$ cd -@ test
/proc/1604/fd/6$ ls
SUNWattr_ro SUNWattr_rw
/proc/1604/fd/6$ touch attribute
This creates an “attribute” extended attribute file attached to the “test” file. cd -@ attribute
works too, inside the attribute tree, and one can continue down the rabbit hole.
A similar extended attribute API was floated recently (January 2019) for Linux, notably as part of a discussion on fs-verity
.
edited Feb 27 at 9:40
answered Feb 27 at 8:31
Stephen KittStephen Kitt
177k24402480
177k24402480
Ah, I didin't realise that extended attributes differ that significantly between *nixes... (Other than to a "not enabled" or "not supported" level)
– Gert van den Berg
Feb 27 at 8:37
add a comment |
Ah, I didin't realise that extended attributes differ that significantly between *nixes... (Other than to a "not enabled" or "not supported" level)
– Gert van den Berg
Feb 27 at 8:37
Ah, I didin't realise that extended attributes differ that significantly between *nixes... (Other than to a "not enabled" or "not supported" level)
– Gert van den Berg
Feb 27 at 8:37
Ah, I didin't realise that extended attributes differ that significantly between *nixes... (Other than to a "not enabled" or "not supported" level)
– Gert van den Berg
Feb 27 at 8:37
add a comment |
Thanks for contributing an answer to Unix & Linux Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f503271%2fhow-does-cds-parameter-work%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Related: Examples of options to bash cd, eg: cd -Pe@ $directory.
– Stephen Kitt
Feb 27 at 8:21
I tried
setfattr
on WSL and getsetfattr: test: Operation not supported
, so I'm assuming I need to try a real Linux to see if I can create an xattr on a file for my own testing... (A random XFS and ext4 filesystem gets the same result with the default mount options) (I know OS X makes extended use of xattrs, so it might be testable there)– Gert van den Berg
Feb 27 at 8:29
@StephenKitt Useful, but no info on
-@
beyond the man page orhelp
output there either...– Gert van den Berg
Feb 27 at 8:31