Nếu tôi làm: touch file; mv file /dev/null
như root, /dev/null
biến mất. ls -lad /dev/null
kết quả là không có tập tin hoặc thư mục như vậy. Điều này phá vỡ các ứng dụng phụ thuộc vào /dev/null
như SSH và có thể được giải quyết bằng cách thực hiện mknod /dev/null c 1 3; chmod 666 /dev/null
. Tại sao việc di chuyển một tệp thông thường sang tệp đặc biệt này dẫn đến sự biến mất của /dev/null
?
Để làm rõ, đây là mục đích thử nghiệm và tôi hiểu cách mv
hoạt động của lệnh. Điều tôi tò mò là tại sao ls -la /dev/null
trước khi thay thế nó bằng một tệp thông thường sẽ hiển thị đầu ra dự kiến, nhưng sau đó nó cho thấy /dev/null
nó không tồn tại mặc dù một tệp được cho là được tạo thông qua mv
lệnh gốc và lệnh tệp hiển thị Văn bản ASCII. Tôi nghĩ rằng đây phải là sự kết hợp của ls
hành vi lệnh kết hợp với devfs
khi một tệp không đặc biệt thay thế một ký tự / tệp đặc biệt. Đây là trên Mac OS X, các hành vi có thể khác nhau trên các hệ điều hành khác.
rm
lệnh.
devfs
hài hước về các tệp bình thường. Lạ là bạn đã không nhận được một lỗi từ mv
mặc dù. Làm thế nào về cách này : touch testfile; mv testfile /dev
?
mv
chỉ có thể là nguyên tử trên cùng một hệ thống tập tin.
/dev/null
.