【问题标题】:UNIX script command includes gibberish in exportUNIX 脚本命令在导出中包含乱码
【发布时间】:2017-01-19 09:36:22
【问题描述】:

我正在尝试使用script 命令来保存一些提示和输出。

在 unix 上,输出看起来是正确的。

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

但是,当我将文件 FTP 到 Windows 时,我得到:

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

记事本显示上面带有 Ks 和缺少特殊字符的矩形。 Notepad++ 不仅显示 Ks,还显示随机的 ESCBELBS 块。

我希望它像这样简单:

unix2dos original.txt windows.txt

但这告诉我unix2dos: problems converting file windows.txt

运行iconv -f UTF-8 -t ISO-8859-1 in.txt > out.txt 发现here 也没有帮助我。在这一点上,我迷路了。

感谢您的帮助。

【问题讨论】:

  • 问题是script 记录了写入终端的所有内容。如果您在输入命令时键入 ,您将看到最后一行,但该文件将记录用于来回移动光标的控制序列。它还将记录用于在 shell 提示符中突出显示的任何控制序列。您可以在 Unix 端使用 cat -Acat -v 看到这一点。
  • 建议:暂时将您的提示设置为简单的,并且在键入您要记录的任何命令时要小心。或者从终端复制并粘贴输出,而不是使用script,这样您只会得到屏幕上显示的内容。

标签: windows unix text


【解决方案1】:

没那么简单,但您可以在 Unix 端转换文件,例如,使用 sedunix2dosiconv 解决了与此不同的问题,无法提供帮助。

有几个相关的答案,但我更喜欢我写的回答Can I programmatically “burn in” ANSI control codes to a file using unix utils?的脚本。

该脚本在one of my webpages 上进行了简要描述,并附有一些示例。它可以从该页面下载,地址为gzip'd tarfile

从压缩包开始...

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

(除非您对其他脚本感兴趣:tarball 只是一个快照,其中包含截至给定日期的文件,并扩展为以该日期命名的目录)。

要使用它,请将script2log 放在你的路径中,或者直接运行它:

./script2log typescript >plaintext.log

./script2log -o plaintext.log typescript

【讨论】:

  • 两个答案都很好,是开始挖掘根本原因的好地方。
  • 所以我仍在学习到底发生了什么,但我肯定明白了。想要使用你的花哨的脚本,(因为 sed 没有完全工作),我可以得到一个关于如何使用 script2log 的 eli5 吗?谢谢。
  • 虽然绝对比我使用的要干净得多,但我遇到了脚本删除的次数超过它应该删除的情况。您对帮助改进脚本的文件感兴趣吗?
  • 当然 - 我可以看看 :-)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-01-10
  • 2014-10-11
  • 2014-03-29
  • 2012-03-29
  • 1970-01-01
  • 2011-11-11
  • 2012-11-06
相关资源
最近更新 更多