NES*_*NES 7 command-line bash alias fish
从这里对我的另一个问题的答案中,我了解到了在 Bash 中将命令行参数传递给别名函数的可能性。
鱼,我可以通过编辑文件编辑别名config.fish在~/.config/fish目录中添加这样一行
alias lsp='ls -ah --color=always | less -R;'
Run Code Online (Sandbox Code Playgroud)
它完美无缺。这应该相当于~/.bash_aliases在 bash 中编辑
但是当我尝试设置别名函数来传递这样的参数时
alias lsp='_(){ ls -ah --color=always $* | less -R; }; _'
Run Code Online (Sandbox Code Playgroud)
它对鱼不起作用?
在设置别名以传递命令行参数的方式上,fish 和 bash 之间是否存在任何差异,以防止第二个别名与 fish 而不是 bash 一起使用?
第二个命令实际上是一个小的 bash 脚本。Bash 是内置于 shell 的编程语言。它被其他 shell 使用,但不一定,正如我们在这里看到的。
Fish 定义了一种与 bash 完全不同的编程语言,尽管它确实支持通常形式的简单别名alias name=command;你应该定义一个函数。这是在fish中定义上述函数的方式:
stefano@lenovo ~> function lsp
ls -ah --color=always $argv | less -R
end
Run Code Online (Sandbox Code Playgroud)
并funcsave lsp因此永久保存。
您现在可以运行预期的命令,如lsp,lsp -R,lsp *.png*等等。
您还可以使用“sh”程序“调用”bash 为您运行脚本(准确地说,这将运行“dash”)。但是,如果您使用的是fish,那么您很可能想使用它提供的方法。我刚刚第一次测试它,到目前为止我印象非常深刻。
这些函数作为文件存储.config/fish/functions/在您的主目录中。在本例中,文件名将是lsp.fish. 您可以编辑文件,然后重新启动 fish,或者只是再次定义和保存函数。
学习鱼的最好方法是阅读它的内置帮助。从鱼中,只需输入
help
Run Code Online (Sandbox Code Playgroud)
你会得到一个格式很好、内容丰富且易于阅读的手册。实际上,这会打开w3mWeb 浏览器,因为帮助是 html 格式:

(按 qy 退出)