Befehl zum Anhängen einer Zeile an eine Textdatei, ohne einen Editor zu öffnen


147

Angenommen, ich habe eine Zeile, die ich zu einer Datei hinzufügen möchte, ohne einen Editor zu öffnen.

Wie könnte ich diese Zeile anhängen

alias list='ls -cl --group-directories-first'

zu dieser Datei

config.fish

Antworten:


237

Mit dem folgenden Operator können Sie einer Datei eine Textzeile hinzufügen >>:

echo "hello world" >> my_file.txt

oder in deinem Fall

echo "alias list='ls -cl --group-directories-first'" >> config.fish

Bitte beachten Sie die verschiedenen Arten von Zitaten .


25
Ich benutze echo selbst, aber sei vorsichtig, wenn du nur eine >angibst, wird die Datei abgeschnitten und nicht angehängt. für einen sichereren befehl kannst du sed verwenden:sed -i '$a hello world' filename
invertiere den

12
erklärung: -iaktualisiert die datei (andernfalls wird nur das ergebnis in stdout ausgegeben), $ist regex, das mit dem ende der datei aübereinstimmt , und hängt den folgenden text an den dateinamen an.
invertieren

echo "hello world" >> my_file.txterstellt keine neue letzte Zeile mit HW, sondern fügt sie der Zeichenfolge der letzten Zeile hinzu.
Timo

Was ist HW@timo?
7wp

Vielleicht "Hello World" @ 7wp :) Das ist es, echowas den Zeilenumbruch hinzufügt (was es zu einer Zeile macht, im Gegensatz zu nur einer Reihe von Zeichen). Sie können den Zeilenumbruch am Ende mit ausschalten -n.
Stefano Palazzo

3

Es gibt viele Methoden, Dateien anzufügen, ohne Texteditoren zu öffnen, insbesondere über mehrere verfügbare Textverarbeitungsprogramme in Ubuntu.

  • tee -a config.fish <<< "alias list='ls -cl --group-directories-first'"
  • awk 'BEGIN{ printf "alias list=\x27ls -cl --group-directories-first\x27\n" >> "config.fish" }'
  • sed -i '$a alias list='"'"'ls -cl --group-directories-first'"'" config.fish

1

Als Ergänzung zu Stefanos Antwort können Sie auch Folgendes verwenden cat:

  • Mit einem Heredoc:

    $ cat >> config.fish <<'EOF'
    > alias list='ls -cl --group-directories-first'
    > EOF
    

    <<'EOF'bedeutet "Nimm das Folgende als Eingabe, bis du eine gerade Linie erreichst EOF". Die Anführungszeichen bedeuten, die Eingabe wörtlich zu nehmen.

  • Oder die Zeile auf stdin eingeben:

    $ cat >> config.fish

    Fügen Sie dann die Zeile ein oder geben Sie sie ein, drücken Sie Enter, um zu einer neuen Zeile zu wechseln, und drücken Sie dann Strg + D, um das Ende zu markieren.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.