반응형
Ruby는 특정 디렉토리에서 쉘 명령을 실행합니다.
Ruby에서 다음과 같이 셸 명령을 실행하는 방법을 알고 있습니다.
%x[#{cmd}]
그러나이 명령을 실행할 디렉토리를 어떻게 지정합니까?
subprocess.Popen
파이썬에서 와 비슷한 비슷한 방법이 있습니까?
subprocess.Popen(r'c:\mytool\tool.exe', cwd=r'd:\test\local')
감사!
의 블록 버전을 사용할 수 있습니다 Dir.chdir
. 블록 안에는 요청 된 디렉토리에 있으며, Block 이후에도 여전히 이전 디렉토리에 있습니다.
Dir.chdir('mydir'){
%x[#{cmd}]
}
Ruby 1.9.3 (차단 호출) :
require 'open3'
Open3.popen3("pwd", :chdir=>"/") {|i,o,e,t|
p o.read.chomp #=> "/"
}
Dir.pwd #=> "/home/abe"
또한, 쉘 경로를
%x[cd #{dir} && #{cmd}]
안전한 변경 디렉토리로 역 기법에 가장 가까운 것은 capture2
다음과 같습니다.
require 'open3'
output, status = Open3.capture2('pwd', :chdir=>"/tmp")
루비 문서에서 다른 유용한 Open3 메서드를 볼 수 있습니다. 한 가지 단점은에 jruby
대한 지원 open3
이 다소 손상 되었다는 것입니다.
최선의 해결책은 아닐 수도 있지만 Dir.pwd를 사용하여 현재 디렉토리를 가져 와서 어딘가에 저장하십시오. 그런 다음 Dir.chdir (destination)을 사용하십시오. 여기서 destination은 명령을 실행하려는 디렉토리입니다. 명령을 실행 한 후 Dir.chdir을 다시 사용하고 이전에 저장 한 디렉토리를 사용하여 복원합니다.
나는이 같은 문제가 있었고 두 명령을 백틱에 넣고 '&&'로 구분하여 해결했습니다.
`cd \desired\directory && command`
참조 URL : https://stackoverflow.com/questions/10147913/ruby-run-shell-command-in-a-specific-directory
반응형
'programing' 카테고리의 다른 글
VIM에서 CAPS LOCK 키를 매핑하는 방법은 무엇입니까? (0) | 2021.01.17 |
---|---|
권한 오류로 인해 jstatd를 시작할 수 없습니다. (0) | 2021.01.17 |
Delphi ASIO VST 및 MiniHost의 미디 타이밍 문제 (0) | 2021.01.16 |
libgdx (roboVM)를 사용하여 iOS 라이브러리 또는 프레임 워크 만들기 (0) | 2021.01.16 |
oriento / orientjs의 여러 레코드 선택 및 업데이트 및 워터 라인의 트랜잭션 (0) | 2021.01.16 |