Schreiben Sie einige Zeilen in eine Datei mit einem bash-Skript
Wie kann ich schreiben Sie einige Zeilen in eine Datei die in einem bash-Skript?
Möchte ich Folgendes schreiben in eine Datei ~/.inputrc
"\e[A": history-search-backward
"\e[B": history-search-forward
"\e[C": forward-char
"\e[D": backward-char
Derzeit habe ich diese arbeiten aber etwas unschöne Methode, und ich bin sicher, es sollte einen besseren Weg geben.
#!/bin/sh
echo \"\\e[A\": history-search-backward > ~/.inputrc
echo \"\\e[B\": history-search-forward >> ~/.inputrc
echo \"\\e[C\": forward-char >> ~/.inputrc
echo \"\\e[D\": backward-char >> ~/.inputrc
Es gibt immer Dutzende von verschiedenen Möglichkeiten, Dinge zu tun, wie diese, aber was Sie hier haben, sieht aus wie die einfachste und wahrscheinlich beste Weg, es zu tun.
InformationsquelleAutor wim | 2011-10-19
Du musst angemeldet sein, um einen Kommentar abzugeben.
Eine etwas einfachere Methode wäre:
Ich bin neugierig, warum Sie brauchen, um dies zu tun, obwohl. Wenn Sie wollen, um das setup eine Datei mit einem spezifischen text, dann sollten Sie vielleicht erstellen Sie das Skelett-Datei, und werfen Sie es in
/etc/skel
. Dann können Siecp /etc/skel/.inputrc ~/.inputrc
im Skript.Es ist ein doc. Es ermöglicht Ihnen das senden beliebiger text an die Standardeingabe von einigen Befehl, in diesem Fall Katze und haben es verarbeitet werden. Die
EOF
wird verwendet, um anzuzeigen, wenn der text abgeschlossen ist. Ansonsten, es ist nur ein cat-Befehl schreiben einer Datei.InformationsquelleAutor Spencer Rathbun
Verwenden hier dokumentieren:
Dadurch können Sie die Daten inline in Ihre shell-Skript. Der string
EOF
können, was Sie wollen, so wählen Sie einfach einen beliebigen string, der nicht in Ihrem input auf eine einzige Zeile von selbst.InformationsquelleAutor Adam Rosenfield
Mithilfe der
echo
Befehl für andere Dinge als einfache Zeichenfolgen können Komplex sein und nicht tragbar. Es ist die GNU-version vonecho
(Teil der coreutils), die BSD-version, die Sie wahrscheinlich finden sich auf MacOS, und die meisten Muscheln habenecho
als built-in-Befehl. All diese verschiedenen Versionen haben leicht unterschiedliche Wege im Umgang mit Optionen die Kommandozeilen-Optionen (-n
zu hemmen, die trailing newline,-c
/-C
zu aktivieren oder zu deaktivieren backslash-escapes) und entweicht (\e
könnte oder nicht sein, eine Codierung für das escape-Zeichen).printf
zur Rettung.printf
ist wohl verfügbar, wie/usr/bin/printf
- und/oder/bin/printf
, und es ist auch eine eingebaute in einigen shells (bash und zsh sowieso), aber sein Verhalten ist viel mehr im Einklang.Hier ist der GNU-coretuils printf-Dokumentation.
Für dein Beispiel, könnten Sie schreiben:
InformationsquelleAutor Keith Thompson
Das ist ziemlich viel es.
Hier ist ein Weg zur Reduzierung der Redundanz:
$TEXT
; nurecho "[multiple lines]" > ~/.inputrc
.Und deine version funktioniert nicht ohne doppelte Anführungszeichen um
$TEXT
(habe ich Hinzugefügt). Bitte testen Sie code vor der Veröffentlichung oder Erwähnung, dass es noch nicht getestet.InformationsquelleAutor mmrtnt