Hệ thống file Linux rất cụ thể và có thể khó hiểu đối với người mới sử dụng hệ thống này. Các file của bạn ở đâu? Tại sao có rất nhiều thư mục và thư mục con đến vậy?
Mục tiêu của bài viết hôm nay là giúp bạn có cái nhìn tổng quan về hệ thống file trên Raspberry Pi (cũng như trên mọi thiết bị Linux).
Hệ thống file Raspberry Pi
Hệ thống file Linux
Điều đầu tiên cần hiểu là Raspberry Pi không sử dụng một cây hệ thống file cụ thể, nó là một tiêu chuẩn từ Linux Foundation có tên là “Filesystem Hierarchy Standard” hay FHS.
Vì vậy, về cơ bản, bạn sẽ tìm thấy cùng một hệ thống phân cấp trên bất kỳ bản phân phối Linux nào.
Đối với những người quan tâm đến điều này, bạn có thể tìm thấy tất cả thông tin trong bài viết: Tìm hiểu hệ thống tập tin và thư mục trên hệ điều hành Linux.
Cây Linux
Hầu hết các sai lầm phổ biến đều xuất phát từ sự hiểu lầm. Vì vậy, như đã nói, bạn có thể xem phân cấp file dưới dạng cây, với / là thư mục root và mỗi thư mục con là một nhánh mới
Trong hình này, tác giả bài viết đã trình bày nó giống một sơ đồ tổ chức hơn.
Các ô màu là thư mục và màu trắng là file. Ở trên cùng có thư mục gốc: /.
Sau đó, home và etc là các thư mục con, hai nhánh lớn pi và user2 là các thư mục con từ home, passwd và hosts là hai file trong etc.
Ví dụ, vị trí file được xác định là /etc/passwd. Vì / và etc là các thư mục mà bạn có thể tìm file, nên bạn có thể thêm / cho mỗi thư mục con và tên file ở cuối.
Ví dụ khác: /home/pi/Documents/MyDoc.doc. Bạn phải đi qua /, home, pi và Documents để tìm nó từ thư mục root.
Định dạng hệ thống file
Trên thực tế, Raspberry Pi Foundation sử dụng phân vùng boot ở định dạng FAT (tin tốt cho những người sử dụng Windows, vì bạn có thể đọc và ghi trên đó) và định dạng Linux cho phân vùng chính (có thể là EXT4).
Bạn có thông tin, nhưng không thể làm gì với nó, vì định dạng được bao gồm trong file image và bạn không thể kiểm soát nó.
Các thư mục hữu ích nhất cần biết
/home
Home là phiên bản ngắn gọn của "home directories". Nó chứa một thư mục con cho mỗi người dùng (ví dụ: /home/pi).
Mỗi thư mục người dùng chứa dữ liệu cá nhân, như tùy chọn, tài liệu, file đã tải xuống, v.v...
Trên Raspberry Pi OS Desktop, bạn sẽ nhận được nhiều thư mục con theo mặc định trong /home/pi:
- Videos
- Downloads
- Music
- Pictures
- Desktop
Về điểm này, nó thực sự gần với Windows.
/root
/root giống như /home cho người dùng admin. Về cơ bản, ta không sử dụng nó trên Raspberry Pi. Tuy nhiên, nếu đăng nhập bằng quyền root, bạn sẽ đi đến thư mục này, với vai trò là thư mục chính.
/etc
Etc chứa tất cả các file cấu hình. Có một số cách giải thích được đưa ra cho tên gọi này, nhưng có lẽ Editable Text Configuration là hợp lý nhất.
Có một số file có sẵn trực tiếp trong /etc, ví dụ:
- /etc/resolv.conf: Nếu bạn muốn thay đổi DNS server
- /etc/crontab: Để lập lịch tác vụ
- /etc/sudoers: Để quản lý người dùng với quyền sudo
Và đối với các cấu hình phức tạp hơn, bạn sẽ thường xuyên tìm thấy một thư mục con cụ thể cho chúng:
- /etc/apache2: Nếu bạn sử dụng apache làm web server, thư mục này chứa tất cả các file cấu hình
- /etc/ssh: điều tương tự cho SSH client và server
- /etc/php: Điều tương tự đối với PHP
Nếu bạn đang tìm kiếm một file cấu hình, nó có thể nằm ở đâu đó trong /etc.
/var
Var là chữ viết tắt của "Variable files". Nó có nghĩa là các file được sửa đổi trong quá trình thực thi chương trình (ví dụ: file nhật ký).
Dưới đây là các thư mục con phổ biến nhất mà bạn cần biết:
- /var/log: Chứa tất cả các file nhật ký hệ thống
- /var/www: Sẽ được sử dụng ngay khi bạn cài đặt web server, đó là thư mục gốc của web server (các file công khai cần phải nằm trong /var/www/html).
- /var/lib/mysql: Điều tương tự đối với MySQL server, nó chứa tất cả các file cơ sở dữ liệu. Nói chung, các công cụ cơ sở dữ liệu khác cũng có file của chúng ở đâu đó trong /var/lib.
- /var/mail: File hộp thư
/usr
/usr chủ yếu chứa các file ứng dụng mà bạn không cần phải động đến (như file nhị phân và thư viện). Lưu các script trong một thư mục như /home/pi/scripts có lẽ là một ý tưởng tốt.
/bin
/bin là một cái gì đó tương tự cho các file nhị phân lệnh cần thiết. Không có thư mục con trong thư mục này, chỉ có các file nhị phân như ping, cp/mv/rm hoặc nano
Trên thực tế, đây là các file nhị phân khả dụng duy nhất khi bạn boot ở chế độ một người dùng. Bất kỳ người dùng nào cũng có thể sử dụng chúng.
/opt
/opt là chữ viết tắt của optional và nó chủ yếu được sử dụng cho các gói ứng dụng tùy chọn.
Ví dụ, nếu bạn cài đặt AlexaPi trên Raspberry Pi của mình, tài liệu hướng dẫn bạn tải xuống các file tại đây, sau đó bạn sử dụng file nhị phân từ /opt/AlexaPi.
/media và /mnt
/media và /mnt là không bắt buộc nhưng bạn có thể sẽ sử dụng chúng khi dùng USB.
Về lý thuyết, /mnt dành cho hệ thống file được mount tạm thời và /media cho phương tiện di động. Vì vậy, với USB, bạn sẽ tạo một thư mục chẳng hạn như /media/usb và mount nó vào thư mục này.
Mẹo và những lỗi thường gặp
Phần này là danh sách các mẹo đến từ những lỗi thường thấy với hệ thống file Linux.
Biết mình đang ở đâu
Hầu hết các vấn đề có thể tránh được nếu bạn biết rõ mình đang ở đâu trong cây file Linux.
Nói chung, đường dẫn hiện tại được viết trong Terminal prompt:
Trong ảnh chụp màn hình này, bạn có người dùng hiện tại, tên thiết bị và đường dẫn hiện tại:
/var/log/apt
Nếu không có nó, bạn có thể sử dụng lệnh sau để tìm nó:
pwd
Đó không phải là chữ viết tắt của “password” mà là “print working directory”. Điều quan trọng là biết bạn đang ở đâu khi sử dụng lệnh.
Ví dụ, nếu bạn sử dụng:
sudo rm -rf *
...để xóa tất cả các file tại vị trí của bạn, tốt hơn là bạn nên chắc chắn về vị trí của mình, vì vị trí sai có thể sẽ phá hủy hệ thống.
cd
Vì vậy, giả sử bạn đang ở /var/log/apt và muốn chuyển đến thư mục chính của mình
Bạn có một số tùy chọn, tất cả đều hoạt động:
cd ..
cd ..
cd ..
cd home
cd pi
cd ../../..
cd home/pi
cd /
cd home/pi
cd /home/pi
Rõ ràng, lệnh cuối cùng là lựa chọn tốt hơn, nhưng tất cả đều hoạt động.
Sai lầm phổ biến nhất là không biết khi nào sử dụng /home/pi hoặc home/pi chẳng hạn. Bạn chỉ có thể bỏ qua dấu gạch chéo đầu tiên nếu bạn đã ở trong thư mục trên cùng.
Nếu đang ở /home, bạn có thể sử dụng:
cd pi/Downloads
Nếu đang ở trong /, bạn có thể sử dụng:
cd var/log
Nói chung, bạn nên luôn sử dụng dấu / đầu tiên, ngay cả khi có phiên bản ngắn hơn khả dụng để cho dễ hiểu.
Ví dụ, nếu bạn đang ở /home/pi, cd Downloads và cd /home/pi/Downloads đều hoạt động, nhưng cd /Downloads thì không. Không có folder Downloads trong thư mục root (/).
Thực thi một script
Đây là vấn đề gần như tương tự. Khi thực thi một script, bạn cần chỉ ra đường dẫn. Nói chung, đường dẫn là một cái gì đó dạng như:
cd /home/pi/scripts
./myscript.sh
Nhưng nếu bạn không muốn sử dụng lệnh đầu tiên và chạy trực tiếp script (trong crontab chẳng hạn), bạn sẽ sử dụng đường dẫn nào nếu đang ở /home/pi?
1. scripts/myscripts.sh
2. ./scripts/myscript.sh
3. home/pi/myscript.sh
4. /home/pi/myscript.sh
Lệnh 1, 2 và 4 hoạt động, nhưng lệnh số 3 thì không .
Điều tương tự cũng đúng đối với bất kỳ điều gì bạn muốn làm với file.
Bạn cần sử dụng đường dẫn tương đối hoặc đường dẫn tuyệt đối (đường dẫn đầy đủ từ root), nhưng đừng kết hợp cả hai.