问题标签 [haskell-turtle]

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 回答
112 浏览

bash - 如何使用 Turtle 将密码传递给 scp?

这就是我得到的:

当然,我会收到提示输入密码。

Turtle 可以自动输入密码吗?

0 投票
1 回答
183 浏览

haskell - 在 Turtle 中,我如何从程序中获取标准输出,处理它,然后向标准输入提供一些东西?

我目前正在玩 C 中的格式字符串攻击。我有一个玩具程序,它打印(到stdout)我想要访问的变量的地址,然后接受一行stdin并发送printf它..

使用 Turtle,我希望能够:

  • 执行程序
  • 解析前几行stdout以检索地址
  • 使用地址,制作一个格式字符串printf(我知道怎么做)
  • 将攻击字符串写入stdin

但是,我看不到如何做到这一点。使用类似的函数inshell :: Text -> Shell Line -> Shell Line,我可以stdinstdout. 但是,我不知道如何stdin stdout.

0 投票
0 回答
362 浏览

bash - 使用 Shelly/Turtle 通过 ssh 运行命令

给定一个命令:

其中command,在远程主机上执行时host,应该是:

如何使用Haskell ShellyHaskell Turtle执行此命令?

Shelly 提供了一个sshPairs,但它没有command正确引用。

在 bash 脚本中引用可能很脆弱,这两个库(或任何 Haskell 库,就此而言)是否试图改进这一点?

0 投票
1 回答
77 浏览

shell - Haskell: Turtle: 管理 Shell 类型

这是一个工作片段:

我可以在控制台上看到路径列表。其实我想有类似[FilePath]使用的东西,例如:

自然,它不会编译,lstree因为它是:

处理这Shell件事的正确方法是什么?这是一个新手问题,对不起。

0 投票
0 回答
75 浏览

haskell - 失败的`Turtle``Shell`没有抛出错误

我有一个程序可以解析程序的输出行,并生成一些输出数据结构,其中包含从这些行中提取的一些信息。为此,我正在使用turtle

现在问题来了,当试图定义tryParseOutput. inproc cmd [] empty一旦发生错误,我想中止命令(由 生成)。为此,我看到的唯一方法是使用该die函数,该函数将抛出IOError

但是现在这意味着我需要修改collectOutput来处理IOExceptions

虽然这可行,但我不喜欢我为解析错误抛出 IO 异常,并且涉及一些异常捕获和案例分析。所以我想知道这是否可以以更优雅的方式(可能更turtle惯用)来解决,或者我应该忘记使用MonadError和接受shell 脚本IOError的生活事实?turtle

0 投票
1 回答
274 浏览

haskell - 如何将“Shell Text”转换为“Shell Line”?

在用于从密钥环获取密码的 Turtle 脚本中,ssh-add使用这些密码调用以便不必手动填写,是以下函数:

此函数采用元组(SSH 密钥文件名,要在存储在密钥环中的文本中搜索的字符串),pwds :: Shell Line这是从 shell 命令获取的密钥环的全部内容。

该函数的目的是获取grep密码,并ssh-add使用密钥文件名和密码进行调用。

问题是这个函数没有类型检查:

好像Shell Line需要变成Shell Text这样,请问怎么做?我愿意接受这种结构不好或不是惯用的 Haskell 的可能性(它确实有味道),如果是这样,请告知这个功能如何更好。

0 投票
0 回答
164 浏览

haskell - 如何在 haskell 龟子壳中运行/编写多个命令

我正在尝试在子shell 中执行几个命令,例如(cd ~ && pwd)在bash 中。我可以home >>= cd在当前的 shell 中组合一些操作,但我不知道如何在子 shell 中做同样的事情。

我浏览了文档,找不到看起来很有希望的东西,但是,我能够以这种方式做到这一点inshell "cd ~ && pwd" mempty

尽管这可行,但它的组合并不好,当需要执行一堆命令时,它会变得很难看。

有谁知道如何以与当前 shell 中相同的样式在子 shell 中实现多个操作的组合?

0 投票
1 回答
96 浏览

haskell - 我应该在 Turtle 或 Foldl 包中使用折叠吗?

我在使用 Turtle 时遇到了一些困难,只有在盯着难以理解的错误消息几分钟后,我才意识到我使用了错误的fold功能。

https://hackage.haskell.org/package/turtle-1.5.8/docs/Turtle-Shell.html#v:fold https://hackage.haskell.org/package/foldl-1.4.0/docs/src /Control.Foldl.html#fold

为什么会出现名称冲突?我不相信这是巧合,但我无法弄清楚。这些是天生不同类型的褶皱吗?

具体来说,我想使用最大修改时间将流文件名折叠成单个名称。

0 投票
1 回答
263 浏览

haskell - 如何让 GHCI 识别工作目录更改?

我正在尝试使用 ghci+Turtle 作为我的交互式 shell 而不是 bash。到目前为止,它工作得很好!但我真的很喜欢 Turtle 的cd功能来更改 ghci 的工作目录,就像 ghci 命令:cd所做的那样。

假设我加载了 ghci 和 turtle/home

到目前为止一切顺利:使用 ghci's 更改目录:cd也会更改 Turtle 的工作目录。但另一种方式是不正确的:

这意味着如果我使用 Turtle 更改目录,我将无法使用:load:script利用 ghci 的制表符补全。我总是可以使用:cd而不是cd,但是因为:cd它是一个 ghci 命令,所以它不能从函数中调用或以任何方式组合。

制作一个cd与 ghci 对话的函数需要什么?我想我需要做一些事情,比如编写我自己的包装器cd,以某种方式改变环境。我不确定那是什么样子,因为我无法:cdcd包装器中调用。我猜我需要使用 ghc API?我找不到任何明显的东西。

编辑:当我尝试使用:set prompt-function更改 ghci 提示符时,我发现存在类似的问题。如果您在 ghci.conf 中添加以下内容:

提示不会使用 更改工作目录cd,但会更改:cd. 使用类似的东西:set prompt "%w > "以同样的方式工作。我最好的猜测是 ghci 以某种方式将文件系统模块与用户空间模块完全分开。我可能必须深入研究 ghci 源才能弄清楚发生了什么。

它不仅限于 Turtle,Filesystem.setWorkingDirectory表现出与Turtle.cd.

0 投票
2 回答
156 浏览

haskell - Haskell Turtle 离开 Shell Monad

你能帮我看看海龟图书馆吗?我想编写一个简单的程序来计算磁盘空间使用情况。这是代码:

所以现在我有sizes绑定类型Shell (IO Size)。但我不能用sum折叠来总结它,因为那里IO Size有。如果它是类似的东西,[IO Size]我可以IO通过使用将 monadsequence转换为IO [Size]. 但我不能用Shellmonad 做到这一点,因为它不是Traversable. 所以我写了这样的东西

首先我折叠Shell (IO Size)[IO Size],然后再折叠到IO [Size]总和列表。但我想知道是否有更规范或优雅的解决方案,因为在这里我创建了两个列表来完成我的任务。而且我认为Shellmonad 用于在恒定空间中操纵实体。也许有一些可以fold做?IO (Shell Size)Shell (IO Size)

谢谢。