答案1
就w
写下来吧。ed
将创建用于写入的文件:
$ ed fred
fred: No such file or directory
w
0
?
q
$ ls fred
fred
答案2
您正在阅读的文本可能是为ed
.诊断输出在编辑器的所有实现中仅部分一致。您正在使用的编辑器的行为与人们期望当前实现的行为一样,即,它输出一条有关barney
未找到的简短诊断消息并将您置于“命令模式”。除了有关诊断消息的详细信息之外说,这与您的文本中的相同。
编辑ed
器有“默认文件名”的概念。当您使用启动编辑器时ed barney
,默认文件名是barney
.当您使用 将缓冲区写入文件时w
,由默认文件名命名的文件将被缓冲区覆盖。如果该文件不存在,则会创建该文件。
您可以从命令行设置默认文件名,如上面和您的问题所示,但您也可以使用命令设置它f
。如果不带参数,该f
命令将默认文件名打印到终端:
$ ed -p '*' myfile
myfile: No such file or directory
*f
myfile
*f my-other-file
my-other-file
*w
0
*q
$ ls -l my-other-file
-rw-r--r-- 1 myself myself 0 Nov 17 11:41 my-other-file
如果没有默认文件名(您在没有命名文件的情况下启动了编辑器),则需要在使用f somename
写入文件之前设置默认文件名w
,或者可以将文件名w
作为参数给出。w
如果没有设置默认文件名,则与文件名参数一起使用会将默认文件名设置为该名称。
w myfile
在这里更改默认文件名:
$ ed -p '*'
*w
?
*w myfile
0
*f
myfile
*q
w bar-file
做不是在这里更改默认文件名(因为它已经在命令行上设置):
$ ed -p '*' foo-file
foo-file: No such file or directory
*w bar-file
0
*f
foo-file
*q