Làm cách nào để tôi có thể di chuyển các tập tin vào thùng rác?


62

Tôi sử dụng thiết bị đầu cuối hàng ngày, tôi sẽ thường xuyên sử dụng rm DirectoryName. Đôi khi tôi có một chút điên rồ và làm rm *. Như bạn có thể tưởng tượng, những kẻ lừa đảo này đôi khi đã quay lại và đánh vào mặt tôi. Có ai biết làm thế nào tôi tạo một bản đồ để rm whateverdi chuyển mọi thứ vào thùng rác mà sau đó tôi xóa bằng tay.


3
bạn có thể làmmv /file/to/delete ~./Trash

6
Thật khó để đặt các bánh xe huấn luyện vào một công cụ chính xác như rm mà không phá vỡ các tập lệnh khác. Một cái gì đó giống như alias rm=/bin/rm -isẽ giúp bạn được đào tạo một cách an toàn khỏi sự điên rồ của bạn . Ngoài ra - thư mục Thùng rác nào bạn muốn sử dụng rm? Nó trở nên khó hiểu vì Mac OS X có một thư mục rác cho mỗi tập cũng như thùng rác ở cấp độ người dùng.
bmike

1
Nếu bạn sử dụng zsh, theo mặc định, nó sẽ nhắc bạn khi bạn làm rm *hoặcrm /path/*
Daniel Serodio

1
Thêm tôi vào danh sách những người nghĩ rằng đây là một câu hỏi cực kỳ nguy hiểm để trả lời. Nếu bạn làm việc cho tôi, tôi sẽ đấu tranh để không tát bạn cho đến khi bạn hứa KHÔNG BAO GIỜ "nổi điên một chút" tại một dấu nhắc shell và đưa ra các lệnh như 'rm'. Tôi cũng sẽ đảm bảo gấp đôi rằng bạn không có quyền quản trị sudo cho bất kỳ máy nào tôi sử dụng hoặc có trách nhiệm. Trước khi tôi gõ "rm" hoặc "sudo", tôi tự đứng dậy và tự hỏi liệu tôi có chắc chắn 100% rằng tôi hiểu những hậu quả của việc tôi sắp làm không. Có lẽ bạn chỉ cần làm một "rm -rf" và chịu đựng một lúc.
Wilfred Smith

Xin lỗi trước nếu bình luận của tôi có vẻ tàn bạo, nhưng chính câu hỏi làm tôi kinh hoàng.
Wilfred Smith

Câu trả lời:


79

Ý tưởng tồi

Sử dụng rmđể di chuyển các tập tin vào thùng rác giống như cỏ dại. Nó là phổ biến và làm hài lòng nhưng có thể xấu cho bạn trong tương lai. ;)

Bạn thực sự cần kiểm soát bản thân khi sử dụng rm.


Đừng dùng rm

Hãy tưởng tượng , bạn đã quen với việc di chuyển vào thùng rác và tạo thói quen cho nó. Chắc chắn, hệ thống của bạn an toàn nhưng khi bạn đăng nhập vào sổ ghi chép của một người bạn (hoặc của vợ hoặc sếp của bạn) và phải xóa một cái gì đó? Bạn sẽ thực sự sử dụng thực tế rm- xóa các tệp đó mãi mãi. Đó là một thói quen xấu, và bạn cần phải biết điều đó.

Vì vậy, thay vào đó, hãy cài đặt rmtrashvà tạo thói quen sử dụng nó:

# install rmtrash, (either from the macports or by the brew.)
$ alias trash="rmtrash"
$ alias   del="rmtrash"       # del / trash are shorter than rmtrash

Sửa thói quen xấu

Một điều khác bạn có thể làm để buộc bản thân sử dụng rmtrashthay vì rmbí danh nó thành một thông điệp tùy chỉnh trong của bạn .profile.

alias rm="echo Use 'del', or the full path i.e. '/bin/rm'"

Vì vậy, bất cứ khi nào bạn sử dụng rm, bạn sẽ được nhắc sử dụng rmtrashhoặc /bin/rm. Hãy nhớ rằng, điều này chỉ là tạm thời, sau một thời gian bạn nên xóa bí danh.


Không bao giờ, làm điều gì đó như thế này:

$ pwd
/
$ cd /tnp; rm -rf *
sh: cd: /tnp: No such file or directory

Pop Quiz: Trong thư mục nào rmlệnh sẽ chạy? :)

Ps: Chỉ cần xóa một số chỉnh sửa không mong muốn cho bài đăng này, những gì thêm vào một số điều vô nghĩa về bí danh.


14
&&là huyết mạch của bạn ;là ma quỷ PS Câu trả lời là khá nhiều thứ trên hệ thống của bạn biến mất, trong ví dụ trên.
Jason Salaz

Mặc dù, rm không xóa an toàn, nhưng di chuyển đến thùng rác / trống không (trong thiết lập của tôi).
Mike Graf

1
Người dùng Debian / Ubuntu cài đặt trash-clithay thế, ví dụ. aptitude install trash-cli- xem github.com/andreafrancia/trash-cli
Daniel Sokolowski

@ jm666 Cũng kiểm tra thùng rác ( bài đăng trên blog & nguồn ). Nó yêu cầu Finder cho các tập tin rác. Ngoài ra, nó cũng có thể sử dụng API hệ thống tệp Objective C tiêu chuẩn (nhanh hơn) và dự phòng cho Finder nếu không đủ quyền. brew install trash
parth

rmtrashlà thực sự cũ, đã được cập nhật lần cuối vào năm 2003, và nó cho thấy. Nó có nhiều tùy chọn ít hơn rmvà nếu bạn nói rmtrashtrên một ổ đĩa thứ cấp, nó sẽ di chuyển các tệp đó vào thư mục rác của người dùng trên ổ đĩa hệ thống, có thể mất nhiều thời gian cho các tệp lớn. Các trashtùy chọn khuyến cáo của Parth là tốt hơn, giải quyết vấn đề giữ-on-cùng-khối lượng, nhưng vẫn còn thiếu nhiều rmtùy chọn.
Warren Young

25

Tôi có thể nghĩ ra hàng tá cách để viết mã này, nhưng từ chối loại bất kỳ từ nào trong số chúng lên trong một câu trả lời. Tôi mạnh mẽ khuyên bạn nên hạn chế thói quen lại nhận được một chút điên . Bạn hoàn toàn không nên có thói quen sử dụng rmnếu bạn không thể sử dụng đúng cách.

Vấn đề cơ bản ở đây là ngay cả khi bạn cài đặt mạng lưới an toàn trên hệ thống của riêng mình, điều đó sẽ chỉ giúp bạn giữ thói quen xấu và khi bạn tình cờ ở một máy khác vào một ngày nào đó không có sự bảo vệ tùy chỉnh tương tự, bạn sẽ làm một cái gì đó hoành tráng xấu.

Giải pháp thích hợp là sử dụng rmvì nó được sử dụng bao gồm cả việc thêm -iđối số theo cách thủ công bất cứ khi nào bạn nghi ngờ về việc toàn cầu sẽ mở rộng như thế nào và có các bản sao lưu hệ thống tốt mà bạn có thể khôi phục trong trường hợp có lỗi người dùng nghiêm trọng. Cố gắng thêm "rác" vào các lệnh mà trong phần còn lại của vũ trụ không sử dụng, đó là một bước nửa bước là điều tồi tệ nhất của cả hai thế giới.

Sử dụng thùng rác hoặc không. Sử dụngrmkhông đi vào thùng rác, nó sẽ loại bỏ.

Nếu bạn muốn sử dụng thùng rác, không có gì sai với điều đó. Chỉ cần có thói quen sử dụng rmtrashlệnh thay vì rm. Điều này sẽ giúp bộ não của bạn hiểu những gì đang xảy ra và không đưa bạn vào một thói quen xấu sẽ gây ra đau buồn sau này.


1
Quan điểm của bạn không tính toán trong trường hợp này. Mọi người vô tình xóa mọi thứ trên cơ sở hàng ngày, sao lưu hệ thống không hoạt động trong trường hợp máy tính gia đình (là của tôi) vì tài nguyên bị hạn chế, chuyển sang thùng rác là cách xử lý các thao tác xóa này hiệu quả hơn nhiều đối với tôi trường hợp sử dụng.
steve

5
@steve bạn đã bỏ lỡ điểm hoàn toàn. rmtheo định nghĩa sẽ loại bỏ một tập tin từ đĩa. Nó không gửi nó vào thùng rác. Dạy bản thân sử dụng rmkhi bạn muốn gửi vào thùng rác khiến bạn gặp thảm họa. Nếu bạn muốn gửi vào thùng rác, sử dụng rmtrashhoặc một chương trình được thiết kế cho công việc, thì bạn sẽ không gặp ác mộng sau đó. Tôi đã không nói rằng việc sử dụng thùng rác vốn đã sai, nhưng nếu bạn muốn sử dụng nó, đừng kết nối nó với thứ gì đó không có ý định sử dụng nó!
Caleb

2
brew install rmtrashvà ngừng sử dụngrm
GabLeRoux

Đây là một câu trả lời tuyệt vời, làm sáng tỏ một vài điều cho tôi. Tôi sẽ cố gắng hình thành thói quen sử dụng rmtrashthay vì rm.
Sheharyar

sudo add-apt-repository ppa: nateshmbhat / rm-thùng rác. Sau đó cài đặt "rm-thùng rác"
Natesh bhat

3

Có nhiều cách để bảo vệ bản thân khỏi những kết cục khủng khiếp rm. Tuy nhiên, tôi đồng ý với các bình luận viên khác ở đây: rất ít là tốt.

Đừng vì một phút tin rằng thay đổi môi trường chỉ huy sẽ giúp bạn. Ví dụ: bạn sẽ thấy mọi người trực tuyến ở mọi nơi khuyên bạn nên thực hiện loại việc này:

alias rm="rm -i"

hoặc là

function rm()
{
    echo >&2 'rm forbidden; use "/bin/rm"'
}
export -f rm

Điều này sẽ không hoạt động. Giai đoạn = Stage. Có vô số trường hợp sử dụng trong đó những thủ thuật nhỏ này sẽ khiến bạn thất bại thảm hại.

Cách duy nhất mạnh mẽ mà tôi đã sử dụng để tránh cho bản thân khỏi nguy hiểm rmlà bằng cách thiết lập quy trình sao lưu thường xuyên thông qua cron qua các thư mục nơi tôi làm việc. Raw UNIX thực hiện điều đó cho bạn một cách độc đáo, rất đơn giản, sử dụng findkết hợp với -mtimeđể kiểm tra các tệp đã được cập nhật trong hoặc từ một thời điểm nhất định.


+1 cho cronmột mình. Cảm ơn :)
bmike

2

Sử dụng một công cụ dòng lệnh như rmtrash hoặc tập lệnh tat sử dụng phần mô tả để gọi Finder để xóa.

Sau khi cài đặt rmtras để nói / usr / local / bin / rmtrash, tạo một bí danh cho bash

alias rm='rmtrash'

Bạn có thể sử dụng \ rm để gọi rm trực tiếp và bỏ qua bí danh


14
Nếu bạn sử dụng một công cụ như thế rmtrash, xin hãy tự giúp mình và sử dụng nó theo tên riêng của nó . Không bao giờ bí danh những thứ không rmđến rm, nó sẽ một ngày nào đó cắn bạn.
Caleb

1
rmtrashkhông tương thích với rm(không hỗ trợ các tham số dòng lệnh giống như -r) vì vậy một bí danh thực sự không hữu ích trong mọi trường hợp
Perry

Đó là một ý tưởng tồi để bí danh rmtrashđể rm. Không chỉ chúng không tương thích, mà nó còn tạo ra thói quen xấu và bạn sẽ vô tình sử dụng rmtrong một hệ thống khác nghĩ rằng bạn chỉ đang sử dụng rmtrash.
Fayaz

1

Chỉ muốn thêm một thói quen hữu ích cho những người chưa làm điều này. Trước khi sử dụng rm cho bất cứ điều gì, hãy thực hiện 'ls' trước. Bằng cách đó bạn có thể thấy tất cả các tệp mà bạn định xóa. Sau đó, thay vì gõ lại, chỉ cần kéo lệnh 'ls' trước đó lên và trao đổi ls cho rm. Thói quen này đã làm giảm rất nhiều lo lắng khi gọi rm.


-1

Giới thiệu (bạn có thể bỏ qua)

Đối với tôi rm -isẽ là đủ, bởi vì nó nhắc bạn trước khi xóa bất kỳ tập tin nào. Tuy nhiên, một số bảo mật bổ sung được cung cấp bởi safe-rmkhông phải là một ý tưởng tồi cả.

Một đơn giản aliasnhư thế rm=safe-rm -i có thể là đủ, tuy nhiên rm -rfsẽ không hoạt động, bởi vì -ibị quá tải bởi -f.

Vì vậy, chúng tôi phải đảm bảo rằng -iluôn luôn đến sau -f!


Giải pháp của tôi (3 bước):

  • Cài đặt an toàn-rm: brew install safe-rm

    Bạn vẫn có thể làm việc với rm, nhưng bạn đã sửa đổi RM_BINtrong bước tiếp theo

  • Chỉnh sửa ~/.profile(hoặc bash_profile hoặc bất cứ điều gì) và đặt đoạn mã sau, (chứa một aliasvà a function):

    alias rm="rm_i"
    
    function rm_i(){
    RM_BIN=safe-rm # you can replace it with regular rm if you like
    
    args=""
    files=""
    argsDone=0 # to make sure arguments are before the files
    
    for var in "$@"
    do
        if [[ $var == \-* ]] ; then
            if [ $argsDone -eq 1 ] ; then
                $RM_BIN # just to show the usage of rm
                return
            fi
            args+=" $var"
        else
            argsDone=1
            files+=" $var"
        fi
    done
    
    args+=" -i" # Put -i at the end (so rm -rf will not ignore it)
    
    $RM_BIN $args $files
    }
    
  • Cuối cùng , logoutlogin, do đó, các cập nhật trong .profile được áp dụng. KHÔNG sử dụng nó trước khi đăng xuất / đăng nhập!


Ghi chú:

  • Nó có thể được áp dụng cho bất kỳ bản phân phối Linux nào, với những sửa đổi nhỏ.
  • Nó KHÔNG di chuyển nhân viên của bạn để đập. Nó chỉ hỏi bạn trước khi xóa từng tập tin!
  • Nó hoạt động với -rfvà với regexes.
  • Nếu bạn thực sự muốn sử dụng mà rm -rf KHÔNG được yêu cầu cho mỗi tệp / thư mục duy nhất, bạn vẫn có thể sử dụng /bin/rm -rf(hoặc safe-rm -rfnếu bạn đã cài đặt nó).
  • Không còn vô ý rm -rf hay rm * ;)

5
Bí danh rm với bất cứ thứ gì lớn hơn chính nó (ví dụ alias rm='sudo rm') giống như buộc một con Uzi vào con dao nhà bếp: một ngày nào đó bạn sẽ nhận được nhiều hơn những gì bạn mặc cả khi bạn đi cắt quả dứa đó. Bí danh rm với bất cứ thứ gì nhỏ hơn chính nó (ví dụ alias rm='rmtrash') giống như để con bạn chơi với lựu đạn cầm tay và không dạy chúng thực sự là gì: một ngày nào đó khi chúng gặp phải một người thực sự, chúng sẽ không đối xử với nó một cách thận trọng. Dù bằng cách nào, thì răng cưa của Rm cũng không tốt cho sự an toàn cá nhân và sức khỏe cộng đồng của bạn!
Caleb

2
Sử dụng một cái gì đó như safe-rm là lời khuyên hợp lý. Bí danh nó để rm là không. Sử dụng nó dưới tên riêng hoặc bí danh duy nhất để bạn không được cấp một mạng lưới an toàn sẽ không luôn ở đó.
Caleb

Tôi thấy điểm của bạn. NHƯNG, lý do tôi đã làm điều này, là tôi làm việc với nhiều thiết bị đầu cuối .. một số thiết bị đầu cuối từ xa và một số người dân địa phương. Và tôi muốn ném nhiều lựu đạn vào các thiết bị đầu cuối từ xa, nhưng khi tôi vô tình kéo con dấu an toàn trên thiết bị đầu cuối địa phương, tôi muốn thấy một cảnh báo trước khi vụ nổ xảy ra.
Paschalis

@Paschalis và điều gì xảy ra nếu một tập lệnh hoặc chương trình được cài đặt cần sử dụng rm? Ngoài ra, quan điểm của Caleb thậm chí còn hợp lệ hơn - nếu bạn đã quen với một hệ thống có bí danh rm an toàn, thì bạn có thể liều lĩnh với nó và cuối cùng sử dụng nó trên một hệ thống có rm không thiên vị.
Manishearth
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.