今日、Twitterのパスワードジェネレーターをゴルフでコーディングしようとしたときに、私は手ぶれで捕まった。
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文字。感嘆符で明らかにbashチョークを除いて、いいですね。
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
厄介な感嘆符。「逃げよう」と思った!結局のところ、私には予備のキャラクターが1人います。
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))
私の暗証コードを脇に置いておきます-これを説明することはできません。
では\!
、感嘆符がエスケープされたので、それは本当にしない以外\!
のためであるとして、残されたecho
ピックアップします。
\x21
代わりに1つの解決策を使用することもできますが、それがbashコマンドで感嘆符をエスケープする適切な方法であるとは思いません。
tl; dr:bashコマンドで感嘆符を適切にエスケープするにはどうすればよいですか?
!event
最初に構文を実際に使用しますか?いつも悩みの種です。