2015-09-27 49 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 

将这样做。但是任何进一步的编辑都必须经过努力。

相关问题