【问题标题】:How to close a file using shell script如何使用 shell 脚本关闭文件
【发布时间】:2013-05-03 10:21:54
【问题描述】:

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

myshell.sh

vi adc.c

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

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

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

【问题讨论】:

  • 为什么你的脚本中需要vi(一个交互式应用程序)?你的用例是什么?您只是想显示文件内容吗?
  • 我想使用shell脚本创建一个文件。当我使用'vi'创建一个文件但我需要手动执行esc+wq
  • 但是您是否要求用户可以交互地编辑文件?如果您只想创建文件,shell 脚本中有更简单的选项

标签: c shell


【解决方案1】:

不使用 vi,尝试使用 touch ?

touch /opt/adc.c

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

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

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

【讨论】:

    【解决方案2】:

    我想使用 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有类似的页面)。

    【讨论】:

    • 好的,但是看这个。我需要做 cat /path/to/local/part-r-00000> /path/to/local/adc.c 所以我需要创建 adc.c
    • 没有。 > 自动创建文件。试试看。
    • thanks.ys 它会自动创建一个文件。所以当我第二次运行时,相同的文件将得到正确更新。
    • 是的。根据您使用的重定向(>>>),首先删除文件内容将数据附加到文件中
    【解决方案3】:

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

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

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

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

    【讨论】:

    • 这个文件将用于写入我的hadoop结果。所以我应该先创建那个文件。稍后将数据写入该文件
    • 在这种情况下,您不需要“创建”文件。当您通过 shell 脚本中的重定向开始写入文件时,这会自动完成。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多