我有应该是文本的二进制文件(它们是导出的日志),但我无法用 less 打开它(它看起来很丑 - 它看起来像一个二进制文件)。我发现我可以用 vi 打开它,我可以 cat 它(你会看到实际的日志),但我真正想做的是通过它们 grep(不必用 vi 打开每一个然后执行搜索)。有没有办法让我做到这一点?
是否有任何 linux 命令可以从可执行文件或其他二进制文件中提取所有 ascii 字符串?我想我可以用 grep 来完成,但我记得在某个地方听说过这样的命令存在?
我正在服务器之间传输文件,刚刚开始注意到其中一些文件被修改为一条长的连续行,而不是原来的返回和换行符。我假设这与我最初设置为“自动”的 FTP 客户端的传输类型有关,但将“二进制”和“ASCII”作为附加选项。
简而言之,我将文件从一台服务器传输到另一台服务器的方式之间有什么区别,这些差异是否能够以我上面提到的方式修改文件?
从Windows转移到Linux。
我正在尝试将我从托管公司获得的 MySQL 转储文件导入我的 Windows 开发机器,但我遇到了问题。
我正在从命令行导入它,但出现了一个非常奇怪的错误:
ERROR 2005 (HY000) at line 3118: Unknown MySQL server host '??*á±dÆ?N?Æ·h^ye"??i? Z+-$???Y.??|??l?/l ??î7æ?X?XE.º?[;?ï?éµ?º???].???9dë??'?ÿG??0à¡úè???ù??¥'?NÑ' (11004) )

我附上截图是因为我假设二进制数据会丢失......
我不太确定问题是什么,但两个潜在的问题是文件的大小 (2 Gb),它不是特别大,但也不是特别小,另一个是这些表中的许多都有其中的 JPG 图像(这就是为什么文件在大多数情况下是 2Gb 大的原因)。
此外,转储是在 Linux 机器中进行的,我正在将其导入 Windows,不确定这是否会增加问题(我知道不应该)
现在,二进制垃圾就是我认为文件中的图像可能有问题的原因,但我过去能够从同一托管公司导入类似的转储,所以我不确定可能是什么问题。
此外,考虑到它的大小,试图查看这个文件(尤其是第 3118 行)是不可能的(我对 Linux 命令行工具如 grep、sed 等不是很方便)。
该文件可能已损坏,但我不确定如何检查它。我下载的是一个 .gz 文件,我用 WinRar“测试”了它,它说它看起来不错(我假设 gz 有某种 CRC)。如果你能想到更好的方法来测试它,我很乐意尝试。
任何想法可能会发生什么/如何克服这个错误?
我对数据并不是特别感兴趣,因为我只想将其作为开发人员的副本,所以如果我不得不丢失一些记录,我可以接受,只要模式保持完美。
谢谢!
丹尼尔
我试图让 Memcached 服务器像使用二进制协议一样响应。如果可能,请仅通过命令行回答,任何编程语言中都没有代码片段。
当我运行名为“myfile”的用户应用程序之一时。
$ ./myfile
Run Code Online (Sandbox Code Playgroud)
我收到以下输出
bash: ./myfile: cannot execute binary file
Run Code Online (Sandbox Code Playgroud)
我的用户希望运行二进制文件。我认为这是一个编译错误,但无法确认。我运行了文件命令
$ file myfile
myfile: ELF 64-bit LSB relocatable, x86-64, version 1 (SYSV), not stripped
Run Code Online (Sandbox Code Playgroud)
我的 RHEL6 操作系统是 64 位
$ uname -p -o
x86_64 GNU/Linux
Run Code Online (Sandbox Code Playgroud)
所以在我看来,它符合正确的架构。我不明白“可重定位”在文件命令的输出中是什么意思,并且无法从手册页中获得解释。
为了更好的衡量,我检查了共享库依赖项
$ ldd myfile
not a dynamic executable
Run Code Online (Sandbox Code Playgroud)
有什么方法可以让我运行这个文件,或者给我的用户一些关于它为什么不运行的建设性信息(比如他需要使用 x 重新编译)?
$ strace ./myfile
execve("./myfile", ["./myfile"], [/* 22 vars */]) = -1 ENOEXEC (Exec format error)
dup(2) = 3
fcntl(3, F_GETFL) = 0x8002 (flags O_RDWR|O_LARGEFILE)
fstat(3, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 0), ...}) = 0 …Run Code Online (Sandbox Code Playgroud) 我正在构建某种 webapp,目前整个事情都在我的机器上运行。我正在整理我的日志,发现了几个让我有点偏执的“奇怪”日志条目。开始:
***.***.***.** - - [19/Dec/2010:19:47:47 +0100] "\x99\x91g\xca\xa8" 501 1054
**.***.***.** - - [19/Dec/2010:20:14:58 +0100] "<}\xdbe\x86E\x18\xe7\x8b" 501 1054
**.**.***.*** - - [21/Dec/2010:15:28:14 +0100] "J\xaa\x9f\xa3\xdd\x9c\x81\\\xbd\xb3\xbe\xf7\xa6A\x92g'\x039\x97\xac,vC\x8d\x12\xec\x80\x06\x10\x8e\xab7e\xa9\x98\x10\xa7" 501 1054
Run Code Online (Sandbox Code Playgroud)
该死的……这是什么?!
我有一个 REG_BINARY 注册表项,我想通过 GPO 设置它。但是,用于添加注册表设置的 GPO 界面只有一个“值数据”文本字段。
我可以将类型设置为 REG_BINARY,但是期望数据的文本字段的格式是什么,以便正确设置密钥?
在此处输入数据之前,我应该将数据转换为十六进制,还是应该以完全不同的方式执行此操作?
为什么在 Ubuntu 的 AMD64 64 位安装上有一个/usr/lib 和一个/usr/lib32目录但只有一个/usr/bin和没有/usr/bin32目录?如果或何时 Debian/Ubuntu 开始在其 ELF 中支持多目标架构二进制文件,此目录分支是否会变得不必要?
这可能真的很容易,但我似乎找不到它。
我正在 /usr/bin 和 /usr/sbin 之间移动二进制文件,即使两个文件夹都在我的 $PATH 中,将一个二进制文件移动到另一个会导致系统在其原始位置不断寻找它。
任何人都知道这是为什么,如果有一个命令来刷新它?
有时我会运行这样的命令,然后我会返回一些易于阅读、易于解释的文本:
PS D:\test> (get-acl test.txt).Access | Select FileSystemRights
FileSystemRights
----------------
Modify, Synchronize
Run Code Online (Sandbox Code Playgroud)
...其他时候我会拿回一个号码:
PS D:\test> (get-acl test2.txt).Access | Select FileSystemRights
FileSystemRights
----------------
268435456
Run Code Online (Sandbox Code Playgroud)
数字是什么,它是什么意思?
我们有一个本地开发服务器,我们在上面开发网站。要实时推送网站,它会通过 FTP(不幸的是 SSH/SFTP/Rsync 不是一种选择)发送到我们的网络主机。
我想运行一些脚本来比较/差异开发服务器上的站点与 Web 主机服务器上的站点。这非常简单,但是在 FTP 传输期间我一直使用自动(而不是 Ascii 或二进制)模式。
最后,所有文件(*.php、*.html 等)的文件大小都与本地开发服务器上的文件大小不同。经过一番研究,我想这是因为它转换一个\n以\r\n在传输过程中。因此,diff在进行目录比较时,即使它们的内容确实相同,也会看到不同的文件。
我发现如果我将 FTP 设置为以二进制形式传输所有内容,则没有文件大小差异。
我想知道的是,以二进制模式传输所有内容,甚至是 ASCII 文件,是否有任何潜在危害?这种方法会出现什么问题?如果没有任何问题,那么 ASCII 模式的意义何在?