Create text file and fill it using bash

前端 未结 5 681
一整个雨季
一整个雨季 2020-12-12 19:45

I need to create a text file (unless it already exists) and write a new line to the file all using bash.

I\'m sure it\'s simple, but could anyone explain this to me?

相关标签:
5条回答
  • 2020-12-12 19:55

    Your question is a a bit vague. This is a shell command that does what I think you want to do:

    echo >> name_of_file
    
    0 讨论(0)
  • 2020-12-12 19:56

    Creating a text file in unix can be done through a text editor (vim, emacs, gedit, etc). But what you want might be something like this

    echo "insert text here" > myfile.txt
    

    That will put the text 'insert text here' into a file myfile.txt. To verify that this worked use the command 'cat'.

    cat myfile.txt
    

    If you want to append to a file use this

    echo "append this text" >> myfile.txt
    
    0 讨论(0)
  • 2020-12-12 19:56
    #!/bin/bash
    file_location=/home/test/$1.json
    if [ -e $policy ]; then
      echo "File $1.json already exists!"
    else
      cat > $file_location <<EOF
    {
          "contact": {
              "name": "xyz",
              "phonenumber":   "xxx-xxx-xxxx"
          }
        }
    EOF
    fi
    

    This code checks if the given JSON file of the user is present in test home directory or not. If it's not present it will create it with the content. You can modify the file location and content according to your needs.

    0 讨论(0)
  • 2020-12-12 20:02

    Assuming you mean UNIX shell commands, just run

    echo >> file.txt
    

    echo prints a newline, and the >> tells the shell to append that newline to the file, creating if it doesn't already exist.

    In order to properly answer the question, though, I'd need to know what you would want to happen if the file already does exist. If you wanted to replace its current contents with the newline, for example, you would use

    echo > file.txt
    

    EDIT: and in response to Justin's comment, if you want to add the newline only if the file didn't already exist, you can do

    test -e file.txt || echo > file.txt
    

    At least that works in Bash, I'm not sure if it also does in other shells.

    0 讨论(0)
  • 2020-12-12 20:03

    If you're wanting this as a script, the following Bash script should do what you want (plus tell you when the file already exists):

    #!/bin/bash
    if [ -e $1 ]; then
      echo "File $1 already exists!"
    else
      echo >> $1
    fi
    

    If you don't want the "already exists" message, you can use:

    #!/bin/bash
    if [ ! -e $1 ]; then
      echo >> $1
    fi
    

    Edit about using:

    Save whichever version with a name you like, let's say "create_file" (quotes mine, you don't want them in the file name). Then, to make the file executatble, at a command prompt do:

    chmod u+x create_file
    

    Put the file in a directory in your path, then use it with:

    create_file NAME_OF_NEW_FILE
    

    The $1 is a special shell variable which takes the first argument on the command line after the program name; i.e. $1 will pick up NAME_OF_NEW_FILE in the above usage example.

    0 讨论(0)
提交回复
热议问题