运行 cat 命令对 .zip 文件安全吗?

Is it safe to run cat command on a .zip file?

在bash中,当我在.zip文件上运行cat时,它会输出一堆快速向上滚动屏幕的符号。它还会发出一些哔哔声。这既有点可怕又很棒。

我继续这样做安全吗?可以这么说,我有点想把它当作袖手旁观的把戏。我想 我的朋友、家人和未来的雇主;而且我知道这个技巧一定会给人留下深刻印象。

有人知道这样做是否有任何有害影响吗?

这取决于您认为什么是安全的。一些二进制序列正在改变终端的行为。例如,滚动大小 window、颜色、背景颜色、字符集等。它们可以将光标移动到其他位置、禁用回声或发出声音。但是,所有这些效果都可以使用 reset 命令轻松撤销。

有些序列可能会像您按下某些键一样放置一些字符。例如,运行 在 screen 下面的命令:

printf "3Z"

它会显示一些垃圾,然后在 bash 提示后立即在输入中放置一串字符。对我来说它看起来像:

arturcz@szczaw:/tmp$ printf "3Z"
^[[?1;2carturcz@szczaw:/tmp$ 1;2c

如果您按下 Enter 键,bash 将尝试 运行 此命令:

^[[?1;2carturcz@szczaw:/tmp$ 1;2c
bash: 1: command not found
bash: 2c: command not found
arturcz@szczaw:/tmp$ 

我没有 12c 命令。但如果你有它们,它们将是 运行。这可能很危险。风险不大,但还是要小心。因此,如果您决定解决这些问题,请记住使用 backspacectrl-u 来清理输入行。

顺便说一句,你可以准备一个带有控制字符的文件来绘制一个有趣的动画。例如,将以下脚本保存到一个文件中,比方说,script.sh:

#!/bin/bash
printf "3[?25l"
printf "3[H3[2J";
for m in $(seq 1 100); do
    echo $m >&2
    for p in $(seq 20 -1 10); do
        for r in $(seq 0 1000); do
            printf "3[${p};10H^o^"
        done
        printf "3[${p};10H   "
    done
    for p in $(seq 10 20); do
        printf "3[${p};10H^o^"
        for r in $(seq 0 1000); do
            printf "3[${p};10H^o^"
        done
        printf "3[${p};10H   "
    done
done
printf "3[34h3[?25h"

然后 运行 为:

bash script.sh > anim.txt

这可能需要一点时间,但脚本会显示已完成工作的百分比。如您所见,anim.txt 的内容并不是二进制文件,但是当您 运行 时,它是:

screen cat anim.txt

您将看到一个简单的动画。 screen 命令是必需的,因为脚本使用 screen 终端控制字符。另外,通过使用屏幕,显示过程会变慢一点,这对于现代计算机来说尤其重要,因为动画会显示得非常非常快。

如果您想了解更多关于这些控制序列的信息,请阅读 terminfo(5) manual and NCURSES Programming HOWTO