Ich muss eine Textdatei erstellen (sofern sie nicht bereits vorhanden ist) und eine neue Zeile mit bash in die Datei schreiben.
Ich bin sicher, es ist einfach, aber könnte mir das jemand erklären?
Antworten:
Wenn Sie dies als Skript möchten, sollte das folgende Bash-Skript das tun, was Sie möchten (und Ihnen mitteilen, wann die Datei bereits vorhanden ist):
#!/bin/bash
if [ -e $1 ]; then
echo "File $1 already exists!"
else
echo >> $1
fi
Wenn Sie nicht möchten, dass die Meldung "bereits vorhanden" angezeigt wird, können Sie Folgendes verwenden:
#!/bin/bash
if [ ! -e $1 ]; then
echo >> $1
fi
Bearbeiten über die Verwendung von:
Speichern Sie jede Version mit einem Namen, den Sie mögen, sagen wir "create_file" (zitiert meine, Sie möchten sie nicht im Dateinamen haben). Um die Datei ausführbar zu machen, führen Sie an einer Eingabeaufforderung Folgendes aus:
chmod u+x create_file
Legen Sie die Datei in einem Verzeichnis in Ihrem Pfad ab und verwenden Sie sie dann mit:
create_file NAME_OF_NEW_FILE
$ 1 ist eine spezielle Shell-Variable, die das erste Argument in der Befehlszeile nach dem Programmnamen verwendet. dh $ 1 nimmt NAME_OF_NEW_FILE im obigen Verwendungsbeispiel auf.
Das Erstellen einer Textdatei unter Unix kann über einen Texteditor (vim, emacs, gedit usw.) erfolgen. Aber was Sie wollen, könnte so etwas sein
echo "insert text here" > myfile.txt
Dadurch wird der Text 'Text hier einfügen' in eine Datei myfile.txt eingefügt. Um zu überprüfen, ob dies funktioniert hat, verwenden Sie den Befehl 'cat'.
cat myfile.txt
Wenn Sie an eine Datei anhängen möchten, verwenden Sie diese Option
echo "append this text" >> myfile.txt
Angenommen, Sie meinen UNIX-Shell-Befehle, führen Sie sie einfach aus
echo >> file.txt
echo
Gibt eine neue Zeile aus und >>
weist die Shell an, diese neue Zeile an die Datei anzuhängen und zu erstellen, falls sie noch nicht vorhanden ist.
Um die Frage richtig zu beantworten, muss ich jedoch wissen, was passieren soll, wenn die Datei bereits vorhanden ist. Wenn Sie beispielsweise den aktuellen Inhalt durch die neue Zeile ersetzen möchten, würden Sie verwenden
echo > file.txt
BEARBEITEN: und als Antwort auf Justins Kommentar können Sie dies tun, wenn Sie die neue Zeile nur hinzufügen möchten, wenn die Datei noch nicht vorhanden war
test -e file.txt || echo > file.txt
Zumindest funktioniert das in Bash, ich bin mir nicht sicher, ob es auch in anderen Shells funktioniert.
#!/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
Dieser Code prüft, ob die angegebene JSON-Datei des Benutzers im Test-Home-Verzeichnis vorhanden ist oder nicht. Wenn es nicht vorhanden ist, wird es mit dem Inhalt erstellt. Sie können den Speicherort und den Inhalt der Datei entsprechend Ihren Anforderungen ändern.