Linux lsattr命令介绍
Linux list attributes的缩写,它的作用是列出文件或目录的扩展属性,也就是一些特殊的标志位,用来控制文件或目录的行为。这些属性可以用chattr命令来设置或取消,也可以用lsattr命令来查看。lsattr命令支持多种文件系统,如ext2, ext3, ext4, xfs等。lsattr命令可以帮助你保护重要的文件,防止被误删或修改,也可以优化文件的性能,如压缩、同步、日志等。
Linux lsattr命令适用的Linux版本
lsattr命令是Linux系统的标准命令,几乎所有的Linux发行版都自带了这个命令,你可以在终端中输入lsattr --version
来查看你的系统中的lsattr命令的版本信息。如果你的系统中没有lsattr命令,你可以通过安装e2fsprogs软件包来获取它,这个软件包包含了一些操作ext2/ext3/ext4文件系统的工具,如chattr, dumpe2fs, e2fsck等。不同的Linux发行版可能有不同的安装命令,下面是一些常见的安装命令:
- 在基于Debian的系统中,如Ubuntu, Mint等,你可以使用apt-get命令来安装e2fsprogs软件包,如下:
[linux@bashcommandnotfound.cn ~]$ sudo apt-get update
[linux@bashcommandnotfound.cn ~]$ sudo apt-get install e2fsprogs
- 在基于Red Hat的系统中,如CentOS, Fedora等,你可以使用yum或dnf命令来安装e2fsprogs软件包,如下:
[linux@bashcommandnotfound.cn ~]$ sudo yum update
[linux@bashcommandnotfound.cn ~]$ sudo yum install e2fsprogs
或者
[linux@bashcommandnotfound.cn ~]$ sudo dnf update
[linux@bashcommandnotfound.cn ~]$ sudo dnf install e2fsprogs
- 在基于Arch的系统中,如Manjaro, Antergos等,你可以使用pacman命令来安装e2fsprogs软件包,如下:
[linux@bashcommandnotfound.cn ~]$ sudo pacman -Syu
[linux@bashcommandnotfound.cn ~]$ sudo pacman -S e2fsprogs
Linux lsattr命令的基本语法
lsattr命令的基本语法如下:
lsattr [选项] [文件或目录...]
其中,选项是一些可选的参数,用来控制lsattr命令的行为,如递归列出目录的内容,显示文件的版本号等。文件或目录是要查看属性的对象,可以是一个或多个,如果不指定,则默认为当前目录。如果文件或目录的名称以.
开头,则需要使用-a
选项来显示它们,否则会被忽略。
Linux lsattr命令的常用选项说明
lsattr命令有很多选项,可以用lsattr --help
或man lsattr
来查看它们的完整列表和说明。这里我们只介绍一些最常用的选项,如下:
选项 | 说明 |
---|---|
-a | 显示所有文件和目录,包括以. 开头的隐藏文件和当前目录. 和上级目录.. |
-d | 只显示目录本身的属性,而不是目录中的文件的属性 |
-R | 递归地显示目录和子目录中的所有文件的属性 |
-v | 显示文件的版本号,这个版本号是每次修改文件时自动增加的,可以用来检查文件的一致性 |
-V | 显示lsattr命令的版本信息 |
Linux lsattr命令的实例
下面是一些使用lsattr命令的实例,你可以在你的系统中尝试运行它们,看看效果。
- 查看当前目录中的文件的属性,注意输出中的一些字母,它们表示文件的不同的属性,如
i
表示不可修改,a
表示只能追加,e
表示使用extents存储等,具体的含义可以用man chattr
来查看。
[linux@bashcommandnotfound.cn ~]$ lsattr
-------------e--- ./file1.txt
----i--------e--- ./file2.txt
----a--------e--- ./file3.txt
- 查看指定文件的属性,可以使用绝对路径或相对路径,也可以指定多个文件。
[linux@bashcommandnotfound.cn ~]$ lsattr /etc/passwd /etc/shadow
-------------e--- /etc/passwd
-----S-----e--- /etc/shadow
- 查看当前目录和子目录中的所有文件的属性,使用
-R
选项。
[linux@bashcommandnotfound.cn ~]$ lsattr -R
.:
-------------e--- ./file1.txt
----i--------e--- ./file2.txt
----a--------e--- ./file3.txt
./subdir:
-------------e--- ./subdir/file4.txt
----i--------e--- ./subdir/file5.txt
----a--------e--- ./subdir/file6.txt
- 查看当前目录和子目录中的所有文件和目录的属性,包括隐藏文件和
.
和..
,使用-a
选项。
[linux@bashcommandnotfound.cn ~]$ lsattr -a
-------------e--- ./
-------------e--- ../
-------------e--- ./.bash_history
-------------e--- ./.bash_logout
-------------e--- ./.bash_profile
-------------e--- ./.bashrc
-------------e--- ./file1.txt
----i--------e--- ./file2.txt
----a--------e--- ./file3.txt
-------------e--- ./subdir
./subdir:
-------------e--- ./
-------------e--- ../
-------------e--- ./file4.txt
----i--------e--- ./file5.txt
----a--------e--- ./file6.txt
- 查看目录本身的属性,而不是目录中的文件的属性,使用
-d
选项。
[linux@bashcommandnotfound.cn ~]$ lsattr -d subdir
-------------e--- subdir
- 查看文件的版本号,使用
-v
选项。
[linux@bashcommandnotfound.cn ~]$ lsattr -v file1.txt
131072 -------------e--- file1.txt
- 查看lsattr命令的版本信息,使用
-V
选项。
[linux@bashcommandnotfound.cn ~]$ lsattr -V
lsattr 1.45.6 (20-Mar-2020)
Linux lsattr命令的注意事项
在使用lsattr命令时,有一些注意事项需要了解,如下:
- lsattr命令只能显示和修改扩展属性,不能显示和修改基本属性,如所有者、权限、时间戳等,如果要查看或修改这些属性,可以使用stat或chmod等命令。
- lsattr命令只能作用于支持扩展属性的文件系统,如ext2, ext3, ext4, xfs等,如果文件系统不支持扩展属性,lsattr命令会报错,如下:
[linux@bashcommandnotfound.cn ~]$ lsattr /dev/sda1
lsattr: Inappropriate ioctl for device While reading flags on /dev/sda1
- lsattr命令需要有足够的权限才能查看或修改文件的属性,如果没有权限,lsattr命令会报错,如下:
[linux@bashcommandnotfound.cn ~]$ lsattr file2.txt
lsattr: Permission denied While reading flags on file2.txt
- 如果你在使用lsattr命令时遇到了
bash: lsattr: command not found
的错误,说明你的系统中没有安装lsattr命令,你可以参考上面的安装命令来安装e2fsprogs软件包,或者使用你的系统的软件管理工具来搜索和安装它。
评论区