모든 첨부 된 폴더에서 읽기 전용 권한을 가진 응용 프로그램 (MyApp.app)을 삭제해야합니다. 삭제하기 전에 모든 묶인 파일/디렉토리의 사용 권한을 0644로 변경해야합니다.이 작업을 재귀 적으로 수행하려면 어떻게해야합니까?Mac OS X에서 루비의 재귀 chmod?
나는
begin; FileUtils.chmod(0644, '#{config.appPath}'); rescue; end
begin; FileUtils.rm_r('#{config.appPath}'); rescue; end
을 시도했지만 반복적으로
FileUtils.chmod
작동하지 않습니다. 나는 유닉스 명령을 사용할 수 없다. 루비 여야한다.
편집 : 현재 컨텍스트에서 Unix 명령을 사용할 수 없습니다. 좋아요, 이것은 RubyCocoa 응용 프로그램입니다. 그리고 당신이 보는 소스는 응용 프로그램을 제거하기로되어있는 루비 스크립트의 일부입니다. 제 고객이 가지고있는 코드이기 때문에 주석을 달지 마십시오. 제거는 응용 프로그램의 모든 흔적을 제거하고 프로세스를 종료하며 결국 응용 프로그램 자체를 삭제하는 것을 포함합니다. 일반적으로 작동하지만 어떤 이유로 MyApp.app 폴더에 읽기 전용 권한이있는 경우에는 작동하지 않습니다. 그래서 나는 폴더에서 재귀 적으로 chmod를 실행하고 그것들을 제거한다고 생각했지만, 루비에서는 어떤 이유로 든 똑바로 서 있지는 않습니다. 그래서 제가 도움을 청합니다. 명령 행에서이를 수행하는 방법에 대한 많은 예제가 있지만 코드에서 어떻게 수행합니까? 여기
코드에서 좀 더, 그냥 구현의 방법을 보여줍니다 :
code =<<FOO
require 'fileutils'
# kill the app before deleting files in case it writes files on exit
%x{/bin/kill -9 #{NSProcessInfo.processInfo.processIdentifier}}
begin; FileUtils.chmod(0644, '#{TBConfig.appPath}'); rescue; end
begin; FileUtils.rm_r('#{TBConfig.appPath}'); rescue; end
FOO
ff = Tempfile.new('timebridge')
ff.write(code)
ff.close
%x{/usr/bin/ruby #{ff.path}}
다시 한 번 감사드립니다. 편집 - -
어쨌든 삭제하는 경우 사용 권한을 변경하는 용도는 무엇입니까? –
* 당신이 * 유닉스 명령 *을 사용할 수 없다고 말하면 혼란 스럽습니다. 당신은 OSX에 있습니다. 유닉스 명령은 거기에서 완벽하게 작동합니다. 이 숙제가 있니? (그 외에도 Jeff는 맞습니다. 삭제하려는 항목에 대한 권한을 변경할 이유가 없습니다.) – Telemachus
MyApp.app에 모든 닫힌 폴더에 대한 읽기 전용 권한이 있으면 삭제할 수 없습니다. 더 자세한 설명은 편집을 참조하십시오. 아니 숙제가 아니에요 ... –