【发布时间】:2018-12-26 18:26:43
【问题描述】:
我花了一些时间来构建这个方便的 bash 脚本,它通过stdin 接受输入。我从这个问题的最佳答案中得到了这个想法:Pipe input into a script
但是,我做了一些非常愚蠢的事情。我在终端中输入了以下内容:
echo '{"test": 1}' > ./myscript.sh
我的意思是将 | 通过管道传输到我的脚本,而不是将 > 重定向到 echo 的输出。
直到我生命中的这一刻,我从未以这种方式意外破坏任何文件。直到今天我才犯了这个错误,我真的很惊讶。 :D
无论如何,现在我已经让自己变得偏执,我会再次这样做。除了将脚本标记为只读或对其进行备份之外,我还能做些什么来保护自己?首先编写一个接受来自stdin 的输入的脚本是一种不好的做法吗?
【问题讨论】:
-
用
set -o noclobber怎么样? -
我认为正确的答案是拥有一个良好的备份系统——不仅仅是脚本,而是你不想随机丢失的一切 .您当然可以防止个别类型的数据丢失错误,但不能防止所有错误。
-
鉴于答案的多样性,我的问题可能过于广泛。我选择了我实施的答案,因为我确实有版本控制和备份计划,但我从没想过将脚本扔到路径上的目录中。
标签: bash