问题标签 [fish]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
12901 浏览

regex - unix:如何判断字符串是否与正则表达式匹配

尝试fish shell,所以我正在翻译我的 bash 函数。问题是,在一种情况下,我使用 bash 正则表达式来检查字符串是否与正则表达式匹配。我不知道如何将其翻译成鱼。

是我的例子。

  • 我查看了sed,但我没有看到一种方法让它根据正则表达式是否匹配来设置其退出状态。
  • 我考虑委托给Ruby,但同样,根据匹配设置退出状态需要让它变得非常丑陋(见下文)。
  • 我考虑委托回bash,但尽管尝试了三四种方式,但从未得到匹配。

那么,*nix 中有没有办法检查字符串是否与正则表达式匹配,所以我可以将它放入条件中?


这是我目前的工作,但我不满意:

0 投票
1 回答
6198 浏览

fish - 使用子命令创建自动完成脚本

我正在尝试创建一个用于鱼的自动完成脚本;我正在为同一个程序移植一个 bash 完成脚本。

该程序具有三个顶级命令,例如foobar和 ,baz并且每个都有一些子命令,只需说a bc

我所看到的是顶级命令自动完成正常,所以如果我输入ffoo会自动完成,但是如果我再次点击选项卡以查看它的子命令是什么,我会看到foo, bar, baz, a,bc它应该只是a, b,c

我使用git 完成脚本作为参考,因为它似乎工作正常。我也使用git flow 脚本作为参考。

认为这是在 git 完成脚本中通过以下方式处理的:

这是有道理的,如果命令只有一个参数,即脚本本身,则只能使用完成;如果您将其用作-n调用完成顶级命令的条件(),我认为会发生正确的事情。

然而,我所看到的并非如此。我将该函数复制到我的脚本中,适当地更改了“git”,但没有任何运气。

精简后的脚本如下:

非常感谢有关如何进行这项工作的任何建议。

0 投票
2 回答
2916 浏览

linux - Fish 编程:为什么 config.fish 中的 `bind` 命令没有执行?

在结束时/usr/share/fish/config.fish,我有以下命令:

之后我运行鱼,它打印“foo”。然后我运行bind打印所有绑定键组合的列表,但是在bind.

我错过了什么?

0 投票
4 回答
3213 浏览

bash - 用于从文件名中删除前导空格的 Bash 脚本

所以我有一堆文件,例如:

我需要在 bash 或 fish 脚本中删除前导空格。

0 投票
1 回答
91 浏览

git - Fish函数创建随机文件

我创建了一个鱼壳函数来为我缩短“git add”过程(因为它太长了):

它工作得很好,如果我不带参数调用它,则添加整个目录,如果我命名它们,则只添加特定文件,有一个非常奇怪的例外:

使用“ga”而不是“git add”,带或不带参数,在目录中创建一个文件名“0”。其内容一般为单个数字(0 或 2)。

知道这里发生了什么吗?这很奇怪,也很痛苦,因为我喜欢这个功能,但不想继续将空的“0”文件推到我贡献的 repos 中。

0 投票
3 回答
3001 浏览

shell - 如何在鱼壳脚本中获取程序名称?

在 bash 中,与在 ruby​​ 中一样,程序名称由 $0 给出。鱼里面是什么?如果必须,我可以执行以下操作:

但我确信程序名称必须已经在某处可用。我也可以在每个程序的存根中设置程序名称,但这存在维护问题。

0 投票
1 回答
1213 浏览

fish - 鱼壳中的字符串包含

我查看了 Stack Overflow 上所有类似的问题,并在他们的文档中尝试了很多东西。我目前的尝试如下。

我想要完成的是基于计算机用户的不同行为。我有一台工作计算机和一台家用计算机,当我在命令行中输入“代码”时,我希望工作计算机转到不同的目录,而不是我在家里输入它时想要的目录。我试过这个(我的工作用户名是 afk,home 是 sfk):

目前,这是在抱怨“未知命令包含用户/sfk/.config/fish/”(当我输入这个时,我的密码是用户/sfk/.config/fish/)。我认为可能 contains 仅用于列表,但文档对此并不是特别清楚?知道我该怎么做吗?

编辑

刚刚尝试过,虽然它不再出错,但它最终出现在 else 情况下,它不应该,导致我的用户是 sfk,它包含在 dirh 字符串中:

0 投票
1 回答
247 浏览

regex - 如果 $HOME 是一个目录,我如何使用 sed 输出当前和上一个目录,同时包含波浪号?

目前,我的zsh提示$'%2~ %%'用于输出当前和上一个目录,然后才显示%为我的输入提示。例如,如果我在/Users/david/Documents/Code/project,我的提示将显示:

Code/project %

但是,如果我备份到Code目录中,则会显示一个波浪号:

~Documents/Code %

我试图fish通过替换其prompt_pwd函数中提供的正则表达式并传递给sed. 默认情况下,该函数如下所示:

目前,这会输出当前目录的全名,但会将所有其他目录截断为一个字符(并替换$HOME为波浪号)。我试图弄清楚我可以提供什么正则表达式来复制我在 zsh 中所做的事情。

0 投票
1 回答
83 浏览

fish - 鱼循环奇怪的行为

我有这个循环config.fish

这很好用,迭代了我终端的宽度。我得到并输出:

我想并排打印数字,不换行。

我试过这样做echo -n $x,但这导致循环不再工作,我只是得到一个准系统外壳:

为什么循环失败?

0 投票
1 回答
38909 浏览

shell - How do you dynamically reload fish config files as you would in bash?

I am looking for the equivalent of source .bashrc for Fish.