Cat

當我使用 -e 參數回顯時會發生什麼?

  • September 30, 2015

如您所見,我創建index.php如下:

$ echo -e "<?php passthru(\$_POST[1])?>\r<?php echo 'A PHP Test ';" > index.php

進而:

$ cat index.php
<?php echo 'A PHP Test ';?>

但:

$ cat -e index.php
<?php passthru($_POST[1])?>^M<?php echo 'A PHP Test ';$

我該如何解釋呢?

來自男人的迴聲

-e
enable interpretation of backslash escapes
If -e is in effect, the following sequences are recognized:
\r
carriage return

來自人貓

-e
equivalent to -vE
-E, --show-ends
display $ at end of each line
-v, --show-nonprinting
use ^ and M- notation, except for LFD and TAB

因此,據我所知,\r表達式返回輸入,因此您在返回後全部回顯,這就是為什麼當您簡單時cat index.php輸出為<?php echo 'A PHP Test ';?>.

當您cat使用該-e選項^M時,當有一個非列印語句並且$在該行的最後一個-E選項時,您正在列印

引用自:https://unix.stackexchange.com/questions/232925