问题标签 [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 投票
1 回答
1057 浏览

fish - 鱼壳中意外缺乏变量膨胀

这是版本 2.1.0

为什么第一个“回声”什么也没输出?我本来希望看到“酒吧”

0 投票
0 回答
666 浏览

msysgit - 在MSYS下编译fish shell?

我发现这篇文章在 Cygwin 下编译鱼壳?其中谈到了针对 Cygwin 编译鱼。

MSYS编译的指令是什么?(尤其是 MSYSGIT)?

这就是我所做的

  1. 安装 msysgit-netInstall https://code.google.com/p/msysgit/downloads/detail?name=msysGit-netinstall-1.8.4-preview20130916.exe&can=2&q=
  2. 从http://sourceforge.net/projects/mingw/files/MSYS/msysdev/autoconf/autoconf-2.68-1/autoconf-2.68-1-msys-1.0.17-bin.tar.lzma/download安装 autoconf
  3. 克隆鱼回购
  4. 运行自动配置
  5. 运行./配置

该过程失败

任何想法?

0 投票
2 回答
2803 浏览

linux - Bash(或其他 shell):用函数/脚本包装所有命令

编辑:这个问题最初是特定于 bash 的。我仍然宁愿有一个 bash 解决方案,但如果有一个很好的方法可以在另一个 shell 中执行此操作,那么了解它也会很有用!

好的,问题的顶级描述。我希望能够向 bash 添加一个钩子,这样,当用户输入时,例如$cat foo | sort -n | less,它会被拦截并翻译成wrapper 'cat foo | sort -n | less'. 我已经看到了在每个命令之前和之后运行命令的方法(使用 DEBUG 陷阱或 PROMPT_COMMAND 或类似的),但没有关于如何拦截每个命令并允许它由另一个进程处理。有没有办法做到这一点?

为了解释我为什么要这样做,以防人们有其他方法来解决它:

脚本之类的工具让您将您在终端中所做的一切记录到日志中(在某种程度上,就像 bash 历史记录一样)。但是,它们做得不是很好 - 脚本将输入和输出混合成一个大字符串,并与占据屏幕的 vi 等应用程序混淆,历史记录只为您提供输入的原始命令,而且它们都不起作用好吧,如果您同时将命令输入到多个终端。我想做的是捕获更丰富的信息——例如,命令、执行时间、完成时间、退出状态、stdin 和 stdout 的前几行。我还希望将其发送到某个可以愉快地多路复用多个终端的监听守护进程。

这样做的动机来自于试图理解探索性数据分析,如事后程序。有了这样更丰富的信息,就有可能生成关于所发生事件的体面报告,将一个命令的多次调用压缩成一个命令,其中前几个给出非零退出,通过搜索所有触及文件的内容来询问文件来自哪里,等等等等

0 投票
1 回答
75 浏览

shell - 将鱼函数分配给另一个名称

我试图自定义fish_prompt,我想在哪里调用 previous fish_prompt。我该怎么做呢:

我试过这样:

但是混叠没有帮助。它只创建一个别名并导致递归。有没有办法将函数分配给不同的名称(此处fish_promptfish_prompt2.

0 投票
1 回答
6689 浏览

shell - 鱼壳范围内的支撑扩展

在 bash 中,我可以执行以下操作

有没有办法在鱼身上达到同样的效果?

0 投票
2 回答
17305 浏览

shell - 如何从我自己的脚本中为 fish shell 提供选项卡补全?

我正在运行 Ubuntu 13.10 和 fish 2.1.0。我想为自己编写一个 Python 脚本来从命令行执行一些任务。该脚本将需要命令行参数。

如何编写我的脚本,以便鱼可以请求并获取给定参数的可能值。潜在价值列表是动态的。也就是说,它将以编程方式确定(例如,与某些标准匹配的文件夹名称列表)。

我想要的最终结果是这样的:

myprog我的脚本文件在哪里,argument参数名称folder1等是我脚本中某个函数生成的有效值。

这可能吗,如果可以,怎么办?

0 投票
2 回答
21231 浏览

fish - 如何为鱼壳翻译这个“for”循环?

我正在将一个脚本从 Z shell 翻译为 Fish,而我有这一部分我不知道如何翻译:

for我可以在 Fish 中找到的唯一循环文档就是这种。我将如何在 Fish 中执行此操作?

0 投票
2 回答
734 浏览

fish - 在 Fish shell 中获取随机文件

我正在把这个 Zsh 函数翻译成 Fish

这是我到目前为止所得到的:

cat条线还需要修理。我知道RANDOM应该替换为random,但我不知道该怎么做。

0 投票
2 回答
124 浏览

git - 外壳重定向“git clean”输出

我有一个大型代码仓库,一旦编译,就会在 git 源代码树中添加大约 3000 个额外文件(.os、.sos 等),以及数百个其他文件更改(自动生成的文件、权限等)。所以我已经习惯在 every 之前做一个git clean -fand ,以避免我会遇到的大量冲突。git reset --hard HEADpull

我正在尝试将其自动化为一个非常小的脚本,但我找不到任何方法来重定向git clean. 具体来说,我正在做这样的事情:

(在鱼壳中)

我试过设置pv$PAGER和启用--paginate,没有运气。我尝试了各种管道组合,2>&1 |但无济于事。

任何人都知道如何使这项工作?

0 投票
2 回答
2352 浏览

git - 使用当前命令生成鱼壳提示

我正在尝试在我的 fish shell 提示符中生成 git status 。我遇到的问题是获取 git status 有点慢。所以,我想将当前的 git 状态保存在一个全局变量中,并且只在用户运行某些命令(例如“cd”和“git”)时更新它。我试图获取用户使用“历史”命令执行的最后一个命令,但结果好坏参半。这是我的代码:

这段代码的主要问题是,由于某种原因,历史并不总是立即返回最后一个命令。如果我运行“cd”或“git”以外的命令,然后 cd 进入 git 目录,则需要执行另一个命令才能将 git_status 更新为正确的字符串。

是否有其他方法可以在需要生成提示之前执行命令?

[更新]

这是尝试显示问题的终端输出:

当我 cd 进入 git 目录(在本例中为 .oh-my-fish)时,分支名称应立即出现。但是,只有在我执行另一个命令之后它才最终出现。我认为“echo $history[1]”在命令行上返回正确的值,但不是从提示方法中运行时。

顺便说一句,这是我的 github 存储库的链接,其中包含所有这些代码:https ://github.com/oneself/oh-my-fish