Creare file di testo e riempire con bash

Ho bisogno di creare un file di testo (a meno che non esista già) e scrivere una nuova riga al file usando bash.

Sono sicuro che è semplice, ma qualcuno potrebbe spiegare questo a me?

InformationsquelleAutor switz | 2011-01-11



5 Replies
  1. 26

    Se vuoi inserire questo script, il seguente script Bash dovrebbe fare quello che vuoi (oltre a dirvi quando il file esiste già):

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

    Se non si desidera che il “esiste già” del messaggio, è possibile utilizzare:

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

    Modifica sull’utilizzo di:

    Salvare qualsiasi versione con un nome che ti piace, diciamo “create_file” (virgolette mie, non li vogliono nel nome del file). Quindi, per rendere il file executatble, al prompt dei comandi fare:

    chmod u+x create_file
    

    Mettere il file in una directory nel percorso, quindi utilizzare con:

    create_file NAME_OF_NEW_FILE
    

    $1 è una particolare variabile di shell che prende il primo argomento sulla riga di comando, dopo il nome del programma, cioè $1 pick up NAME_OF_NEW_FILE nel precedente esempio di utilizzo.

    • cosa c’è di $1, qui?
    • Potrei sostituirlo con “text.txt”?
    • Vedere modifica spiegando $1. Se si sostituisce $1 nello script con “text.txt” è utilizzare sempre “text.txt” come nome del file.
  2. 71

    Creazione di un file di testo in unix può essere fatto attraverso un editor di testo vim, emacs, gedit, ecc). Ma cosa vuoi che potrebbe essere qualcosa di simile a questo

    echo "insert text here" > myfile.txt
    

    Che sarà messo il testo ” inserire qui il testo in un file myfile.txt. Per verificare che questo ha funzionato, usare il comando ‘cat’.

    cat myfile.txt
    

    Se si desidera aggiungere a un file utilizzare questo

    echo "append this text" >> myfile.txt
    
  3. 14

    Supponendo che si intende UNIX shell dei comandi, eseguire

    echo >> file.txt
    

    echo stampe una nuova riga, e il >> dice alla shell di aggiungere che il carattere di nuova riga al file, creare se non esiste già.

    Per rispondere correttamente alla domanda, però, avrei bisogno di sapere ciò che si desidera accadere se il file già esiste. Se si voleva sostituire il suo attuale contenuto con il capo, per esempio, potete utilizzare

    echo > file.txt
    

    EDIT: e in risposta alla Justin commento, se si desidera aggiungere la nuova riga solo se il file non esiste già, si può fare

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

    Almeno che funziona in Bash, non so se lo fa anche in altre shell.

    • +1. Penso che ci sia 1 altra interpretazione possibile: creare e scrivere un newline se il file non esiste ancora, altrimenti non modificare il file.
    • buon punto, credo di poter aggiungere che una di troppo e avremo tutte le opzioni coperto.
  4. 2

    La tua domanda è un po ‘ vago. Questo è un comando di shell che fa quello che penso tu voglia fare:

    echo >> name_of_file
    
  5. 2
    #!/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
    

    Questo codice controlla se il file JSON di un utente che è presente nel test home directory o non. Se non è presente si verrà a creare con il contenuto. È possibile modificare il percorso del file e il contenuto in base alle vostre esigenze.

Lascia un commento