ব্যাশে বিস্মৃত বিবরণগুলি কীভাবে সঠিকভাবে পালানো যায়?


11

আজ, আমি টুইটারের জন্য একটি পাসওয়ার্ড জেনারেটর গল্ফ কোড করার চেষ্টা করার সময় পুনরায় ধরা পড়লাম।

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

১৩৯ টি চর। স্পষ্টতই উদ্বোধনের পয়েন্টে বাশকে চাপ দেওয়া বাদে দুর্দান্ত।

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))

আমার অ্যাসিনাইন কোডটি গল্ফিং একদিকে রেখে - আমি এটি ব্যাখ্যা করতে পারি না।

সঙ্গে \!, বিস্ময়বোধক বিন্দু পলান ছিল, ছাড়া এটি সত্যিই ছিল না কারণ \!বাকি ছিল হিসাবে জন্য echoনিতে।

\x21পরিবর্তে একটি সমাধান ব্যবহার করা যেতে পারে , তবে আমি নিশ্চিত নই যে এটি ব্যাশ কমান্ডের বিস্মৃত বিবরণ থেকে দূরে আসার উপযুক্ত উপায়।

tl; dr: আপনি কীভাবে বাশ কমান্ডের একটি বিস্ময়বোধক বিন্দু থেকে যথাযথভাবে পালাতে পারেন?


আসলেই কি কেউ !eventপ্রথম স্থানে সিনট্যাক্স ব্যবহার করে ? এটি সর্বদা আমাকে কেবল ঝামেলা করে।
Badp

আমি এটি প্রায় প্রতিদিন ব্যবহার করি (বিগত 20 বছরের বেশিরভাগ সময় ধরে) !:0 !$এবং !^এত সময় এবং টাইপ করে সঞ্চয় করি।
অ্যালেক্সেক্স রোচে

উত্তর:


7

একক উদ্ধৃতি ব্যবহার করুন:

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

এর জন্য বিধিগুলি !অন্য ধরণের উদ্ধৃতি বিধিগুলির পরে (সিএসএস থেকে) সাজানো হয়েছিল। শেলগুলিতে কমান্ড লাইন সম্পাদনা না থাকাকালীন এগুলি খুব কার্যকর হয়েছিল তবে কিছু লোক এখনও সেগুলি ব্যবহার করে।

পিএস যেহেতু আপনি বাশকে কোডিং করছেন:

echo $'#!/usr/bin/python\nimport string as s,random;print"".join(random.sample(s.letters+s.digits+s.punctuation,9))'>pg;chmod +x pg;./pg

এটি বেশিরভাগ ইউনিটগুলিতে কাজ করে:

echo python -c \''import string as s,random;print"".join(random.sample(s.letters+s.digits+s.punctuation,9))'\'>pg;chmod +x pg;./pg

(এটি নয় যে আমি বুঝতে পারি যে আপনি কেন স্ক্রিপ্ট তৈরি করতে চান বা স্ক্রিপ্টের নামটি কেন দুটি বর্ণ হতে হবে))


সম্পর্কে জানতাম না $''। :) পিএস: চেষ্টা করা এবং সেই অতিরিক্ত অক্ষরগুলি ব্যবহার করা ছিল। আমি যখন 140 টির চেয়ে কম অক্ষরের টুইট পোস্ট করি তখন আমার বর্জ্য বোধ হয়।
Badp

@ এমডিপি: সুতরাং এটিকে স্মরণীয় পাসওয়ার্ড তৈরি করার চেষ্টা করুন । (যেমনটি pwgenবনাম pwgen -s।)
গিলস 'দোষী হওয়া বন্ধ করুন'

স্মরণীয় তবে অযৌক্তিক পাসফ্রেজের জন্য দাদাদোদোও ব্যবহার করতে পারেন :)
Badp

1

আমার জিজ্ঞাসার আগে গুগল করা উচিত ছিল।

যেহেতু আপনি ভেরিয়েবলগুলি প্রসারিত করতে বাশের উপর নির্ভর করেন না [..] আপনি পরিবর্তে একক উদ্ধৃতি ব্যবহার করতে পারেন। একক উদ্ধৃতি স্ট্রিং বাশ দ্বারা প্রসারিত হয় না।

ভেঁপু মধ্যে উত্তর করার জন্য আমি একটি বিস্ময়বোধক চিহ্ন কিভাবে রক্ষা করবেন?


1
আমি এই উত্তরটিকে স্বীকৃত হিসাবে চিহ্নিত করছি না, যদিও এটি কেবলমাত্র এই নির্দিষ্ট ক্ষেত্রে উত্তর দেয়। সাধারণত, আপনি কোনও প্রসার ছাড়িয়ে পালাতে পারবেন না।
Badp
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.