【问题标题】:Alias Substitution in Fish Shell鱼壳中的别名替换
【发布时间】:2015-04-22 18:46:37
【问题描述】:

问题:是否有与 Bash 的别名替换等效的 Fish 或者保持代码清洁和干燥的推荐最佳做法是什么?

背景: Bash 中有一个非常有用的别名功能,称为别名替换。手册页中简要提到了它:

alias [-p] [name[=value] ...]
    ...
    A trailing space in value causes the next word to be checked for alias substitution when the alias is expanded.
    ...

此功能的强大功能可以通过示例轻松传达。考虑到许多用户定义了一个 grep 别名。这是我的:

# extended regex, skip binaries, devices, sockets, & dirs, colored, & line
# -buffered. use a non- canonical alias instead of GREP_OPTIONS which may wreck
# poorly written scripts
alias g='grep -EID skip -d skip --color=auto --line-buffered'

同样,许多相同的用户为 xargs 定义了一个别名。这是我的没有别名替换:

alias x='xargs -rd\\n' # \n delimited, don't run on empty in

最后,这就是我可能想要使用它但它不起作用的方式:

$ find|x g foo
xargs: g: No such file or directory

此命令失败,因为 x 已扩展为 xargs,并且找不到名为 g 的可执行文件。有很多解决方法,但我认为大多数都很糟糕。但是,只需添加一个尾随空格,shell 将代表我们执行别名替换,并且命令将按预期工作:

alias x='xargs -rd\\n ' # \n delimited, don't run on empty in, + expansion
#                    ^-- this space is for expanding a subsequent alias

请记住,这只是一个示例,不一定是实际用例。

2015-05-06 更新

我从未找到 Fishism 解决方案,但我觉得替代方案值得评论。我采用了在~/bin 中创建shell 脚本的方法。缺点是:

  • shell 配置现在是多个文件。
  • 解释器无法检查其他简单的别名和函数。

不过,我觉得好处是相当大的:

  • 脚本可以用任何语言编写。
  • 脚本完全独立于 shell 选择。尝试新的 shell 非常轻松。拥有一个无需用多种语言重写或维护的单一提示脚本是一种乐趣。

【问题讨论】:

  • 第一反应:no。下一个反应:由于鱼别名只是变相的函数,因此您可以创建一个xg 函数来组合bash xg 别名。
  • @glennjackman 当你说结合时,你的意思是function xg; xargs -rd\\n grep -EID skip -d skip --color=auto --line-buffered $argv; end?这正是我想要避免的,因为我需要在两个地方分别定义“g”和x 功能,gxgx
  • 这正是我的意思。 fish 没有等效于 bash 的别名替换(或 zsh 的全局别名),所以我认为您没有太多选择。我想你可以说像function x; xargs -rd\\n fish -c "$argv"; end 这样的话,但这可能充满了陷阱
  • @glennjackman 谢谢,这是我想避免使用的 Bash 解决方法之一。我想我会在我的路径中添加一个愚蠢的“g”脚本。

标签: bash fish


【解决方案1】:

这不是基于 Fish 的解决方案——但我怀疑 fish 的答案将是 不可能

您可以将别名创建为.fish.sh 脚本并将它们符号链接到/usr/local/bin - 这将为您提供等效的行为。

【讨论】:

  • 谢谢,这是我目前正在使用的解决方法,但我正在使用~/bin,但它并非没有缺点。
猜你喜欢
  • 2014-04-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-23
  • 1970-01-01
相关资源
最近更新 更多