如何解决用 zsh 修复破损的管道
正如此处 https://www.howtogeek.com/howto/30184/10-ways-to-generate-a-random-password-from-the-command-line/ 所建议的,我正在尝试使用以下命令生成随机密码:
< /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c${1:-32};echo;
这在 bash shell 中工作流畅,但在 zsh 上给出以下警告/错误消息:
a8vuFvMzDcV4E-vbbkvfgi1Gf3KYtYiC[1] 40491 断管 tr -dc _A-Z-a-z-0-9
此消息的来源是什么?我们如何调整它以使其在 zsh 上运行?
解决方法
如 zsh 邮件列表 https://www.zsh.org/mla/workers/2021/msg01171.html 中所述,这是使用选项 setopt PRINT_EXIT_VALUE
时的预期行为。
保持该选项设置但不适用于该单个命令的解决方案是在子shell中运行它:
( < /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c 32; echo )
,
很难说,因为它在我的两个工作站上的 bash 和 zsh 上非常适合我。
可能不是第一个进程(urandom ...)产生写入第二个进程的无限输出的问题那么大:“head -c${1:-32};echo;”
在第二个进程结束的那一刻,第一个仍然继续写入管道并因此出现错误(因为管道被第二个进程关闭)。
这里解释得更好:
https://superuser.com/questions/554855/how-can-i-fix-a-broken-pipe-error
同一个url也有解决办法,比如:
< /dev/urandom tr -dc _A-Z-a-z-0-9 | tail -n +1 | head -c${1:-32};echo;
但是我无法检查它,因为对我来说它已经很好用了。 可以试试吗?
,一种解决方法是使用 import SiteLayout from '../../components/SiteLayout'
import React from 'react'
import dynamic from 'next/dynamic'
const Viewer = dynamic(() => import('../resume/viewer.js'),{ ssr: false })
export default function Resume({ resume }) {
return window ? (
<div>
<SiteLayout>
<div className="main w-screen">
<Viewer />
</div>
</SiteLayout>
</div>
) : null
}
读取 /dev/urandom 而不是 head
,如下所示:
tr
但不能保证我会得到一个 32 个字符的随机序列。而增加1000到100000又会导致断管。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。