使用cat
するとコードが実行されない可能性がありますが、エスケープコードが処理されるため、実際には悪意のあるスクリプトが無害であると誤解される可能性があります。
「悪意のある」シェルスクリプトを作成するコマンドの例を次に示します。
echo -e '#!/bin/sh\necho "...doing something bad here..."\nexit\n\033[A\033[Aecho "Hello dear reader, I am just a harmless script, safe to run me!"' > demo.sh
chmod a+x demo.sh
ファイルを検査するとき、それは十分無害なようです:
$ cat demo.sh
#!/bin/sh
echo "Hello dear reader, I am just a harmless script, safe to run me!"
しかし、実際に実行する必要があります...
$ ./demo.sh
...doing something bad here...
このスクリプトは、生のエスケープコードを含めることで機能し、カーソルを数行上に移動します。そのため、スクリプトの残りの部分は悪意のあるコードの上に書き込まれ、非表示になります。
他のほとんどのプログラムは、それが何であるかのスクリプトを明らかにします。(のようなファイルの内容を処理していないだけのプログラムcat
、more
およびless -r
)は、誤解を招くような出力を生成します。
なおtail
とhead
も同じ誤解を招くような出力を生成します。したがって、「less + F」を使用する方が「tail -f」より安全です。