`bí danh rm = vặt rm -i 'được coi là có hại?


17

Tôi đã đọc cách đây một thời gian (không thể tìm thấy tài liệu tham khảo) rằng sử dụng bí danh như vậy alias rm="rm -i"là rất xấu.

Có bằng chứng lịch sử hoặc giải thích ý nghĩa thông thường cho thực tế đó?

Tôi sẽ tưởng tượng rằng nó mang lại cho người dùng một thói quen xấu là dựa vào dấu nhắc xác nhận để kiểm tra lệnh của anh ta, điều này có thể dẫn đến thảm họa nếu anh ta làm như vậy trên một hồ sơ khác không có bí danh.



Tôi nghĩ rằng tôi đã tìm thấy chủ đề bạn đề cập.
Daniel Beck

1
@Daniel thực sự là câu trả lời được đánh giá cao nhất của chủ đề này đề cập đến thực tiễn tồi tệ này, nhưng nó không thực sự là chủ đề chính của câu hỏi.
Dunaril

Câu trả lời:


36

Bạn đúng.

Thật tệ vì bạn đã quen với nó. Nếu bạn đang ở trên một hệ thống không có nó và bạn rm, nó sẽ ngay lập tức bắt đầu xóa và bạn đang tự hỏi điều gì đang xảy ra.

Nhiều người dùng được sử dụng để SSH vào các hệ thống khác nhau; do đó, việc sử dụng nhiều hệ thống khác nhau, đôi khi không có tài khoản người dùng được cá nhân hóa (bao gồm cả bí danh) được thiết lập, là khá phổ biến.

Thay vào đó, sử dụng ví dụ alias rmi='rm -i'và học cách sử dụng cái đó. Nếu điều đó không được thiết lập trên một hệ thống khác, bạn đã không vô tình xóa các tệp và luôn có thể quay lại gõ lệnh đầy đủ.


4

Giống như @Daniel đã nói, bản thân nó không có hại, ngoài việc đào tạo bạn để mong đợi nó ở đó. Trên thực tế, đó là thiết lập mặc định trên CentOS (và bởi phần mở rộng RHEL, tôi cho rằng - đã quá lâu kể từ khi tôi sử dụng một máy) và đó là một nỗi đau lớn ở tuchus . Trong thời gian còn lại ở buổi biểu diễn đó, tôi đã gõ / bin / rm để tránh cài đặt "Linux cho những người không nên truy cập root".


3
Theo mặc định, RHEL có điều này, ít nhất là các hệ thống tôi đã sử dụng.
Daniel Beck

4

Tôi nghĩ rằng mối nguy hiểm lớn là mọi người có thể dựa vào một cái gì đó như thế này để lọc một quả địa cầu. Hãy tưởng tượng bạn muốn xóa một số hình ảnh khỏi một thư mục, nhưng không phải tất cả chúng:

rm -i pics/*.jpg

Bạn có thể sử dụng nó để lọc toàn cầu bằng tay, điều này sẽ hoàn toàn hợp lý. Nhưng, nếu bạn đã đặt bí danh cho nó và đang sử dụng rmvà tình cờ rơi vào một cái vỏ mà không có bí danh đó và hãy thử nó ... bạn chỉ cần xóa tất cả các hình ảnh của mình, rất tiếc!

Cá nhân tôi cũng thấy bí danh này có hại cho huyết áp của mình;). Nhưng đó chỉ là tôi.


Ví dụ tốt đẹp. Tất nhiên nếu bạn thích nguy hiểm, hoặc đánh bạc ..
Dunaril

2

Ngoài những gì Daniel Beck nói, tôi thấy mình đang sử dụng -fđể bỏ qua -i, điều này có khả năng gây nguy hiểm vì nó dẫn đến việc sử dụng rm -frm -rfkhông cần thiết. Bằng cách nào đó có liên quan: một cách để ngăn chặn sự rm -rfcố là đây là tạo tệp có tên "-i" như đã trả lời câu hỏi này: Làm cách nào để ngăn chặn rm -rf / * tình cờ? .

Nhưng một lần nữa, nếu bí danh đó không có ở đó, tôi sẽ không sử dụng -f và toàn bộ điều này sẽ không thành vấn đề.


3
Có vẻ như bạn đã tìm thấy một cách để làm cho thực hành tồi tệ này thậm chí còn tồi tệ hơn :)
Dunaril

0

Đây là nhiều ít có hại, dựa trên kinh nghiệm của tôi làm việc với hàng trăm người dùng trong quá khứ:

rm ()  # must be a function, must require single answer for all targets
{
    ls -FCsd "$@"
    local reply ; echo -n 'remove[ny]? ' ; read reply
    if [ "_$reply" = "_y" ] ; then
        /bin/rm -rf "$@" ; else echo '(cancelled)'
    fi
}
  • Người dùng được đào tạo để sử dụng các ký tự đại diện một cách chính xác, không chỉ '*' và sau đó dựa vào lời nhắc y / n để chọn tệp
  • Điều kiện để sử dụng các ký tự đại diện chính xác thường cứu khỏi thảm họa khi chúng được sử dụng rmtrong một số bối cảnh khác thiếu chức năng này hoặc rm -ibí danh.
  • Tôi đã dành ít thời gian hơn để khôi phục các tệp mà người dùng đã nhập 'y' quá nhiều lần
  • Người dùng chỉ phải phản hồi một lần - cung cấp phản hồi tích cực sắc nét cho việc sử dụng nó
  • Control-c ngắt hoạt động và được báo cáo là không làm gì cả
  • Không phải là một kịch bản, vì vậy thực tế rmlà không bị ảnh hưởng, khiến các chương trình khác không bị thuyết phục.

Kiểu mã chủ yếu là tương thích với sh (ngoại trừ việc sử dụng echo .... | tr -d '\012'các shell trước bash), hãy thoải mái làm cho bash của bạn cụ thể hơn. Tôi không đăng bài để chia sẻ mã, nhưng để chia sẻ thay đổi trải nghiệm người dùng đi kèm với nó.


Kamil: Câu trả lời của tôi bao gồm rằng trong rm -ilịch sử (theo kinh nghiệm của tôi khi có hàng trăm người dùng) dẫn đến việc xóa tệp sai, và chức năng bao gồm đã đào tạo người dùng sử dụng ký tự đại diện chính xác thay vào đó, giảm tỷ lệ lỗi. Vì vậy, tôi đã giải quyết các vấn đề chính gây khó chịu rm -i và cung cấp một giải pháp cho thuận tiện, và thực tế là các điểm đạn nằm bên dưới chức năng không ngăn chúng khỏi bị ô nhiễm.
Alex North-Keys
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.