오늘, 나는 트위터의 암호 생성기를 골프로 코딩하려고 시도하는 동안 손에 잡혔다.
import string as s,random;print ''.join(random.sample(s.letters+s.digits+s.punctuation,9))
90 자 그것은 여분의 공간이 많기 때문에 막대를 올리고 실행 가능하게 만들기로 결정했습니다.
echo -e "#!/usr/bin/python\nimport string as s,random;print ''.join(random.sample(s.letters+s.digits+s.punctuation,9))">pg;chmod +x pg;./pg
139 자 느낌표에서 분명히 배쉬 질식을 제외하고는 좋습니다.
badp@delta:~$ echo -e "#!/usr/bin/python\nimport string as s,random;print ''.join(random.sample(s.letters+s.digits+s.punctuation,9))">pg;chmod +x pg;./pg
bash: !/usr/bin/python\nimport: event not found
성가신 느낌표. "탈출하자"고 생각했습니다! 나는 한가지 여분의 캐릭터를 가지고 있습니다.
echo -e "#\!/usr/bin/python\nimport string as s,random;print ''.join(random.sample(s.letters+s.digits+s.punctuation,9))">pg;chmod +x pg;./pg
명백하게...
badp@delta:~$ echo -e "#\!/usr/bin/python\nimport string as s,random;print ''.join(random.sample(s.letters+s.digits+s.punctuation,9))">pg;chmod +x pg;./pg
./pg: line 2: syntax error near unexpected token `('
./pg: line 2: `import string as s,random;print ''.join(random.sample(s.letters+s.digits+s.punctuation,9))'
badp@delta:~$ cat pg
#\!/usr/bin/python
import string as s,random;print ''.join(random.sample(s.letters+s.digits+s.punctuation,9))
내 asinine 코드 골프를 제쳐두고-나는 이것을 설명 할 수 없다.
으로 \!
, 느낌표가 탈출했다가 있기 때문에, 정말없는 것을 제외 \!
에 대해있는 그대로 방치 echo
데리러.
하나의 솔루션이 \x21
대신 사용되었을 수 있지만 bash 명령에서 느낌표를 이스케이프 처리하는 올바른 방법이라고 확신하지 않습니다.
tl; dr : bash 명령에서 느낌표를 어떻게 올바르게 탈출합니까?
!:0
!$
하고 !^
시간과 타이핑을 많이 절약합니다.
!event
처음에 구문을 사용하는 사람 이 있습니까? 그것은 항상 나만 문제를 일으켰다.