2013-04-18 2 views
0

Ruby에서 Windows 용 bash 명령을 일부 재 작성하려고 시도했는데 일부 시스템 파일을 완전히 시도하는 경우 터미널이 엉망이되었습니다.루비/셸 : 모호한 파일을 넣는 "puts"/ "cat"은 터미널을 엉망으로 만듭니다.

http://danyel.apus.uberspace.de/somefile

내 루비 프로그램은 이것이다 : Windows) 또는 아래로 (리눅스)

문제의 파일이 하나

#!/package/host/localhost/ruby-2.0.0/bin/ruby 
#cat.rb 
File.open(ARGV[-1], "r") do |f| 
    puts f.read 
    f.close 
end 

만약 I "고양이" 파일 (bash를 통해), 행동도 완전히 무작위로 밝혀졌습니다.

그런 이유가 있을까요? 도움을

감사합니다,

감사합니다,
Danyel.

+0

나를위한 이상한 스크롤 (OS X/zsh)이 없습니다. 터미널은 분명히 일부 문자를 이스케이프 시퀀스로 해석합니다. 왜 표준 출력에 바이너리 파일을 출력하고 싶습니까? – Stefan

+0

테스트를 위해 응용 프로그램에 입력 한 임의의 파일 일 뿐이므로이 동작을 관찰하고 궁금해했습니다. – Danyel

+0

스크롤을 일으키는 문자의 범위를 좁힐만한 가치가있을 수 있습니다. (즉, 죽일 시간이 있다면) – Stefan

답변

0

파일이 데이터베이스처럼 보입니다 ... 콘솔에서 파일을 검사하면 16 진수 리터럴을 볼 수 있습니다. 다음과 같이 '읽을 수있는'형식으로 만들 수 있습니다.

puts File.read('path/to/file').unpack('H*')