교차 플랫폼을 휴지통으로 이동
파일을 휴지통으로 이동하는 교차 플랫폼 방법이 있습니까? file delete파일을 완전히 삭제하며 unixen에서 실행 취소 할 수 없습니다. Linux에서만 휴지통 디렉토리를 찾는 것은 쉽지 않습니다. 파일 관리자에 자주 의존하기 때문입니다.
나는하기에 의지했다 :
exec gio trash $file
문제는 이것이 Gnome에서만 작동하므로 Linux에서도 크로스 플랫폼이 아닙니다.
그리고 Windows 시스템이 없기 때문에 Windows에서 휴지통 / 휴지통이 어떻게 작동하는지 파악하는 것이 훨씬 더 어렵습니다.
답변
FreeDesktop.org 쓰레기 사양은 말합니다 :
모든 사용자가 "홈 휴지통"디렉토리를 사용할 수 있어야합니다. 이름과 위치는$XDG_DATA_HOME/Trash; $XDG_DATA_HOME은 데스크탑 기본 디렉토리 사양에 정의 된 사용자 별 데이터의 기본 디렉토리입니다.
만약 $XDG_DATA_HOME is unset or empty, it defaults to $홈 /.local/share.
그러나 ~ / .local / share / Trash 안팎으로 파일을 이동할 수는 없습니다. 원래 위치와 타임 스탬프를 저장하는 몇 가지 메타 데이터 파일이 있습니다. 이러한 메타 데이터 파일은 일반 텍스트이므로 Tcl에서 쉽게 처리 할 수 있습니다.
따라서 이것은 Tcl 모듈에서 매우 쉽게 구현할 수있는 것처럼 들립니다. 그러나 그러한 모듈이 이미 존재한다면 나는 그것을 알지 못합니다. Tcl을 배우는 사람에게 좋은 프로젝트가 될 수 있습니다.
추가 정보 :
평소와 같이 TWAPI 는 Windows를 구출합니다. twapi_shell의 패키지는이 recycle_file명령을 사용합니다.
macOS에서 수행하는 방법은 다음과 같습니다. 이를 위해서는 Tclapplescript 확장 패키지 가 필요합니다 .
package require Tclapplescript
proc trash args {
set TRASH_CMD {
tell application "Finder" to delete POSIX file "%s"
}
foreach file $args { set fullFilename [file normalize $file]
set quoted [string map {\\ \\\\ \\" \\\\"} $fullFilename] AppleScript execute [format $TRASH_CMD $quoted]
}
}
최신 버전의 macOS에서이 작업을 수행하려면 런타임에 적절한 권한을 부여해야합니다 (또는 적어도 테스트 할 때 필요했습니다).
또한보십시오:
- https://apple.stackexchange.com/questions/50844/how-to-move-files-to-trash-from-command-line
- AppleScript로 파일을 삭제하여 휴지통 또는 영구적으로 재활용