Di chuyển tệp vào Thùng rác trên Báo tuyết từ Terminal


13

Snow Leopard cho phép người dùng "Đặt lại" các tệp đã được chuyển đến Thùng rác từ Finder. Tuy nhiên, khi tôi thực hiện mv <file> ~/.Trashtừ dòng lệnh, tôi không nhận được tùy chọn "Đặt lại".

Có một lệnh gốc trong Snow Leopard di chuyển một tập tin vào thùng rác trong khi cho phép tôi vẫn có thể cho chúng tôi "Đặt lại"?

Câu trả lời:


2

Khi bạn di chuyển tệp vào thùng rác, OS X sẽ cập nhật .DS_Storetệp bên trong ~/.Trashvới thông tin "Đặt lại". (Xem câu hỏi này để biết thêm chi tiết )

Để cập nhật, bạn cũng phải cập nhật .DS_Storetệp khi bạn di chuyển tệp vào Thùng rác trong Terminal.


Cảm ơn. Không phải những gì tôi đã hy vọng, nhưng đó là sự thật.
matpie

9

Tôi khuyên bạn nên cài đặt Ruby gem osx-thùng rác .

Làm sao?

sudo gem install osx-trash

Sử dụng?

Usage: trash [OPTIONS] <file> [<file> ...]
       trash [-e | --empty]
       trash [-l | --list]
Specific options:
    -e, --empty                      Empty the trash
    -l, --list                       List items in the trash
    -h, --help                       Show this message
    -v, --version                    Show version

Manipulate to the Finder's trash.

2
Đẹp! Mặc dù, khi nó giao tiếp với Finder, các tệp rác có ký tự đại diện sẽ phát âm thanh rác cho mọi tệp.
Jari Keinänen

1
Tôi không nghĩ rằng điều này vẫn hoạt động. Từ các tài liệu: osx-thùng rác yêu cầu Mac OS X 10.5, Leopard. Tôi đã thử nó và tất cả những gì tôi nhận được làbash: trash: command not found
yourfriendzak

Không hoạt động trên OS X 10.9 đã hỏi một câu hỏi mới về cách khắc phục tại đây superuser.com/questions/694433/
mẹo

2

Trong SDK MacOSX, có các chức năng FSPathMoveObjectToTrashSyncvà liên quan. Thật dễ dàng để viết một kịch bản Python (hoặc bất cứ điều gì) xung quanh nó.

Chỉnh sửa : Chỉ cần mã hóa nó. Có thể được tìm thấy ở đây: rm-trash.py .


FYI - FSPathMoveObjectToTrashSync không được chấp nhận trong 10.8 và theo tài liệu bạn sẽ cần sử dụng thùng rácItemAtURL: resultItemURL: error: thay vào đó.
Lester Cheung

2

Bạn muốn chương trình rmtrash .

Bạn có thể sử dụng nó để thêm các mục vào Thùng rác như thể nó đã được thực hiện trong công cụ tìm.

Chỉnh sửa: Tôi vừa thử sử dụng rmtrash để xóa và khôi phục. Nó hoạt động chính xác như xóa từ công cụ tìm. Các tập tin hiển thị trong Thùng rác, có thể được kéo ra và làm trống giống hệt nhau. Đã sử dụng nó từ '06 hoặc hơn.


Từ mã của rmtrash, có vẻ như nó chỉ tương đương với mv file ~/.Trash/. Bạn có chắc chắn rằng bạn có thể khôi phục các tập tin từ công cụ này?
Albert

0

Sau khi xem xét các lựa chọn thay thế, tôi phát hiện ra rằng:

  • Chương trình rmtrash di chuyển các tệp vào thư mục rác mà không sử dụng API hệ thống, vì vậy tệp .DS_Store sẽ không được cập nhật . Ngoài ra, không kích hoạt âm thanh tái chế.
  • Kịch bản python gọi một phương thức không dùng nữa trên sư tử núi cũng không kích hoạt âm thanh tái chế.
  • Kịch bản ruby ​​hoạt động, nhưng là sloooooow (giống như con trăn).

Vì vậy, tôi đã viết lệnh rác của riêng mình được triển khai bằng ngôn ngữ lập trình Nimrod, vì vậy nó rất nhanh và nó kích hoạt âm thanh thùng rác trong một quy trình nền. Điều này có nghĩa là gõ lệnh và chạy nó sẽ thoát ngay lập tức vì không cần phải đợi âm thanh phát. Con lừa là bạn cần biên dịch nimrod và sau đó là chương trình này (không có lỗi nhị phân!).

Tái bút: Thành thật mà nói, việc triển khai tốt nhất sẽ là rmtrash bằng API chính thức mà tôi đang sử dụng từ Nimrod, đây là mục tiêu rõ ràng - c .


0

Kiểm tra trash-cli. Nó hoạt động đa nền tảng, không có âm thanh rác và hỗ trợ Đặt lại.

Bạn có thể cài đặt nó với (yêu cầu Node.js ) :

$ npm install --global trash-cli

Ngoài ra, nếu bạn không muốn sử dụng Node.js, bạn có thể cài đặt nhị phân gốc osx-trashtheo cách thủ công.


-1

Tôi đã có cùng một vấn đề ngày hôm nay và cũng đã kiểm tra chương trình rmtrash được đưa ra ở trên. Thật không may, tất cả các giải pháp được thấy cho đến nay đều di chuyển các tệp đến .Trash của thư mục chính.

Mặt khác, Finder sẽ chuyển nó sang các thư mục -Trash khác nhau, dựa trên điểm gắn kết của hệ thống tệp của tệp.

Vì vậy, giải pháp đơn giản nhất tôi có thể đưa ra (được tạo vào ngày 10.5.8. Để được thử nghiệm trên các phiên bản OS X mới hơn) là:

osascript -e 'tell application "Finder" to delete POSIX file "'FULL FILENAME HERE'"'

Đây là kịch bản shell mà tôi đã tạo cho nó:

#!/bin/bash
declare -a files
for f in "$@" ; do
    if [ -r "$f" ] ; then
        case "$f" in
        /*) ;;
        *) f="$( pwd )/$f" ;;
        esac
        files=("${files[@]}" "$f")
    else
        echo "Can't find '$f'" >&2
    fi
done
if [ ${#files[@]} -gt 0 ] ; then
    osascript -e '
    on run argv
        repeat with f in argv
            set x to (POSIX file f) as string
            tell application "Finder" to delete x
        end
    end
    ' "${files[@]}" > /dev/null
fi
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.