在.zip文件上运行cat命令是否安全?

时间:2017-06-14 03:09:24

标签: bash zip windows-10 cat visual-glitch

在bash中,当我在cat文件上运行.zip时,它会输出一堆符号,可以快速向上滚动屏幕。它也会发出一些哔哔声。这有点可怕和令人敬畏。

我继续这样做是否安全?我有点想把这个作为我的袖子,可以这么说。我想我的朋友,家人和未来的雇主;我知道这个技巧肯定会给人留下深刻的印象。

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

1 个答案:

答案 0 :(得分:1)

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

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

printf "\033Z"

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

arturcz@szczaw:/tmp$ printf "\033Z"
^[[?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$ 

我既没有1也没有2c命令。但如果你拥有它们,它们就会被运行。它可能很危险。风险不是很大,但你要小心。因此,如果您决定使用这些故障,请记住使用backspacectrl-u来清理输入行。

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

#!/bin/bash
printf "\033[?25l"
printf "\033[H\033[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 "\033[${p};10H^o^"
        done
        printf "\033[${p};10H   "
    done
    for p in $(seq 10 20); do
        printf "\033[${p};10H^o^"
        for r in $(seq 0 1000); do
            printf "\033[${p};10H^o^"
        done
        printf "\033[${p};10H   "
    done
done
printf "\033[34h\033[?25h"

然后将其运行为:

bash script.sh > anim.txt

可能需要一些时间,但脚本显示了完成工作的百分比。正如您所看到的,anim.txt的内容不是二进制,但是当您将其运行为:

screen cat anim.txt

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

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