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


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

125
2018-01-14 19:00


Ursprung




Antworten:


Sie können eine anhängen Linie von Text in eine Datei mithilfe von >> Operator:

echo "hello world" >> my_file.txt

oder in deinem Fall

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

Bitte beachten Sie die verschiedene Arten von Zitaten.


202
2018-01-14 19:09



Ich benutze Echo selbst, aber sei vorsichtig, wenn du nur einen spezifizierst > dann wird die Datei abgeschnitten, nicht angehängt. Für einen sichereren Befehl können Sie sed verwenden: sed -i '$a hello world' filename - invert
Erläuterung: -i wird die Datei aktualisieren (andernfalls wird das Ergebnis einfach auf stdout gedruckt), $ ist Regex, die das Ende der Datei übereinstimmen, und a hängt den folgenden Text an Dateiname an. - invert
echo "hello world" >> my_file.txt erstellt keine neue letzte Zeile mit HW, aber füge es der Zeichenkette der letzten Zeile hinzu. - Timo
Was ist HW @timo? - 7wp
Vielleicht "Hallo Welt" @ 7wp :) Es ist echo das fügt den Zeilenumbruch hinzu (macht es zu einer Zeile im Gegensatz zu nur ein paar Zeichen). Sie können den Zeilenumbruch am Ende mit ausschalten -n. - Stefano Palazzo♦


Es gibt viele Möglichkeiten, Dateien an die Datei anzuhängen, ohne die 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

2
2018-06-17 21:01





Hinzufügen zu Stefano's Antwortkannst du auch benutzen cat:

  • Heredoc verwenden:

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

    <<'EOF' bedeutet "nehmen Sie Folgendes als Eingabe, bis Sie eine Linie erreichen, die gerade ist EOF"Die Zitate bedeuten, die Eingabe wörtlich zu nehmen.

  • Oder die Zeile auf stdin eingeben:

    $ cat >> config.fish
    

    Dann fügen oder tippen Sie die Zeile, drücken Sie Eingeben Um zu einer neuen Zeile zu wechseln, drücken Sie Strg + D, um das Ende zu markieren.


1
2018-06-17 23:05