Linux file types – Lập trình bash shell liệt kê 7 loại file trên Linux

Trên Linux tất cả đều là file – everything is a file là 1 triết lí có từ thời Unix và được Linux ra đời sau này làm theo.

ls -l /dev/sda
brw-rw---- 1 root disk 8, 0 Thg 1  10 22:25 /dev/sda

ls -l /dev/tty1
crw--w---- 1 root tty 4, 1 Thg 1  10 22:25 /dev/tty1

ls -ld /root
drwx------ 13 root root 4096 Thg 1  10 23:43 /root

ls -l /run/dmeventd-client
prw------- 1 root root 0 Thg 1  10 22:25 /run/dmeventd-client

ls -l /root/.bashrc
-rw-r--r-- 1 root root 3105 Thg 12 16 09:23 /root/.bashrc

ls -l /dev/cdrom
lrwxrwxrwx 1 root root 3 Thg 1  10 22:25 /dev/cdrom -> sr0

ls -l /run/systemd/notify
srwxrwxrwx 1 root root 0 Thg 1  10 22:25 /run/systemd/notify

Linux có tổng cộng 7 loại file đó là

block special file hay buffered special file là file quản lí thiết bị có định dạng theo từng khối dữ liệu (block) như đĩa cứng.

character special file hay unbuffered special file là file quản lí thiết bị nhập dữ liệu đầu vào theo từng kí tự như bàn phím, chuột.

directory file là file thư mục chứa các file và thư mục con khác bên trong nó.

named pipe file hay FIFO file hay First In First Out file là file quản lí dữ liệu theo thứ tự như xếp hàng chờ mua đồ, mua vé xem phim á, ai tới trước thì phục vụ trước.

regular file hay ordinary file là file thường như file văn bản, file hình ảnh, file video…

symbolic link file là file liên kết tới file khác như shortcut trên Windows

socket file là file mạng để trao đổi thông tin giữa 2 chương trình như mạng TCP/IP localhost.


Viết chương trình tên file_type_checker.sh để biết file nhập vào là loại gì bằng lập trình Bash shell.

./file_type_checker.sh /dev/sda /dev/tty1 /root /run/dmeventd-client /root/.bashrc /dev/cdrom /run/systemd/notify
/dev/sda là file khối (block)
/dev/tty1 là file kí tự (character)
/root là file thư mục
/run/dmeventd-client là file FIFO (named pipe)
/root/.bashrc là file thường
/dev/cdrom là file liên kết (symlink)
/run/systemd/notify là file socket