2016-09-12 1 views
1

Ich versuche Sie verwenden Sie die script Befehl einfach um einige Eingabeaufforderungen zu speichern und auszugeben.UNIX-Skript-Befehl enthält Kauderwelsch im Export

Unter UNIX sieht die Ausgabe korrekt aus.

Script started on Sun 11 Sep 2016 06:34:13 PM EDT 
[[email protected] ~]$ mkdir myrepos 
[[email protected] ~]$ cd myrepos 
[[email protected] myrepos]$ svnadmin create testrepo 
[[email protected] myrepos]$ cd ../project 

jedoch, wenn ich die Datei auf Windows-FTP, erhalte ich:

Script started on Sun 11 Sep 2016 06:34:13 PM EDT 
]0;[email protected]:~[?h[[email protected] ~]$ svn[K[K[Kmkdir myre[K[Krepos 
]0;[email protected]:~[[email protected] ~]$ cd myrepos 
]0;[email protected]:~/myrepos[[email protected] myrepos]$ svnadmin create testrepo[K[K[K[ 

Notepad die oben mit Ks und Sonderzeichen fehlen Rechtecke zeigt. Notepad ++ zeigt mir nicht nur die Ks, sondern zufällige ESC, BEL und BS Blöcke.

Ich hatte gehofft, es war so einfach wie:

unix2dos original.txt windows.txt 

aber das sagt mir unix2dos: problems converting file windows.txt

Lauf iconv -f UTF-8 -t ISO-8859-1 in.txt > out.txt gefunden here hat mir auch nicht helfen. An diesem Punkt bin ich verloren.

Vielen Dank für jede Hilfe.

+1

Das Problem ist, dass 'script' Aufzeichnungen alles, was an das Terminal geschrieben. Wenn Sie während der Eingabe eines Befehls eingeben, sehen Sie die letzte Zeile, aber die Datei zeichnet die Steuersequenzen auf, mit denen der Cursor vor und zurück bewegt wird. Es zeichnet auch alle Kontrollsequenzen auf, die in Ihrer Shell-Eingabeaufforderung zum Markieren verwendet werden. Sie können dies auf der Unix-Seite mit 'cat -A' oder' cat -v' sehen. –

+0

Vorschlag: Setzen Sie Ihre Eingabeaufforderung vorübergehend auf etwas Einfaches und seien Sie vorsichtig, wenn Sie Befehle eingeben, die Sie aufzeichnen möchten. Oder kopieren Sie die Ausgabe von Ihrem Terminal und fügen Sie sie ein, anstatt "Skript" zu verwenden, so dass Sie nur das erhalten, was auf dem Bildschirm erscheint. –

Antwort

2

Es ist nicht so einfach, aber Sie können die Datei auf der Unix-Seite beispielsweise mit sed transformieren. unix2dos und iconv lösen ein anderes Problem als dies, und kann nicht damit helfen.

Es gibt mehrere verwandte Antworten, aber ich bevorzuge das Skript, das ich schrieb, um Can I programmatically “burn in” ANSI control codes to a file using unix utils? zu beantworten.

Das Skript ist kurz beschrieben unter one of my webpages, mit einigen Beispielen. Es kann von dieser Seite in einer gzip'd tarfile heruntergeladen werden.

Beginnend mit dem Tarball ...

tar xf misc-scripts.tar.gz 
mv misc-scripts-2*/script2log . 
rm -rf misc-scripts-2* 

(es sei denn, Sie in den anderen Skripten interessiert sind: der Tarball ist einfach ein Schnappschuss mit Dateien bis zu einem bestimmten Zeitpunkt, der mit diesem Datum benannte in ein Verzeichnis erweitert).

es zu verwenden, setzen script2log in den Weg, oder es einfach laufen:

./script2log typescript >plaintext.log 

oder

./script2log -o plaintext.log typescript 
+0

beide Antworten sind großartig und ein guter Ort, um in die Ursache zu graben beginnen. – zee

+0

Also ich lerne immer noch, was genau los ist, aber ich bekomme definitiv die Idee. Möchtest du dein fantastisches Skript verwenden, da sed nicht komplett funktionierte? Kann ich einen eli5 bekommen, wie man script2log benutzt? Vielen Dank. – CeePlusPlus

+0

Während auf jeden Fall viel sauberer als ich war, habe ich Szenario, wo das Skript mehr gelöscht, dann sollte es. Wären Sie an den Dateien interessiert, um das Skript zu verbessern? – CeePlusPlus

Verwandte Themen