Ich möchte Text oben in eine bereits vorhandene Datei einfügen. Wie kann ich das erreichen? Ich habe es versucht echo
und war tee
aber nicht erfolgreich.
Ich habe versucht, eine Repo-Zeile sources.list
vom Terminal oben in die Datei einzufügen .
Hinweis
Ich brauche eine einzeilige schnelle Lösung, da mir die Methode einer anderen Antwort bereits bekannt war
apt
command-line
bash
Anwar
quelle
quelle
echo "deb http://extras.ubuntu.com/ubuntu precise main" | sudo tee -a /etc/apt/sources.list
- Sie benötigen außerdem sudo vor tee, um Administratorrechte zu erhalten. Aber warum um alles in der Welt möchten Sie etwas ganz oben auf der sources.list hinzufügen?Antworten:
Es ist eigentlich ganz einfach mit
sed
:sed -i -e '1iHere is my new top line\' filename
1i
weist sed an, den folgenden Text in Zeile 1 der Datei einzufügen; Vergessen Sie nicht die\
neue Zeile am Ende, damit die vorhandene Zeile 1 in Zeile 2 verschoben wird.quelle
s
anstelle von i in , anstatt einzufügen1i
.echo "Text Here" >> Filename
Im Allgemeinen ist das Bearbeiten mit einem Skript schwierig, aber Sie können
echo
undcat
und dann verwendenmv
Allerdings , wenn Sie spielen mit sources.list müssen Sie in einiger Validierung und hinzuzufügen Kugel Schutz zu Fehlern usw. zu erkennen , weil Sie wirklich nicht , dies verlieren mögen. Das ist aber eine andere Frage :-)
quelle
Bekanntlich
prepend
ist das meine benutzerdefinierte Shell :Verwenden Sie auch einen relativen oder absoluten Pfad, es sollte funktionieren:
Update:
Wenn Sie ein permanentes Skript dafür wollen, öffnen Sie es
nano /etc/bash.bashrc
und fügen Sie diese Funktion am Ende der Datei hinzu:Öffnen Sie Ihr Terminal und genießen Sie:
quelle
Und warum nicht einen echten Texteditor verwenden? ed ist der Standard-Texteditor.
Oder wenn Sie möchten, dass die Befehle besser lesbar sind:
1
: zur ersten Zeile geheni
: Einfügemodus.
: Einfügen beenden, zum normalen Modus zurückkehrenwq
: schreiben und aufhören, danke, auf Wiedersehen.quelle
FIRST LINE
)?first_line
dann:ed -s filename < <(printf '%s\n' 1i "$first_line" . wq)
. Stellen Sie sicher, dass die Variable nicht zu einem einzelnen Punkt erweitert wird und keine Zeilenumbrüche enthält (bereinigen Sie sie also, wenn sie von einer Benutzereingabe stammt).Es gibt immer die
awk
Möglichkeit. Ersetzen Sie diestring
Variable durch Ihren Inhalt. Dies ist jedoch keine direkte Änderung. Persönlich neige ich dazu, keine Änderungen an Ort und Stelle vorzunehmen. Dies ist definitiv eine persönliche Präferenz. Zwei Dinge-v
bedeuten, dass eine Variable in awk und Variablen
hier verwendet wird, um effektiv mit einer Zeilennummer übereinzustimmenNR == 1
. Sie können dies auf verschiedene Arten nutzen, indem Sie einfach den Wert vonn
und änderns
.Beispiel:
quelle
Sie können Vim im Ex-Modus verwenden:
1
1. Zeile auswähleni
Neue Textzeile einfügenx
speichern und schließenquelle