O que acontece quando eu faço eco com o argumento '-e'?

1

Como você pode ver, criei index.php da seguinte forma:

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

e depois:

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

Mas:

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

Como eu posso explicar isso?

    
por Lisbeth 30.09.2015 / 07:33

1 resposta

2

De man echo

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

De man cat

-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

Então, como eu entendo que a expressão \r retorna o carro, então você está ecoando após o retorno, é por isso que quando você usa cat index.php , a saída é <?php echo 'A PHP Test ';?> .

Quando você usa cat usando a opção -e , está imprimindo ^M quando há uma instrução não imprimível e $ no final da linha, como a opção -E

    
por 30.09.2015 / 08:12

Tags