2

我需要使用 shell 脚本打开和关闭文件。

我的shell.sh

vi adc.c

当我执行 myshell.sh 时,它会打开一个文件。

我需要使用 shell 脚本关闭该文件。

我应该在 myshell.sh 中包含什么命令

4

3 回答 3

6

而不是使用 vi,尝试使用 touch ?

touch /opt/adc.c

触摸是创建新文件和空文件的最简单方法。它还用于更新时间戳。然后更新文件内容。

echo "Your File contents" > /opt/adc.c

在这种情况下,您不需要“关闭”您的文件。

于 2013-05-03T10:34:17.997 回答
3

我想使用 shell 脚本创建一个文件。当我使用“vi”创建文件时,我需要手动执行 esc+wq

vi是一个交互式文件编辑器。它允许您打开/创建文件,通过用户交互编辑文件,最后保存文件并退出(按ESC-wq)。您可以在 shell 脚本中执行此操作(某些应用程序这样做是为了让用户编辑文本),但如果您只想在批处理模式下创建一个包含一些内容的文件,无需用户交互,请使用类似

#!/bin/bash

echo "My contents" > /path/to/local/adc.c
cat /path/to/local/part-r-00000 >> /path/to/local/adc.c

第一行创建一个空文件adc.c,第二行将的内容附加part-r-00000到文件中。

无需先“创建”文件。这是由 shell 自动完成的。您可能想阅读Bash: All about redirection(其他 shell 也有类似的页面)。

于 2013-05-03T10:29:13.907 回答
2

在这种情况下,您所说的“关闭”是什么意思并不是特别清楚。

通常,打开和关闭是低级文件系统操作;您打开一个文件,通过读取或写入执行所需的 I/O,然后在完成后关闭它。

当您像显示的那样调用它时,vi 不太可能真正地、物理地打开命名文件。更有可能打开文件,读取其内容,然后关闭它。当您告诉 vi 将新内容保存到磁盘时,该文件将被重新打开以进行写入,但它不会在保存之间保持打开状态。至少我不会这么认为,但我不是 vi 用户。

当您从外部“关闭”文件时,您希望 vi 做什么?

于 2013-05-03T10:25:35.623 回答