":>" 在这里做什么?

dai*_*isy 6 bash

我看到了一些 postinst 脚本

    # setting wget options
    :> wgetrc
    echo "noclobber = off" >> wgetrc
    echo "dir_prefix = ." >> wgetrc
    echo "dirstruct = off" >> wgetrc
    echo "verbose = on" >> wgetrc
    echo "progress = dot:default" >> wgetrc
    echo "tries = 2" >> wgetrc
Run Code Online (Sandbox Code Playgroud)

:>这里做什么?

小智 12

清空当前目录中名为“wgetrc”的文件。如果不存在则创建一个空文件“wgetrc”,如果存在则用空文件覆盖一个。

相当于以下内容:

cat /dev/null > wgetrc
Run Code Online (Sandbox Code Playgroud)

  • 只是为了清除任何可能的歧义,“空出”和“无任何覆盖”并不意味着将“空”字符(十六进制 00)写入文件正在使用的空间。它只是告诉文件系统“标记”那个文件中没有数据......另外。你根本不需要`:`... `>file` 就足够了。 (4认同)
  • @Peter.O:在某些情况下,`>file` 与`:>file` 的影响不同。特别是一些交互式 shell(默认为 zsh,带有选项的 bash)会将其解释为要求用户输入而不是使用 null 的时间。如果您希望您的代码在交互式和脚本环境之间可移植(例如,它的工作方式与脚本中的复制/粘贴相同),则使用 `:>file` 更安全。否则,你关于“空值”的观点是很好的。 (3认同)