linux文件权限中`crw-rw-rw-`中的`c`是什么意思?

big*_*006 5 linux permissions

我运行命令:ll /dev/null并得到这个输出:

crw-rw-rw- 1 root root 1, 3 Feb 19 10:20 /dev/null
Run Code Online (Sandbox Code Playgroud)

我知道d意味着目录。有人可以解释一下c特殊标志的含义吗?

pri*_*ntf 13

它是一个基于字符设备的文件 在 Linux 设备中,例如硬件有两种特点:

  • 字符设备 (c) 是以字符形式传输数据的设备,也称为字节或位,例如鼠标、扬声器等。

  • 块设备 (b) 是在数据块中传输数据的设备,例如 USB、硬盘等。

这些类型的文件通常可以在存储设备文件的 /dev 目录中找到,只需键入ls -lah即可查看各种类型。

如果您正在运行一个不错的 Linux 发行版,则可以使用以下命令获取该信息(加上您可能永远不需要的信息):

info ls
Run Code Online (Sandbox Code Playgroud)

其中包含这个小片段:


文件类型是以下字符之一:
    - 常规文件
    b 块特殊文件
    c字符特殊文件
    C 高性能(“连续数据”)文件
    目录
    D 门(Solaris 2.5 及更高版本)
    l 符号链接
    M 离线(“迁移”)文件(Cray DMF)
    n 网络专用文件 (HP-UX)
    p FIFO(命名管道)
    P 端口(Solaris 10 及更高版本)
    插座
    ? 其他一些文件类型


fra*_*s P 3

在这种情况下,它是“面向字符的设备”(b 表示面向块的设备)...这就是为什么您的示例中的 /dev/null 在重定向方面如此高效,例如

command 2> /dev/null
Run Code Online (Sandbox Code Playgroud)

其实它不是许可而是“定义标记”