簡體   English   中英

使用Ruby和命令行工具在ubuntu中更改目錄

[英]Changing directory in ubuntu with Ruby and a command line tool

#!/home/user/.rvm/rubies/ruby-2.0.0-p353/bin/ruby

 case ARGV[0]
        when "apache"
                exec('cd /etc/apach2')
                exec('sudo nano httpd.conf')

        #...
 end

我正在嘗試制作一個快速的命令行工具,它將用一個單詞為我更改目錄..因此可以從命令行(在ubuntu 12中)進行。 它告訴我不能cd。但是我自己嘗試該命令,它將正常工作。

Ruby的Dir類是您的朋友,請查看chdir方法:

Dir.chdir('/path/to/change/to')

在代碼運行時,它將更改Ruby對當前工作目錄的概念。 任何子Shell都會將其視為起始目錄。

您還可以向chdir傳遞一個塊,該塊中的所有代碼將采用新目錄,然后在該塊退出時將其還原為舊目錄:

Dir.chdir('/path/to/change/to') do
  # do some stuff
end

好的,所以我做到了並且可以正常工作(我在OS X上,但應該相同):

ARGV[0]
  when "testme"
    system('cd ripple')
    system('ls -al')

    #...
end

調用system('cd ...不會更改,將您移動到正在執行.rb文件的當前shell中的該目錄。因此這樣做更有意義:

system('sudo nano /etc/....

全線

我用背tick進行了測試,但對我來說根本不起作用。

我使用exec()進行了測試,並得到了預期的結果,它只運行一行,僅此而已。 因此,如果只有一個命令要運行,或者使用&&它們全部鏈接在一起,則exec()可以工作

exec('ls /etc && sudo nano /etc/....

我會讀這個: http : //rubyquicktips.com/post/5862861056/execute-shell-commands

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM