মেকফাইলে আদেশের অনুরোধের প্রতিধ্বনিকে দমন করবেন?


147

আমি একটি অ্যাসাইনমেন্টের জন্য একটি প্রোগ্রাম লিখেছিলাম যা অনুমান করা হয় যে এটির ফলাফলটি স্টাডাউটে মুদ্রণ করবে। অ্যাসাইনমেন্ট স্পেকের জন্য একটি মেকফাইল তৈরি করা দরকার যা make run > outputFileপ্রোগ্রাম চালানো এবং আউটপুট কোনও ফাইলে লিখতে হবে, যা একটি স্পেসে দেওয়া শৃঙ্খলে অনুরূপ একটি SHA1 ফিঙ্গারপ্রিন্ট রয়েছে।

আমার সমস্যা হ'ল আমার মেকফাইল:

...
run:
     java myprogram

আউটপুট ফাইলে আমার প্রোগ্রামটি চালিত কমান্ডটি (যেমন জাভা মাইপ্রোগ্রাম) প্রিন্ট করে, যাতে আমার ফাইলে এই অতিরিক্ত লাইনটি অন্তর্ভুক্ত করে আঙুলের ছাপটি ভুল হতে পারে।

কমান্ডের অনুরোধটি কমান্ড লাইনে প্রতিধ্বনিত না করে কোনও আদেশ কার্যকর করার কোনও উপায় আছে কি?

উত্তর:


247

@কমান্ডের শুরুতে যুক্ত করুন গেমকে বলুন যে কমান্ডটি কার্যকর হবে তা প্রিন্ট করা হবে না। এটার মত:

run:
     @java myprogram

অলি যেমন পরামর্শ দিয়েছেন, এটি মেশের বৈশিষ্ট্য এবং বাশের নয়।

অন্যদিকে, বাশ কখনই আদেশগুলি সম্পাদন করার প্রতিধ্বন করবে না আপনি যদি না এটি পরিষ্কারভাবে (যেমন -xবিকল্পের সাহায্যে) করতে বলে থাকেন।


6
+1 টি। তবে কেবল ওপি'র বিভ্রান্তি দূর করার জন্য এটি স্পষ্ট করে বলা যায় যে এটি মেশের বৈশিষ্ট্য, বাশের নয়।
অলিভার চার্লসওয়ার্থ

1
@ অলিচার্লসওয়ার্থ: অর্থবোধ করে, যোগ করেছে। ধন্যবাদ।

সমস্ত প্রতিধ্বনি নিষ্ক্রিয় করার কোন উপায় আছে? বা কোনও বিভাগের জন্য এটি বন্ধ করে দেওয়ার, এবং পরে আবার চালু করার জন্য?
বেনুবার্ড

2
@ বেনুবার্ড make -sতা করে, এবং আইএমএইচও এখানে যে কোনওভাবেই আরও ভাল সমাধান। সম্প্রতি এই প্রশ্নের পৃথক উত্তর হিসাবে এটি পোস্ট করা হয়েছিল।
ট্রিপলি

1
এটি যদি একটি
আইফোনটির

74

এমনকি সহজ, ব্যবহার make -s(সাইলেন্ট মোড)!


3
উপনোট: এখানে সত্যই এটি গ্রহণযোগ্য উত্তর হওয়া উচিত। @কমান্ডগুলি দিয়ে আপনার মেকফিলটি ছিটিয়ে দেওয়াটি ডিবাগ করা শক্ত করে এবং প্রচুর গোলমাল যোগ করে।
ট্রিপলি

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

6
.SILENT:লক্ষ্যটি ব্যবহার করে আপনি নিজে এটি নিয়ন্ত্রণ করতে পারেন । দেখুন make.mad-scientist.net/managing-recipe-echoing
MadScientist

প্রকৃতপক্ষে যদি আপনার পছন্দ মতো সতর্কতা থাকে তবে -Wallসেগুলি তাদের মুদ্রণ করে। আপনি -sযদি সতর্কতাও দেখতে চান তবে অবশ্যই আপনি কেন ব্যবহার করবেন ?
ব্যবহারকারী 81862311

33

আপনি ব্যবহার করতে পারেন .SILENT

.SILENT: run
hi:
     echo "Hola!"
run:
     java myprogram

এই ক্ষেত্রে, make hiআউটপুট কমান্ড দেয় তবে make runআউটপুট দেয় না।


1

কমান্ডটির পূর্ববর্তী প্রভাবটি @লাইনে ট্রেলিং ব্যাকস্ল্যাশ ব্যবহার করে কমান্ডটি প্রসারিত করে একটি বিভাগে প্রসারিত করা যেতে পারে। যদি কোনও .PHONYকমান্ড আউটপুট দমন করতে চায় তবে একটি দিয়ে বিভাগটি শুরু করা যেতে পারে:

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