Linux命令是对Linux系统进行管理的命令。对于Linux系统来说,无论是中央处理器、内存、磁盘驱动器、键盘、鼠标,还是用户等都是文件,Linux系统管理的命令是它正常运行的核心,与之前的DOS命令类似。linux命令在系统中有两种类型:内置Shell命令和Linux命令。本文主要介绍Linux getfattr 命令。

1、命令简介

getfattr:取文件系统对象的扩展属性。

2、命令用法

getfattr [-hRLP] -n name [-e en] 
pathname...
getfattr [-hRLP] -d [-e en] 
[-m pattern] pathname...

3、命令描述

对于每个文件,getfattr命令会显示该文件相关联的文件名和该组的扩展属性的名称(和任选的值)。

这里的文件系统扩展属性,不是我们常说的lsattr命令和chattr命令中文件操作的属性。这里的扩展属性是完全自定义的。扩展属性的支持,不同文件系统对其支持程度不同。

getfattr -d的输出格式如下:

 1:  # file: somedir/
 2:  user.name0="value0"
 3:  user.name1="value1"
 4:  user.name2="value2"
 5:  ...

4、命令选项

选项

描述

-n name, --name=name

dump 已命名扩展属性的值。

-d, --dump

dump与pathname相关的所有扩展属性的值

-e en, --encoding=en

在检索值之后对其进行编码。

en的有效值为"text"、"hex"和"base64"。

编码为文本字符串的值用双引号括起来("),

而编码为十六进制

和base64的字符串则分别以0x和0s作为前缀

-h, --no-dereference

不要遵循符号链接。如果pathname是符号链接,

则检查符号链接本身,而不是链接引用的文件。

-m pattern, --match=pattern

只包含名称与正则表达式模式匹配的属性。

pattern的默认值是"^user\\.", 

-m它包含用户名称空间中的所有属性。

--absolute-names

不要去掉前面的斜杠字符(' / ')。

默认行为是去掉前导斜杠字符。

--only-values

只dump扩展属性值。

-R, --recursive

递归列出所有文件和目录的属性。

-L, --logical

Logical walk, 遵循符号链接。

默认行为是遵循符号链接参数,

并跳过子目录中遇到的符号链接。

-P, --physical

Physical walk, 跳过所有符号链接。

这也会跳过符号链接参数。

--version

打印getfattr版本并退出。

--help

打印说明命令行选项的帮助。

--

命令行选项的结束。


所有剩下的参数都被解释为文件名,即使它们以破折号开头。

5、使用示例

1)如果不设置任何扩展属性,该命令将不会显示任何内容

getfattr -d cjavapy.txt

2)可以使用setfattr命令为文件设置扩展属性,设置了扩展属性后,命令getfatattr将显示如下所示的输出

setfattr -n user.Name1 -v Value1
setfattr -n user.Name2 -v Value2
getfattr -d cjavapy.txt
# file: cjavapy.txt
user.Name1="Value1"
user.Name2="Value2"

3)可以使用-n选项只显示特定的属性

getfattr -n user.Name2 cjavapy.txt
# file: cjavapy.txt
user.Name2="Value2"

推荐文档