Theo mô tả của @ssssteffff, với mv *
, shell đang thực hiện mở rộng ký tự đại diện từ các tệp trong thư mục hiện tại. Tuy nhiên, hành vi của mv
lệnh phụ thuộc vào số lượng đối số *
mở rộng. Nếu có nhiều hơn hai đối số, thì đối số cuối cùng phải là một thư mục:
mv [OPTION]... SOURCE... DIRECTORY
Vì thế,
Tôi đã tạo 5 tệp
$ touch 1 2 3 4 5
$ ls
1 2 3 4 5
$ mv *
mv: target ‘5’ is not a directory
$ ls
1 2 3 4 5
Bây giờ nếu tôi tạo một thư mục là tham số cuối cùng để mở rộng thẻ đại diện, thì:
$ mkdir 6
$ mv *
$ ls
6
$ ls 6
1 2 3 4 5
Bạn nên kiểm tra lại xem đối số cuối cùng là gì.
- Nếu đối số cuối cùng là một thư mục, thì dữ liệu của bạn có lẽ an toàn.
- Nếu tổng số đối số là 2 và đối số cuối cùng là một thư mục, thì dữ liệu của bạn có lẽ cũng an toàn.
- Nếu tổng số đối số là 2 và đối số cuối cùng là một tệp thì chắc chắn tệp thứ hai sẽ biến mất.
Bạn có chắc là bạn đã không nhìn thấy lỗi như thế này không?
mv: target ‘5’ is not a directory`