2014-02-19 40 views
0

我使用下面的代码在UNIX使用命令来创建一个新的文件cat15与输出重定向元字符> Unix的cat命令,创建空文件

# cat > cat15 

这个命令添加一个新的文件cat15在根目录和任何我键入后,此命令被存储到创建的文件。但我无法退出此编辑器。

换句话说,我没有得到壳牌提示符

+5

按空格处的'ctrl + d'发送一个EOF字符。 –

+3

可以说,这是一个关于正确使用终端而不是编程的问题,因此最好放在SuperUser上。 –

+0

感谢您的帮助:) –

回答

1

cat命令从标准输入读取,如果你不指定文件名。它继续这样做直到它收到一个EOF或被杀死。您可以通过输入<ctrl>+d发送EOF并返回终端。

人们通常做的是要么使用

touch filename 

echo -n > filename 

创建一个空文件。正如Charles在下面正确地指出的那样,“echo -n”并不总是一个好主意(尽管通常可以在“流行”的Linux发行版中指望它)。我强烈建议只使用触摸。

+0

我建议'printf'通过'echo -n' - 更便携;并非所有版本的echo都带有标志,并且基准POSIX标准(缺少XSI扩展)对于标志的含义有些不明确。 –

+0

因为这个原因,我很犹豫建议“回声”,但这很普遍,我忍不住自己。 ;)我对printf的主要问题是它通常不是shell内建的,所以如果这是在一个大循环中完成的话,它会超级慢。 – dannysauer

+1

正确 - 虽然POSIX指定printf存在,但它不是被迫成为内建的。另一方面,它几乎无处不在 - ash,busybox等。 –

0

如果你只是想创建一个空文件,无论一个人是否存在与否,你可以用“>”是这样的:

> cat15 

将痛殴已经叫这个名字存在任何事情。

+0

不错 - 虽然它适用于大多数shell,但它不在'zsh'中,例如(开始等待stdin输入)。那里的工作也是使用':'builtin:':> cat15'。还没有找到一个没有工作的shell,但这并不意味着没有任何(尝试'bash','dash','ksh','zsh','tcsh')。 – mklement0