Nhiều thứ trên Linux xuất hiện trong hệ thống tệp của bạn, nhưng chúng không thực sự là tệp. Chúng là các tệp đặc biệt đại diện cho thiết bị phần cứng, thông tin hệ thống và những thứ khác - bao gồm trình tạo số ngẫu nhiên.
Các tệp đặc biệt này có thể nằm trong các hệ thống tệp giả hoặc ảo như / dev, chứa các tệp đặc biệt đại diện cho các thiết bị và / proc, chứa các tệp đặc biệt đại diện cho thông tin hệ thống và quy trình.
/ proc
Ví dụ: giả sử bạn muốn tìm thông tin về CPU của bạn. Thư mục / proc chứa một tệp đặc biệt - / proc / cpuinfo - chứa thông tin này.
Bạn không cần lệnh đặc biệt cho bạn biết thông tin CPU của bạn - bạn chỉ có thể đọc nội dung của tệp này bằng bất kỳ lệnh chuẩn nào hoạt động với các tệp văn bản thuần túy. Ví dụ, bạn có thể sử dụng lệnh cat / proc / cpuinfo để in nội dung của tệp này vào thiết bị đầu cuối - in thông tin CPU của bạn tới thiết bị đầu cuối. Bạn thậm chí có thể mở / proc / cpuinfo trong trình soạn thảo văn bản để xem nội dung của nó.
Hãy nhớ rằng, / proc / cpuinfo không thực sự là một tệp văn bản chứa thông tin này - hạt nhân Linux và hệ thống tệp proc đang hiển thị thông tin này cho chúng tôi dưới dạng tệp. Điều này cho phép chúng tôi sử dụng các công cụ quen thuộc để xem và làm việc với thông tin.
- / proc / uptime - Phơi bày thời gian hoạt động của hạt nhân Linux của bạn - nói cách khác, hệ thống của bạn đã hoạt động bao lâu mà không tắt.
- / proc / version - Hiển thị phiên bản hạt nhân Linux của bạn.
/ dev
Trong thư mục / dev, bạn sẽ tìm thấy các tệp đại diện cho thiết bị - cũng như các tệp đại diện cho những thứ đặc biệt khác. Ví dụ, / dev / cdrom là ổ đĩa CD-ROM của bạn. / dev / sda đại diện cho ổ đĩa cứng đầu tiên của bạn, trong khi / dev / sda1 đại diện cho phân vùng đầu tiên trên ổ cứng đầu tiên của bạn.
Muốn gắn đĩa CD-ROM của bạn? Chạy lệnh mount và chỉ định / dev / cdrom làm thiết bị mà bạn muốn gắn kết. Bạn muốn phân vùng ổ cứng đầu tiên của mình? Chạy tiện ích phân vùng đĩa và chỉ định / dev / sda làm đĩa cứng bạn muốn chỉnh sửa. Bạn muốn định dạng phân vùng đầu tiên trên ổ cứng đầu tiên của mình? Chạy lệnh định dạng và yêu cầu nó định dạng / dev / sda1.
/ dev / null, / dev / ngẫu nhiên và / dev / zero
Hệ thống tệp / dev không chỉ chứa các tệp đại diện cho thiết bị vật lý. Dưới đây là ba trong số các thiết bị đặc biệt đáng chú ý nhất mà nó chứa:
- / dev / null - Loại bỏ tất cả dữ liệu được ghi vào đó - nghĩ về nó như một thùng rác hoặc lỗ đen. Nếu bạn từng thấy nhận xét yêu cầu bạn gửi khiếu nại đến / dev / null - đó là cách nói geeky “vứt chúng vào thùng rác”.
- / dev / random - Tạo ra sự ngẫu nhiên khi sử dụng tiếng ồn môi trường. Đó là trình tạo số ngẫu nhiên mà bạn có thể nhấn vào.
- / dev / zero - Tạo ra số không - một dòng số không đổi.
Nếu bạn nghĩ ba tệp này là tệp, bạn sẽ không thấy sử dụng cho chúng. Thay vào đó, hãy nghĩ chúng là công cụ.
Ví dụ, theo mặc định, các lệnh Linux tạo ra các thông báo lỗi và đầu ra khác mà chúng in ra đầu ra tiêu chuẩn, thường là đầu cuối. Nếu bạn muốn chạy một lệnh và không quan tâm đến đầu ra của nó, bạn có thể chuyển hướng đầu ra đó đến / dev / null. Việc chuyển hướng đầu ra của lệnh tới / dev / null sẽ loại bỏ nó ngay lập tức. Thay vì có mọi lệnh thực hiện "chế độ im lặng" riêng của mình, bạn có thể sử dụng phương thức này với bất kỳ lệnh nào.
command > /dev/null
Để xóa nội dung của ổ đĩa cứng bằng cách viết 0 cho nội dung đó, bạn không cần một tiện ích đặc biệt dành riêng cho zero-a drive - bạn có thể sử dụng các tiện ích chuẩn và / dev / zero. Ví dụ: đ lệnh đọc từ một vị trí và ghi vào một vị trí khác. Lệnh sau sẽ đọc số không từ / dev / zero và ghi chúng trực tiếp vào phân vùng đĩa cứng đầu tiên trên hệ thống của bạn, xóa hoàn toàn nội dung của nó.
(Cảnh báo: Lệnh này sẽ xóa tất cả dữ liệu trên phân vùng đầu tiên của bạn nếu bạn chạy nó. Chỉ chạy lệnh này nếu bạn muốn hủy dữ liệu.)
dd if=/dev/zero of=/dev/sda1
Ở đây chúng tôi đang sử dụng dd với các tệp đặc biệt (/ dev / zero và / dev / sda1), nhưng chúng tôi cũng có thể sử dụng dd để đọc và ghi vào tệp thực. Lệnh tương tự hoạt động cả hai để thao tác các thiết bị trực tiếp và làm việc với các tệp.
Làm rõ
Trong thực tế, chính xác hơn để nói rằng "mọi thứ đều là một luồng byte" hơn "mọi thứ đều là một tệp". / Dev / random không phải là tệp nhưng chắc chắn là một luồng byte.Và, mặc dù những thứ này về mặt kỹ thuật không phải là tệp, chúng có thể truy cập được trong hệ thống tệp - hệ thống tệp là "không gian tên" phổ quát, nơi mọi thứ đều có thể truy cập được. Bạn muốn truy cập trình tạo số ngẫu nhiên hoặc đọc trực tiếp từ thiết bị? Bạn sẽ tìm thấy cả hai trong hệ thống tập tin; không cần hình thức giải quyết khác.
Tất nhiên, một số thứ không thực sự là tệp - các quá trình chạy trên hệ thống của bạn không phải là một phần của hệ thống tệp. “Mọi thứ là một tệp” là không chính xác, nhưng rất nhiều thứ hoạt động như các tệp.