2015-01-19 2 views
4

Ruby 파일이 있는데 실행 한 결과는 ruby file.rb "parameters"입니다. 매번 ruby 및 파일 이름을 포함하지 않고도 regtask parameters으로 실행하는 것을 선호합니다. 나는 그것이 ls과 같은 수준에 있기를 원합니다. 나는 어떻게 이것을 성취 할 것인가?Ruby 스크립트를 bash 명령으로 만들려면 어떻게해야합니까?

+0

파일 이름을 바꿀 수 있으며'.rb' 확장자를 제거하여 파일 이름을 더 쉽게 입력 할 수 있지만 파일 이름을 치울 수는 없습니다.'ruby' 명령의 매개 변수 대신 명령 이름으로 입력해야합니다. – sawa

답변

12

편집 파일,이 때문에 시스템 파일을 실행하는 방법을 알고, 첫 번째 줄에 있는지 확인 : 그것은 실행하기 위해,

#!/usr/bin/env ruby 

다음을 파일의 권한을 변경 :

chmod a+x file.rb 

그리고 마지막으로, 이름을 변경하고 전체 경로를 작성하지 않고도이 실행됩니다 곳으로 이동 :

mkdir -p ~/bin 
mv file.rb ~/bin/regtask 

(대부분의 시스템은 ~/binPATH에 자동으로 추가합니다. 그렇지 않은 경우 시작 파일에 직접 PATH에 추가해야합니다.)

+0

Windows 편집기를 사용한 경우 줄 끝을 수정해야합니다. 더 나은 방법은 Windows 편집기를 사용하지 않거나 줄 끝을 적절히 제어 할 수있는 편집기를 찾는 것입니다. 유닉스 텍스트 파일은 LF 라인 엔딩만을 가지고있는 반면 윈도우의 표준은 CRLF이다. – tripleee

+0

보기, 이것은 나를 혼란스럽게합니다. 내 홈 디렉토리에 bin을 만들고 시작시에 포함시키지 않고 my/use/local/bin에 추가 할 수 있습니까? 한 가지 더 나은 방법이 있습니까? 왜 내가 홈 디렉토리를 하나 만들까요? –

+0

'~/bin'이 당신 것입니다. '/ usr/local/bin'은 모든 사용자를위한 것입니다. 두 옵션 모두 작동하지만 서로 다른 작업을 수행합니다. – Amadan

2

도움이 될 것입니다. 문제가 발생하면 알려주세요.

http://commandercoriander.net/blog/2013/02/16/making-a-ruby-script-executable/

은 루비 스크립트 실행

그것은 * 괜찬아 사회에서 상식이지만, 많은 새로운 개발자가 실행 명령 줄 프로그램에 루비 스크립트를 터닝 마법에 가깝다 만들기. 인터넷에 다른 참고 자료가 있지만 여기 게시판에서는 Ruby를 직접 호출하여 이름을 지정하여 스크립트를 실행하는 방법으로 Ruby 스크립트를 실행하는 방법을 간략하게 설명합니다.

우리는 명령 줄에 "hello"를 인쇄하는 간단한 Ruby 스크립트가 있다고 가정하여 시작할 것입니다. 스크립트의 이름은 greeter.rb입니다.

puts "Hello!"` 

우리는 ruby greeter.rb를 입력해야합니다, 스크립트를 실행하려면 :이 파일은 루비 코드의 한 라인을 보유하고 있습니다. 그냥 greeter을 입력하고 스크립트를 실행하는 것이 좋지 않겠습니까? 예, 그렇습니다.

먼저 Ruby에 스크립트를 직접 전달하지 않으므로 Bash에게 파일에 대한 작업을 지시해야합니다. 우리의 스크립트의 맨에 다음, 우리는 추가하는 것이 수행합니다

#!/usr/bin/env ruby 
puts "Hello!" 

첫 번째 줄은 배쉬 지시어이며, 기본적으로 배쉬는 루비의 현재 구성 버전을 요청하여 우리의 파일을 실행하기 위해 어떤 프로그램을 알려줍니다 env 명령에 지정된대로. env의 작동 방식에 대한 자세한 내용을 보려면 man env을 명령 줄에 입력 해보십시오.

두 번째로 스크립트를 실행 파일로 만들어야 파일 권한을 변경해야합니다. 파일 사용 권한의 개념이 새로운 경우 여기에서 읽으십시오. Bascially 파일에는 세 가지 유형의 사용 권한이 있습니다. 그것들은 읽고 쓰고 실행할 수 있습니다. 대부분의 파일은 일반적으로 읽기 및 쓰기 권한 만 갖는 것으로 시작합니다. 우리는 스크립트를 실행하기를 원하기 때문에 실행 권한을 부여해야합니다.

이렇게하는 것은 간단한 Bash 명령 일뿐입니다.명령 행에서 greeter.rb 파일이있는 디렉토리로 이동하십시오.

-rw-r--r-- 1 username staff 13 Feb 16 21:10 greeter.rb 

당신의 자신의 이름이 username의 장소에 표시되며, 생성 날짜는 자연스럽게 될 것입니다 : 다음과 같이 보일 것입니다

ls -l greeter.rb 

출력을 : 이제, 권한을 확인하려면 다음을 실행 다르지만 출력은 거의 동일합니다. 라인의 첫 번째 부분은 revelant 부분입니다. rw 문자는 읽기 및 쓰기 권한을 지정합니다.

우리는 그 행에 x로 나타날 실행 권한을 추가 할 것입니다. 실행 권한을 추가하려면 다음 명령을 실행하십시오.

chmod 755 greeter.rb 

이제 파일 사용 권한을 ls -l greeter.rb으로 다시 확인하면 출력이 약간 달라야합니다.

-rwxr-xr-x 1 username staff  13 Feb 16 21:20 greeter.rb 

x의 존재는 파일이 처음 루비를 호출하지 않고 직접 실행할 수 있음을 나타냅니다. 다음 명령은 "hello"라고 말하도록 파일을 가져와야합니다.

./greeter.rb 

거의 있습니다. 이제는 접두어 ./을 없애야합니다.이 접두어는 Bash에게 greeter.rb을 찾을 위치, 즉 현재 디렉토리를 말합니다. 마지막 단계를 완료하기 전에 파일의 이름을 greeter으로 변경하십시오.

mv greeter.rb greeter 

이제 마지막 단계입니다. ls, chmod, mv 등의 Bash 프로그램을 호출 할 때마다 Bash는 해당 프로그램을 찾는 미리 정의 된 폴더 목록을 검색합니다. 이를 경로라고합니다. 컴퓨터에서 경로를 설정하려면 다음을 입력하십시오.

echo "$PATH" 

출력은 다양한 시스템 중요 폴더의 긴 문자열이어야합니다. 우리는 우리의 응용 프로그램을이 폴더 중 하나에 넣어야합니다. 전통적으로 폴더는 /usr/bin//bin/과 같이 두는 것이 가장 좋습니다. 대신 어떤 종류의 사용자 추가도 /usr/local/bin/에 있어야합니다. 우리가 그 폴더에 우리의 인사를 이동할 수 있습니다, 지금

mkdir -p /usr/local/bin/ 

, 또는 그것이 응용 프로그램을 떠나 그냥 소프트 링크 (또는 OS X에서 별칭을 만들 : 해당 폴더가 존재하지 않으면, 그것을 만들 용어)를 /usr/local/bin/ 폴더에 저장합니다. 별칭을 만들려면 ln 명령을 사용합니다. 디렉토리에서 어디 greeter 삶, 유형 : $PWD 변수가 우리의 손님을 맞이하는 스크립트의 절대 경로로 확장됩니다

ln -s $PWD/greeter /usr/local/bin/ 참고. 자, 이제 끝났습니다. greeter을 입력하면 Ruby 스크립트를 호출 할 수 있습니다!

위의 Bash 명령 중 하나라도 혼란 스러우면, man <command>을 입력하여 매뉴얼 페이지를 찾으십시오.

+1

'ln'은 별칭을 만들지 않으며, OS X에서도 소프트 링크 또는 하드 링크를 생성합니다. Finder의 Option 키를 드래그하거나 (osascript를 사용하여) 시뮬레이션해야합니다 (http://stackoverflow.com)./questions/7072208/how-do-i-create-a-macintosh-finder-alias-from-the-command-line)를 사용하여 Mac OS 별칭을 만듭니다. – Amadan

+0

나는 그것을 몰랐다. .. 머리를위한 감사합니다! – contact411

관련 문제