Linux中的touch()命令要求输入.我们应该在里面输入什么?



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

touch ()
> 

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

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

touch () {
echo "Hello"
}

(不要那样做)

因为()是shell元字符,如果你想用这样的名字创建文件,转义它们或者把它们放在引号里:

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

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

虽然有一个touch命令,(在Ubuntu中它激活可执行的/usr/bin/touch),代码touch ()从来没有接近它。

iBug的回答所述,()告诉shell正在定义一个函数,但由于没有代码,shell提示用户输入一些。

这不是touch命令所特有的。shell将对任何命令执行相同的操作,无论是真实的:

bash ()
less ()

或组成:

foobarbaz()

也有例外。例如,如果命令是别名,如ls,则会发生以下情况:

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

相关内容

  • 没有找到相关文章

最新更新