可以通过管道输入以要求确认提示的工具

可以通过管道输入以要求确认提示的工具

是否有一个 *nix 工具可以通过管道输入,在执行所有先前的命令之前强制显示确认提示?我正在考虑一种工具,它允许您将命令行片段放在网页上,但保证命令的剪切和粘贴以及意外粘贴 CR/LF 不会对目标计算机造成损坏。

这是一个简单的示例,假设有一个名为“confirm”的工具并将 dev 替换为“safedev”:

head -c 32 /dev/urandom | sudo openssl enc -rc4 -nosalt -pass stdin -in /dev/zero -out /dev/safedev | confirm

这个问题源于我自己的经历,通过从浏览器剪切和粘贴命令来破坏我的 mbr,它意外地抓住 CR/LF 并在我有机会将 sda 更改为 sdc 之前开始执行。我被迫重新创建 mbr 并在现有分区上重新安装 Ubuntu Gnome,以便恢复/重新创建我的主操作系统。

如果这个工具不存在,是否有另一种方式在网页上提供命令,可以在执行命令之前强制确认?也许是这样的?

confirm && head -c 32 /dev/urandom | sudo openssl enc -rc4 -nosalt -pass stdin -in /dev/zero -out /dev/safedev

答案1

如果您将复制的文本粘贴到嵌入了 CRLF 的终端中,则任何带前缀的命令都无法拯救您(事实上,将命令附加到结尾当所有奶牛离开谷仓后,管道将关闭门)。一些终端模拟器(例如iTerm2OSX 上)最近添加了 CRLF 检测和拦截来缓解此类问题。

一旦你解决了嵌入器 CRLF 的问题,你可能可以用类似的东西来伪造你想要的东西:

/bin/false && ( your commands here )

一旦您验证了您想要的就是您所拥有的,您就可以删除/bin/false &&.

答案2

$ getraw --delay=1 'vent warp core? [yn]' && vent_warp_core

getraw(以及文档测试read我猜,也可以通过 shell 代码中的调用来完成。

这也应该在管道中工作,或者while如果需要每个文件提示,则在循环中工作。完全人为的例子:

find . -type f | ( getraw 'ready to cat?' && cat )

答案3

如同多普戈蒂的回答,但不那么火箭科学:只需输入

#(这里是你的命令)

相关内容