Ich habe das geschrieben:
sudo sed -i ‘s/3389/3390/g’ /etc/xrdp/xrdp.ini
Das hat diesen Fehler erzeugt:
sed: -e expression #1, char 1: unknown command: `'
Antwort1
Vergleichen Sie Ihre
sudo sed -i ‘s/3389/3390/g’ /etc/xrdp/xrdp.ini
vs. die richtige
sudo sed -i 's/3389/3390/g' /etc/xrdp/xrdp.ini
Überprüfen Sie die verschiedenen Arten von Anführungszeichen.
Seien Sie vorsichtig beim Kopieren und Einfügen aus Dokumenteditoren wie Writer oder Word, da diese Anführungszeichen (und andere Dinge) häufig automatisch ändern, um sie Ihren lokalen Anführungszeichen anzupassen.
Antwort2
Ich hatte den gleichen Fehler, aber die Ursache war anders. Ich habe weder das `-Zeichen verwendet, noch habe ich den Code von irgendwoher kopiert und eingefügt. Ich habe ein Sed-Skript mit einer Bedingung geschrieben und eine neue Zeile für den Befehl verwendet. Ich poste das hier für den Fall, dass jemand anderes das gleiche Problem hat und die akzeptierte Antwort ihm nicht geholfen hat.
So reproduzieren Sie den Fehler:
echo class:myclass > myfile
cat script
/class:/
s/myclass/MYCLASS/g #ctrl+d to exit
sed -f script myfile
Ausgabe:
sed: file script line 2: unknown command: `
'
Das Problem lässt sich beheben, indem Sie den Befehl entweder nach der Bedingung platzieren (in derselben Zeile) oder geschweifte Klammern verwenden, sodass das Skript folgendermaßen aussieht:
/class:/ s/myclass/MYCLASS/
Oder dieses:
/class:/ {
s/myclass/MYCLASS/
}