【问题标题】:Can linux cat command be used for writing text to file?linux cat 命令可以用于将文本写入文件吗?
【发布时间】:2013-06-11 12:38:14
【问题描述】:

是这样的:

cat "Some text here." > myfile.txt

可能吗?这样myfile.txt 的内容现在将被覆盖为:

Some text here.

这对我不起作用,但也不会引发任何错误。

对基于cat 的解决方案(不是vim/vi/emacs 等)特别感兴趣。所有在线示例都显示 cat 与文件输入一起使用,而不是原始文本...

【问题讨论】:

    标签: linux cat


    【解决方案1】:

    对于我在 MacOS 11.4 上的 Jenkins

    {
       echo 'line 1' $var1
       echo 'line 2'
       echo 'result' $var5
    
    } > ${destination_file}
    

    我用cat语法尝试了很多次,例如:cat > ${dest_file} <<EOF ... EOF,得到了错误syntax error: unexpected end of file。因此,我使用echo 语法将多行文本输出到文件。

    参考资料:

    【讨论】:

      【解决方案2】:

      对于文本文件:

      cat > output.txt <<EOF
      some text
      some lines
      EOF
      

      对于 PHP 文件:

      cat > test.php <<PHP
      <?php
      echo "Test";
      echo \$var;
      ?>
      PHP
      

      【讨论】:

        【解决方案3】:

        您的问题的解决方案是:

        echo " Some Text Goes Here " > filename.txt

        但是如果你想将一个文件的输出重定向到另一个文件,或者你想将一个文件的输出附加到另一个文件,你可以使用 cat 命令:

        cat filename > newfile -- 将文件名的输出重定向到新文件

        cat 文件名 >> newfile -- 将文件名的输出附加到新文件

        【讨论】:

          【解决方案4】:

          另一种使用 cat 将文本写入文件的方法是这样的

          cat >file.txt <<< Write something here
          

          【讨论】:

          • 当您尝试将命令的输出写入文件时,此命令非常有用。例如cat &gt; docker-inspect.txt &lt;&lt;&lt; docker 检查图像` `
          【解决方案5】:

          简单地用 cat 管道回显

          例如

          echo write something to file.txt | cat > file.txt
          

          【讨论】:

            【解决方案6】:

            使用echo编写带有环境变量的多行文本:

            echo -e "
            Home Directory: $HOME \n
            hello world 1 \n
            hello world 2 \n
            line n... \n
            " > file.txt 
            

            【讨论】:

              【解决方案7】:

              你也可以这样做:

              user@host: $ cat<<EOF > file.txt
              $ > 1 line
              $ > other line
              $ > n line
              $ > EOF
              user@host: $ _
              

              我相信有很多方法可以使用它。

              【讨论】:

                【解决方案8】:

                我使用以下代码将原始文本写入文件,以更新我的 CPU 设置。希望这会有所帮助! 脚本:

                #!/bin/sh
                
                cat > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor <<EOF
                performance
                EOF
                
                cat > /sys/devices/system/cpu/cpu1/cpufreq/scaling_governor <<EOF
                performance
                EOF
                

                这会将文本“性能”写入上面脚本中提到的两个文件。此示例覆盖文件中的旧数据。

                此代码保存为文件(cpu_update.sh)并使其可执行运行:

                chmod +x cpu_update.sh
                

                之后,您可以使用以下命令运行脚本:

                ./cpu_update.sh
                

                如果您不想覆盖文件中的旧数据,请退出

                cat > /sys/devices/system/cpu/cpu1/cpufreq/scaling_governor <<EOF
                

                cat >> /sys/devices/system/cpu/cpu1/cpufreq/scaling_governor <<EOF
                

                这会将您的文本附加到文件的末尾,而不会删除文件中已有的其他数据。

                【讨论】:

                  【解决方案9】:

                  cat 也可以在| 之后使用来写入文件,即管道向 cat 提供数据流

                  【讨论】:

                    【解决方案10】:
                    cat > filename.txt
                    

                    输入文字 直到 EOF 保存文本使用:ctrl+d

                    如果您想阅读该 .txt 文件,请使用

                    cat filename.txt
                    

                    还有一点 .txt 不是强制性的,供您参考。

                    【讨论】:

                      【解决方案11】:

                      这是另一种方式-

                      cat > outfile.txt
                      >Enter text
                      >to save press ctrl-d
                      

                      【讨论】:

                        【解决方案12】:

                        听起来您正在寻找Here document

                        cat > outfile.txt <<EOF
                        >some text
                        >to save
                        >EOF
                        

                        【讨论】:

                        • 在 linux Kernel 2.6.32 centos 6 上,我必须省略 &gt; 字符才能获得预期的输出。
                        • &gt; 字符代表$PS2 的默认值;它们会自动显示,而不是用来输入的。如果 $PS2 的值不同,则会显示该值。
                        【解决方案13】:

                        echo 就是这样做的:

                        echo "Some text here." > myfile.txt
                        

                        【讨论】:

                        • 奖励:echo "Some text here." &gt;&gt; myfile.txt 附加到文件末尾
                        • 如果您需要在文本中使用双引号,请将整个内容用单引号括起来。这对 .json 之类的东西很有用,例如echo '{"info1": "123456"}' &gt; info.json
                        猜你喜欢
                        • 2017-04-18
                        • 1970-01-01
                        • 1970-01-01
                        • 2014-02-26
                        • 1970-01-01
                        • 1970-01-01
                        • 2021-05-07
                        • 2015-06-23
                        • 2019-05-28
                        相关资源
                        最近更新 更多