명령을 통해 비정상적인 경로 사용

명령을 통해 비정상적인 경로 사용

다음 디렉터리가 있다고 가정합니다.

mkdir """
'''\n
"

그리고 다음을 사용하여 디렉터리를 쿼리할 수 있습니다.

stat --printf '%n' **  #or for simplicity stat --printf '%n' $'\n'\'\'\'\\n$'\n'

그리고 stdout에서 반환된 파일 이름을 변수로 캡처하여 파일 이름의 올바른 이진 표현을 가져옵니다.

#this should be a new line which I can't show
'''\n

표준 입력에서 후속 명령을 실행하고 항상 작동하도록 해당 변수를 보내려면 어떻게 해야 합니까? 예를 들어 문자열을 보내면 실패합니다.

stat 
'''\n

이는 대부분의 경우에 작동하지만 전부는 아닙니다.

stat "/path/here"

다음 명령도 대부분의 경우 작동하지만 전부는 아닙니다.

p="$(cat<<EOF

'''\n
EOF
)"
stat -- "$p"

캡처된 변수를 노드를 통해 생성된 인수로 사용하면 작동합니다. 따라서 stat의 캡처가 정확합니다. 문제는 변수를 문자열로 stdin에 보낼 때 발생하는 변환입니다. 이는 필수입니다.

관련 정보