Tại sao hầu hết các lệnh * NIX của tôi (kinh nghiệm chủ yếu là Linux và hiếm gặp với FreeBDS) lại có các hành vi "điên rồ" (không trực quan) như vậy, tức là RẤT khác với hành động GUI "tương đương" sẽ làm.
Ví dụ rõ ràng nhất là lệnh sao chép tệp, cp
, theo mặc định trên Linux, (1) không sao chép các thư mục theo cách đệ quy (rõ ràng là phản trực giác đối với bất kỳ ai đến với trình bao trước đó bằng GUI khi sao chép / dán sao chép một thư mục và mọi thứ trong đó) và (2) theo các liên kết sim (!! ) thay vì chỉ sao chép chúng theo cách chúng (một lần nữa, như bất kỳ người dùng GUI nào cũng mong đợi). Vì vậy, phiên bản "lành mạnh" của cp
mà tôi tưởng tượng nên được mặc định là một cái gì đó như: cp -r
.
(Và một lần nữa, đây không phải là phối cảnh "thiên vị" duy nhất cho người chỉ sử dụng GUI trước đó. Lệnh DOS copy
ví dụ như những gì bạn mong đợi, như tương đương với cp -r
hoặc là cp -ra
...)
Một ví dụ rõ ràng khác là rm
khi nào rm -ri
là điều mà bất kỳ người không có vỏ nào cũng mong muốn là mặc định.
Và nó tiếp tục với 90% của tất cả các lệnh * NIX, nơi nhận được những gì bạn mong muốn theo trực giác là mặc định là điều bạn đạt được bằng cách thêm một vài tùy chọn. Và không phải như những gì người dùng nâng cao mong muốn là mặc định không phải là những gì người dùng mới làm, cho những việc như cp
và rm
Rõ ràng là 99% thời gian cp -r
và rm -r
là những gì bạn cần. Và không phải là nếu mọi thứ chỉ cần duy trì theo cách này để tương thích ngược, vì bạn chỉ cần tạo một vỏ mới và giữ #/usr/bin/oldshell
hoặc một cái gì đó cho cái cũ.
Vì vậy, một lần nữa, câu hỏi sẽ là tại sao các tùy chọn / chuyển đổi lệnh shell NIX mặc định lại quá xa so với những gì bạn trực giác mong đợi? Tôi có thể tìm thấy các lập luận lịch sử về việc mọi thứ diễn ra như thế nào (ngay cả cho mục đích giai thoại) và lý do nào khác sau đó là khả năng tương thích ngược đáng ghét đối với tình trạng hiện tại?
Tìm điều này trên unix.stackexchange thực sự trả lời RẤT NHIỀU câu hỏi của tôi ...