Ich erhalte:
sed: -e expression #1, char 46: unterminated `s' command
Zu diesem Code:
sed -i.bak -c 's|net.ipv4.ip_forward.*|net.ipv4.ip_forward = 1|' /etc/sysctl.conf
Mein Editor zeigt an, dass Zeichen 46 zwischen den Sonderzeichen .* steht.
Ich arbeite an Maschinen von CentOS 5 bis 6.5.
Das Ändern des Trennzeichens hat nicht geholfen, ebenso wenig wie die Verwendung von " statt ', und der Code scheint auf dem Terminal von Linux Mint 17.3 zu funktionieren, abzüglich -c. Ich denke, es interpretiert möglicherweise das . oder das * nicht als Sonderzeichen.
Ich habe es versucht :
sed 's/net.ipv4.ip_forward.*/net.ipv4.ip_forward = 1/' /etc/sysctl.conf
Es hat 10 Minuten gedauert und nichts bewirkt, also habe ich es gestoppt. Funktioniert unter Mint 17.3.
Antwort1
Das Problem war, dass mein Redakteur dumm war und ich dachte, es sei ein Zeilenumbruch.
Wenn ich
sed -i.bak -c 's|net.ipv4.ip_forward.*|net.ipv4.ip_forward = 1|' /etc/sysctl.conf
Im Editor berührte die Datei "/etc/sysctl.conf" den Rand des Fensters, sodass ein Teil davon in der nächsten Zeile angezeigt wurde. Ich dachte, es wäre nur ein Zeilenumbruch, aber nein. Centos oder Nano haben entschieden, dass "/etc/sysctl.conf" in eine neue Zeile eingefügt werden sollte, wenn ich die Datei hochlade oder den Code hineinkopiere. Ich habe die neue Zeile manuell gelöscht und es funktioniert normal.
Bearbeiten: Immer wenn ich nano verwende und ein / eingebe, während sich der Text dem Ende des Fensters nähert, entscheidet es sich, ihn in eine neue Zeile zu setzen, komisch. Es verhält sich wie ein Zeilenumbruch, aber stattdessen macht es einfach alles kaputt.
Diese neue Zeile existiert dort, von wo ich sie hochlade, nicht.