স্ট্রিংয়ের সামনে "-" সহ কোনও ফাইলকে ব্যাশযুক্ত একাধিক লাইন কীভাবে যুক্ত করা যায়


9

বাশ সহ কোনও ফাইলে একাধিক লাইন সংযোজন করার অনুরূপ প্রশ্ন কিন্তু আমি যদি ফাইলটি শুরু করতে চাই এবং সাথে --সম্ভব হয় তবে ফাইলটিও যুক্ত করতে চাই।

printf "--no-color\n--format-doc\n--no-profile\n" >> ~/.rspec-test

সমস্যাটি ফাইলটি "-" দিয়ে শুরু করছে যা আমাকে একটি দেয়:

-bash: printf: --: invalid option
printf: usage: printf [-v var] format [arguments]

এর থেকে বাঁচার কোন উপায় আছে --? কোন বিকল্প আছে? আমি ব্যবহার একাধিক লাইনের করতে কিভাবে নিশ্চিত নই echo, এবং catএকটি ভাল বিকল্প নয়, আমি একটি স্বয়ংক্রিয় স্ক্রিপ্টের মধ্যে এটা আছে চাই।

উত্তর:


17

বেশিরভাগ কমান্ড যা --fooএকটি বিকল্প হিসাবে স্বীকৃতি দেয় সেগুলি --নিজেই একটি "বিকল্পের সমাপ্তি, যুক্তিগুলির শুরু" হিসাবে চিহ্নিতকারী হিসাবে স্বীকার করে - যাতে আপনি এটি করতে পারেন:

printf -- "--no-color\n--format-doc\n--no-profile\n" >> ~/.rspec-test

তবে আপনার সঠিক উদাহরণটির আরও সুনির্দিষ্ট উত্তর হ'ল প্রিন্টফের প্রথম যুক্তিটি একটি ফর্ম্যাট স্পেসিফায়ার এবং আপনি বিন্যাসের দক্ষতার জন্য প্রিন্টফ ব্যবহার না করে প্রয়োজনীয় জিনিসগুলি আরও জটিল করে তুলছেন। আপনি যা চান তা করার এটি আরও ভাল উপায় হবে:

printf "%s\n" --no-color --format-doc --no-profile >> ~/.rspec-test

এটি প্রিন্টফকে বলে যে প্রতিটি যুক্তি এটি পায় এবং তা মুদ্রণ করে, তার পরে একটি নতুন লাইন। \nনিজেকে পুনরাবৃত্তি করার চেয়ে সহজ এবং এটি --আপনি যে নেতৃস্থানীয় সমস্যার মুখোমুখি হয়েছিলেন তা এড়িয়ে চলে । এবং এটি %আপনার স্ট্রিংতে থাকতে পারে এমন কোনও লক্ষণ থেকে বাঁচার প্রয়োজনীয়তা সরিয়ে দেয় ।

একাধিক লাইন কীভাবে করবেন তা echoআপনি ব্যবহার করতে পারেন:

echo -ne "--no-color\n--format-doc\n--no-profile\n" >> ~/.rspec-test

বা, আরও বহনযোগ্য:

{ echo --no-color; echo --format-doc; echo --no-profile; } >> ~/.rspec-test

অথবা একটি এখানে-ডক সহ বিড়াল ব্যবহার করা:

cat >>.rspec-test <<EOF
--no-color
--format-doc
--no-profile
EOF
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.