2015-09-27 77 views
1

幾個月前我開始轉向Ubuntu,並且除了基本/經常使用的命令之外,還沒有很多關於unix和fish的經驗。對於我正在學習的C課程,我經常需要SSH到由我的大學Zeus運行的遠程Linux機器上。 ssh上的命令有點冗長,我希望能夠通過魚腳本更快地完成該過程。如何在任何目錄中使魚腳本可執行?

我寫了一個名爲「zeus.fish」的文件,它基本上只是調用我的ssh命令,還有一些其他的東西。目前我只能通過在文件目錄中調用「fish zeus.fish」來運行它。我希望能夠像任何其他命令一樣在任何目錄內運行腳本。只要輸入「zeus」,IE就會嘗試將我登錄到遠程機器上。我假設我必須對PATH做些什麼。我怎樣才能做到這一點?謝謝!

回答

2

我認爲這應該工作。

一下添加到腳本的第一行:
#!/bin/fish
它知道有魚來執行腳本的方式。否則,您將不得不使用./scriptname或fish腳本名稱來表明您想要魚執行它。

刪除.fish結尾,如果你想僅僅通過「zeus」來調用它。

將文件添加到您的路徑。在您的 .fishrc,寫:

export PATH=XXX:$PATH

好了,所以我從來沒有用過的魚。顯然他們不使用.fishrc,把它放到你的.bashrc的等價物中。據我所知,這是~/.config/fish/config.fish。其實你寫的行

set -x PATH $PATH XXX

隨着XXX是路徑到您的文件,例如將其複製到你的主目錄名爲bin文件夾。那麼這將是 set -x PATH $PATH $HOME/bin

最後但並非最不重要的,由作出書面文件executeable:
chmod +x FILENAME


這似乎是一個別名是一個簡單的解決方案爲您但是。 在你的魚等同的.bashrc的,你可以這樣做:

function zeus
ssh [email protected]
end

這似乎是魚相當於一個別名。如果它只是一條很長的線,你可以這樣做。在函數內部有行。現在你可以從任何地方打電話給「宙斯」。

2

您可以創建一個可執行文件並將其放置在$ PATH中的某個位置。然而,最簡單的事情是做一個zeus函數。魚的功能就像其他語言的功能:一些命名的代碼塊。

  1. 運行以下命令:function zeus; your_long_command_goes_here ; end
  2. 運行funcsave zeus保存它永久

現在zeus將運行命令。

這是做什麼把一個文件zeus.fish~/.config/fish/functions/。你當然也可以手動做到這一點。

+0

創建函數的效果很好,但是我不能使用funcsave做權限問題。 'sudo funcsave zeus'也不被認可。我也手動添加了一個zeus.fish這些內容到目錄,它也不起作用。 –

+1

@Kevin,'funcsave zeus'應該可以工作。你的主目錄是如何安裝的?你有寫權限嗎? 'sudo funcsave zeus'沒有意義:sudo的命令不會在你的魚殼會話中運行。 –

1

ridiculous_fish的回答顯然是完全正確的,但實際上在我看來有點複雜。

funced zeus; and funcsave zeus 

將做一次過同樣的事情,推出一個(空的)交互功能定義在第一個命令提示符下,編輯完成時立即保存它。如果已經有了這個名字的函數,它會在編輯器中顯示出來,所以很容易不斷地調整你的函數,而不必潛入(或者甚至考慮是否存在)你的魚配置目錄。 我在拾取shell時做出的第一個功能之一就是「func」,它完全是這兩個調用(因爲我只是很少編輯功能而沒有保存我的更改)

對於簡單的ssh東西和其他oneliners不採取任何輸出,或者輸入($ argv的)肯定就在該行的末尾附加,

alias zeus='ssh ...'; and funcsave zeus 

將這樣做。但是任何進一步的編輯都必須經過努力。

相關問題