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