কোনও স্ক্রিপ্ট তৈরি করার এবং এর থেকে কম কোডে এটি কার্যকর করার কোনও উপায় আছে কি?


8

এক্সিকিউটেবল স্ক্রিপ্ট তৈরি করার জন্য আমার কোড

touch script.sh && echo "echo 'Hello World'" > script.sh && sudo chmod +x script.sh

2
@ শ্যামফিয়েরিন আমি মিষ্টান্নদের উত্তরের প্রথম অংশটিতে জোর দিতে চেয়েছিলাম। আপনার sudoখুব অল্প পরিমাণে ব্যবহার করার চেষ্টা করা উচিত । এটিকে চারদিকে ছুঁড়ে ফেলার অভ্যাসে প্রবেশ করা বিপজ্জনক হতে পারে। এক্ষেত্রে আপনি নিজের তৈরি স্ক্রিপ্টটির মালিক তাই আপনি অনুমতি নিয়ে যা করতে পারেন তা করতে পারেন, কোনও সুডোর দরকার নেই।
মেরি

2
সাধারণভাবে সম্পর্কিত: ব্যাশে গল্ফ করার টিপস
ডিজিটাল ট্রমা

উত্তর:


18

আপনি পুরো touchকমান্ডটি ছেড়ে দিতে পারেন এবং ব্যবহার করার দরকার নেই sudo। কমান্ড লাইনটি আরও সংক্ষিপ্ত করতে আপনি দ্বিতীয়বার ফাইলের নাম সংরক্ষণ করতে bashইতিহাস বিস্তৃতি ব্যবহার করতে পারেন এবং অপ্রয়োজনীয় স্পেস বাদ দিতে পারেন:

echo "echo 'Hello World'" >script.sh&&chmod +x !#:3

ইতিহাস সম্প্রসারণ !#:3বর্তমান কমান্ড লাইন থেকে চতুর্থ শব্দের সাথে প্রতিস্থাপন করে, যা আপনার ক্ষেত্রে ফাইলের নাম script.sh। অবশ্যই আপনি প্রথম কমান্ডটি সংশোধন করার ক্ষেত্রে এটিকে মানিয়ে নেওয়া দরকার যেমন:

>script.sh echo "echo 'Hello World'"&&chmod +x !#:1

মনে রাখবেন যে একটি বৈধ স্ক্রিপ্টের একটি শেবাং দরকার :

>script.sh echo -e "#!/bin/bash\necho 'Hello World'"&&chmod +x !#:1

আপনার যদি এই কমান্ডগুলির শৃঙ্খলার আরও বেশি প্রয়োজন হয় তবে আমি কোনও ফাংশন সংজ্ঞায়িত করার পরামর্শ দিচ্ছি , এইভাবে আপনাকে কেবল ফাংশনের নাম টাইপ করতে হবে। অনুরূপভাবে অভিযোজিত - দীর্ঘ যদিও - উপায় ফাইলের নাম ধারণ করে একটি ভেরিয়েবলের ব্যবহার:

f=script.sh;>$f echo "echo 'Hello World'"&&chmod +x $f

আপনার ফাইলনামে যদি বিশেষ অক্ষর থাকে তবে সেগুলি সঠিকভাবে উদ্ধৃত করতে ভুলবেন না


20

installকমান্ড (গনুহ অংশ coreutils সহ cp, mv, rm, ইত্যাদি) একটি ফাইল যখন তার মালিকানা ও অনুমতি সেটিং এবং প্রয়োজনীয় প্যারেন্ট ডিরেক্টরী তৈরি অনুলিপি করতে পারবেন। ডিফল্টরূপে এটি নতুন ফাইলকে সম্পাদনযোগ্য করে তুলবে। এটি বোঝে না ' -' তবে /dev/stdinপরিবর্তে এটি ব্যবহার করা যেতে পারে:

install /dev/stdin script.sh <<< "echo Hello World"

উপরের স্ট্যান্ডিনে পাঠ্য সরবরাহের জন্য একটি ' এখানে স্ট্রিং ' ব্যবহার করা হয়েছে যা এটির পাইপিংয়ের চেয়ে সামান্য খাটো The যুক্তিগুলির echoবিশেষ অর্থ সহ অক্ষর না থাকলে উদ্ধৃতি দেওয়ার দরকার নেই।


দ্রষ্টব্য যে এখানে স্ট্রিং একটি বাশিজম - একটি উত্তরাধিকার বহনযোগ্য হবে
স্টিভেন পেনি

3
চমৎকার ধারণা. আপনি কোনও প্রক্রিয়া বিকল্প ব্যবহার করতে পারেন :install <(echo echo Hello World) script.sh
ডিজিটাল ট্রমা

8

আমি catএই জাতীয় কাজের জন্য ব্যবহার করতে পছন্দ করি :

cat > script.sh && chmod +x script.sh
#!/bin/sh
echo 'Hello World'Enter
Ctrl+ +D

1

আপনি পুরো chmod ছেড়ে ইকো এর পরিবর্তে উমাস্ক ব্যবহার করতে পারেন। আপনার কয়েকটি বাইট সংরক্ষণ করা উচিত যতক্ষণ না আপনি প্রতিটি শেল (বোর্ন এবং সি) দ্বারা বোঝার জন্য আদেশগুলি ব্যবহার করেন ততক্ষণ শেবাং angচ্ছিক।


5
আপনি ঠিক কিভাবে এটি করতে হবে?
wjandrea

umaskডিফল্টরূপে এক্সিকিউটেবল বিট সেট করার জন্য এটি ব্যবহার করা সম্ভব নয় ...
রাভেক্সিনা
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.