【问题标题】:The touch () command in Linux is asking for an input. What are we supposed to type in there?Linux 中的 touch () 命令要求输入。我们应该在那里输入什么?
【发布时间】:2021-01-17 14:25:48
【问题描述】:

我正在使用touch 命令,当我输入touch () 命令时,我预计会出现错误或名为() 的新空文件。 相反,我得到了这个

touch ()
> 

它希望我输入一些东西。
这个touch () 命令在做什么?有什么用?

【问题讨论】:

    标签: shell command-line-interface touch


    【解决方案1】:

    使用touch (),您的shell 期望您定义一个函数,如下所示:

    touch () {
      echo "Hello"
    }
    

    (不要那样做)

    由于() 是shell 元字符,如果您想创建具有此类名称的文件,请将它们转义或放在引号中:

    touch \(\)
    touch '()'
    touch "()"
    

    【讨论】:

      【解决方案2】:

      这个问题有点像错觉,基于命令类型之间的混淆——有些命令是内置在 shell 中的关键字,(如 forif),有些是别名,(如 @ 987654324@ 和 lll 在大多数发行版上),有些是函数,但大多数是可执行文件。

      虽然有 touch 命令(在 Ubuntu 中它会激活可执行文件 /usr/bin/touch),但代码 touch () 永远不会靠近它。

      正如iBug's answer 所说,() 告诉外壳程序正在定义一个函数,但由于没有代码,外壳程序会提示用户输入一些代码。

      这并不特定于touch 命令。 Shell 将对任何命令执行相同的操作,无论是真实的:

       bash ()
       less ()
      

      或编造:

      foobarbaz()
      

      也有例外。例如,如果命令是一个别名,比如ls,就会发生这种情况:

      ls ()
      bash: syntax error near unexpected token `('
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-11-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-12-06
        相关资源
        最近更新 更多