问题标签 [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.
bash - 如何使用 Turtle 将密码传递给 scp?
这就是我得到的:
当然,我会收到提示输入密码。
Turtle 可以自动输入密码吗?
haskell - 在 Turtle 中,我如何从程序中获取标准输出,处理它,然后向标准输入提供一些东西?
我目前正在玩 C 中的格式字符串攻击。我有一个玩具程序,它打印(到stdout
)我想要访问的变量的地址,然后接受一行stdin
并发送printf
它..
使用 Turtle,我希望能够:
- 执行程序
- 解析前几行
stdout
以检索地址 - 使用地址,制作一个格式字符串
printf
(我知道怎么做) - 将攻击字符串写入
stdin
但是,我看不到如何做到这一点。使用类似的函数inshell :: Text -> Shell Line -> Shell Line
,我可以stdin
向stdout
. 但是,我不知道如何stdin
在从stdout
.
bash - 使用 Shelly/Turtle 通过 ssh 运行命令
给定一个命令:
其中command
,在远程主机上执行时host
,应该是:
如何使用Haskell Shelly 或Haskell Turtle执行此命令?
Shelly 提供了一个sshPairs
,但它没有command
正确引用。
在 bash 脚本中引用可能很脆弱,这两个库(或任何 Haskell 库,就此而言)是否试图改进这一点?
shell - Haskell: Turtle: 管理 Shell 类型
这是一个工作片段:
我可以在控制台上看到路径列表。其实我想有类似[FilePath]
使用的东西,例如:
自然,它不会编译,lstree
因为它是:
处理这Shell
件事的正确方法是什么?这是一个新手问题,对不起。
haskell - 失败的`Turtle``Shell`没有抛出错误
我有一个程序可以解析程序的输出行,并生成一些输出数据结构,其中包含从这些行中提取的一些信息。为此,我正在使用turtle
:
现在问题来了,当试图定义tryParseOutput
. inproc cmd [] empty
一旦发生错误,我想中止命令(由 生成)。为此,我看到的唯一方法是使用该die
函数,该函数将抛出IOError
:
但是现在这意味着我需要修改collectOutput
来处理IOExceptions
:
虽然这可行,但我不喜欢我为解析错误抛出 IO 异常,并且涉及一些异常捕获和案例分析。所以我想知道这是否可以以更优雅的方式(可能更turtle
惯用)来解决,或者我应该忘记使用MonadError
和接受shell 脚本IOError
的生活事实?turtle
haskell - 如何将“Shell Text”转换为“Shell Line”?
在用于从密钥环获取密码的 Turtle 脚本中,ssh-add
使用这些密码调用以便不必手动填写,是以下函数:
此函数采用元组(SSH 密钥文件名,要在存储在密钥环中的文本中搜索的字符串),pwds :: Shell Line
这是从 shell 命令获取的密钥环的全部内容。
该函数的目的是获取grep
密码,并ssh-add
使用密钥文件名和密码进行调用。
问题是这个函数没有类型检查:
好像Shell Line
需要变成Shell Text
这样,请问怎么做?我愿意接受这种结构不好或不是惯用的 Haskell 的可能性(它确实有味道),如果是这样,请告知这个功能如何更好。
haskell - 如何在 haskell 龟子壳中运行/编写多个命令
我正在尝试在子shell 中执行几个命令,例如(cd ~ && pwd)
在bash 中。我可以home >>= cd
在当前的 shell 中组合一些操作,但我不知道如何在子 shell 中做同样的事情。
我浏览了文档,找不到看起来很有希望的东西,但是,我能够以这种方式做到这一点inshell "cd ~ && pwd" mempty
。
尽管这可行,但它的组合并不好,当需要执行一堆命令时,它会变得很难看。
有谁知道如何以与当前 shell 中相同的样式在子 shell 中实现多个操作的组合?
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
为什么会出现名称冲突?我不相信这是巧合,但我无法弄清楚。这些是天生不同类型的褶皱吗?
具体来说,我想使用最大修改时间将流文件名折叠成单个名称。
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
,以某种方式改变环境。我不确定那是什么样子,因为我无法:cd
在cd
包装器中调用。我猜我需要使用 ghc API?我找不到任何明显的东西。
编辑:当我尝试使用:set prompt-function更改 ghci 提示符时,我发现存在类似的问题。如果您在 ghci.conf 中添加以下内容:
提示不会使用 更改工作目录cd
,但会更改:cd
. 使用类似的东西:set prompt "%w > "
以同样的方式工作。我最好的猜测是 ghci 以某种方式将文件系统模块与用户空间模块完全分开。我可能必须深入研究 ghci 源才能弄清楚发生了什么。
它不仅限于 Turtle,Filesystem.setWorkingDirectory
表现出与Turtle.cd
.
haskell - Haskell Turtle 离开 Shell Monad
你能帮我看看海龟图书馆吗?我想编写一个简单的程序来计算磁盘空间使用情况。这是代码:
所以现在我有sizes
绑定类型Shell (IO Size)
。但我不能用sum
折叠来总结它,因为那里IO Size
有。如果它是类似的东西,[IO Size]
我可以IO
通过使用将 monadsequence
转换为IO [Size]
. 但我不能用Shell
monad 做到这一点,因为它不是Traversable
. 所以我写了这样的东西
首先我折叠Shell (IO Size)
到[IO Size]
,然后再折叠到IO [Size]
总和列表。但我想知道是否有更规范或优雅的解决方案,因为在这里我创建了两个列表来完成我的任务。而且我认为Shell
monad 用于在恒定空间中操纵实体。也许有一些可以fold
做?IO (Shell Size)
Shell (IO Size)
谢谢。