linux操作系统的文件类型

linux和windows对文件的定义是非常不同的。linux中所有的东西都是文件,普通文件是文件,键盘硬盘也是,网络通信也是。因为linux就是用文件的形式对系统进行管理。linux中的普通文件类型就是我们平常理解的文件。linux中一共有7中文件类型。

1. 普通文件

普通文件是最常见的文件,用来存放用户的数据。比如数据库文件,图片等。
普通的文件用 -f可以进行测试。

test -f /etc/passwd && echo "普通文件"

2. 目录文件

目录文件可以 -d可以进行测试

test -d /etc  && echo "目录文件"

字符设备和快设备,都在 /dev 目录下

ls -l /dev  | head -10
total 0
crw------- 1 root root     10, 235 Nov 13 14:06 autofs
drwxr-xr-x 2 root root         100 Nov 13 22:05 block
drwxr-xr-x 2 root root          60 Nov 13 22:05 bsg
crw------- 1 root root     10, 234 Nov 13 14:06 btrfs-control
drwxr-xr-x 3 root root          60 Nov 13 14:05 bus
lrwxrwxrwx 1 root root           3 Nov 13 14:06 cdrom -> sr0
drwxr-xr-x 2 root root        2680 Nov 13 14:06 char
crw------- 1 root root      5,   1 Nov 13 14:06 console
lrwxrwxrwx 1 root root          11 Nov 13 22:05 core -> /proc/kcore

c 开头的都是字符设备, b 开头的都是快设备, l 开始的是链接文件

3. 字符文件

字符文件,是一种I/O设备文件。字符设备是在传输的过程中,一个字节一个字节的进行传输。最常见的就是键盘和打印机。
字符设备可以用 -c进行测试

test  -c /dev/tty && echo "字符设备

4. 块设备

快设备文件, 也是一种I/O设备文件,读取或者写入数据是"一块",一块的。 最常见的就是硬盘。一个快是多个扇区,通常是4K的大小。
块设备可以用 ** -b ** 进行测试

test -b /dev/vda && echo "快设备"

5. 链接文件

链接文件类似于 windows 上的快捷方式。 理解链接文件需要掌握一个linux的命令 stat

touch a.txt
ln a.txt la.txt
ln -s a.txt sa.txt

创建一个文件 a.txt, 给这个文件创建一个硬链接文件  la.txt, 一个软链接文件 sa.txt

# stat a.txt  | head -4
  File: ‘a.txt’
  Size: 0               Blocks: 0          IO Block: 4096   regular empty file
Device: fd01h/64769d    Inode: 160548      Links: 2
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)


# stat la.txt  | head -4
  File: ‘la.txt’
  Size: 0               Blocks: 0          IO Block: 4096   regular empty file
Device: fd01h/64769d    Inode: 160548      Links: 2
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)


# stat sa.txt  | head -4
  File: ‘sa.txt’ -> ‘a.txt’
  Size: 5               Blocks: 0          IO Block: 4096   symbolic link
Device: fd01h/64769d    Inode: 160550      Links: 1
Access: (0777/lrwxrwxrwx)  Uid: (    0/    root)   Gid: (    0/    root)

硬链接相当于一个文件有两个文件名字, 软链可以理解是快捷方式。
链接文件可以用 ** -l ** 进行测试

 test -L sa.txt && echo "链接文件"

6. 套接文件

套接字用在网络通信
套接文件件可以用 ** -S ** 进行测试

test -S /tmp/mysql.sock && echo "套接文件"

7. 管道文件

创建一个管道文件
mkfifo test.pipe

# 第一个窗口中执行,把内容写入管道中
echo "test tset test" > test.pipe

# 第二个窗口中执行
cat < test.pipe

可以看到, 当执行 echo "test tset test" > test.pipe 程序被阻塞, 执行 cat < test.pipe 后输出结果。这里是两个进程之间的交互。管道通常用于进程之间的信息交互。
管道文件件可以用 ** -p ** 进行判读

test -p test.pipe && echo "管道文件"

发表评论

邮箱地址不会被公开。