在ed(行编辑器)中,如何创建新文件进行编辑?

在ed(行编辑器)中,如何创建新文件进行编辑?

我无法在标准行编辑器 ed 中打开新文件进行编辑。不过我可以打开现有文件。

这是我收到的错误的屏幕截图

我指的用户指南说, ed 应该返回 '?barney' 即 ?[new_file_name];但就我而言,它会搜索现有文件。

答案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

相关内容