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
NES
quelle

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 .

Stefano Palazzo
quelle
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
Sergiy Kolodyazhnyy
quelle
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.

wjandrea
quelle