একটি যুক্তিতে দুটি কমান্ড চালান (স্ক্রিপ্ট না করে)


28

এই ইনপুটটিতে দু'বার টাইপ না করে কীভাবে আমি একটি ইনপুটটিতে দুটি কমান্ড সম্পাদন করতে পারি?

উদাহরণস্বরূপ, স্টেট কমান্ড একটি ফাইল সম্পর্কে অনেক কিছু জানায়, তবে এর ফাইলের প্রকারটি নির্দেশ করে না:

stat fileName

ফাইল কমান্ড, ফাইলটি কী ধরণের তা বলে:

file fileName

আপনি এক লাইনে এটি সম্পাদন করতে পারেন:

stat fileName ; file fileName

তবে আপনাকে ফাইলনামটি দু'বার টাইপ করতে হবে।

আপনি কীভাবে একই ইনপুটটিতে উভয় কমান্ড কার্যকর করতে পারেন (ইনপুটটি টাইপ না করে বা ইনপুটটির কোনও ভেরিয়েবল দু'বার)?

লিনাক্সে, আমি কীভাবে আউটপুটগুলি পাইপ করতে জানি, তবে কীভাবে আপনি ইনপুটগুলি পাইপ করবেন?


14
কেবল পরিষ্কার করার জন্য, এগুলি "ইনপুট" নয়, তারা আর্গুমেন্ট (ওরফে প্যারামিটার)। ইনপুট< (ফাইল থেকে বাম দিকে |ইনপুট ) বা (প্রবাহ থেকে ডানদিকে ইনপুট ) মাধ্যমে পাইপ করা যায় । একটি পার্থক্য আছে।
সোনারলোকস

6
আপনার প্রশ্নের উত্তর নয়, তবে আপনার সমস্যার উত্তর হতে পারে: ব্যাশে, yank-last-argকমান্ডটি (ডিফল্ট শর্টকাট Meta-.বা Meta-_; Metaপ্রায়শই বাম Altকী) হ'ল পূর্ববর্তী কমান্ড লাইন থেকে শেষ পরামিতিটি বর্তমানটিতে অনুলিপি করবে। সুতরাং, নির্বাহের পরে stat fileNameআপনি টাইপ করুন file [Meta-.]এবং এটি fileNameআবার টাইপ করতে হবে না। আমি সর্বদা এটি ব্যবহার করি
দুবু

2
আর পার্থক্য হল যে <এবং >হয় ফেরৎ না বংশীধ্বনিতুল্য । একটি পাইপলাইন দুটি প্রক্রিয়াটিকে সংযুক্ত করে, আবার পুনর্নির্দেশটি স্ট্যান্ডিন / স্টডআউটকে কেবল পুনরায় নিযুক্ত করে।
বিএসডি

@ ডাউনডিং: হ্যাঁ, তবে আপনি পাইপটি পুনর্নির্দেশ করছেন you আপনি ডিস্কের কোনও ফাইল থেকে পড়ার জন্য পাইপলাইনটির সূচনা পুনঃনির্দেশ করতে পারেন, বা আপনি পাইপলাইনের প্রান্তটি ডিস্কের কোনও ফাইলে লেখার জন্য পুনর্নির্দেশ করতে পারেন। এখনও পাইপিং। ;-)
জেমস হাইগ

উত্তর:


22

এখানে অন্য উপায়:

$ stat filename && file "$_"

উদাহরণ:

$ stat /usr/bin/yum && file "$_"
  File: ‘/usr/bin/yum’
  Size: 801         Blocks: 8          IO Block: 4096   regular file
Device: 804h/2052d  Inode: 1189124     Links: 1
Access: (0755/-rwxr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)
Context: system_u:object_r:rpm_exec_t:s0
Access: 2014-06-11 22:55:53.783586098 +0700
Modify: 2014-05-22 16:49:35.000000000 +0700
Change: 2014-06-11 19:15:30.047017844 +0700
 Birth: -
/usr/bin/yum: Python script, ASCII text executable

যে কাজ করে bashএবং zsh। এটি কাজ করে mkshএবং dashকেবল তখন ইন্টারেক্টিভ হয়। এটিএন্ডটি কেএসএসে, এটি কেবল তখনই কাজ করে যখন একের file "$_"থেকে আলাদা লাইনে থাকে stat


1
!$এক কারণ কাজ করবে না !$গত ইতিহাস ইভেন্টের শেষ কথা (আগের প্রবেশ কমান্ড লাইনের তাই হয়, পরিসংখ্যান কমান্ডের নয়) বিস্তৃতি।
স্টাফেন চেজেলাস

@ স্টাফেনচাজেলাস: ওহ, হ্যাঁ, আমার ভুল, আমি এটি মুছে ফেলেছি।
কিউংলম

32

সম্ভবত এটির জন্য আমার নাকলেসটি ছড়িয়ে পড়তে চলেছে, এখানে ব্যাশ ব্রেস সম্প্রসারণের একটি হ্যাকি সংমিশ্রণ এবং কৌশলটি মনে হচ্ছে যা কৌশলটি করতে পারে seems

eval {stat,file}" fileName;"


2
ধনুর্বন্ধনী বিস্তারের সূচনা হয়েছিল csh, না bashbashথেকে এটা কপি ksh। এই কোডটি csh, tcsh, ksh, zsh, মাছ এবং বাশ সবগুলিতে কাজ করবে।
স্টাফেন চেজেলাস

1
খুব খারাপ আপনি কোটের কারণে ফাইলনামটি "ট্যাব আউট" (স্বয়ংক্রিয়-সম্পূর্ণ) করার ক্ষমতা হারাবেন।
লনিবিজ

দুঃখিত, কিন্তু আমি প্রতিহত করতে পারে না পারেন
tomd

দুঃখিত এখানে সমস্যা কি eval? (শীর্ষ মন্তব্যগুলিতে উল্লেখ করে)
ব্যবহারকারী 13107

28

এর সাথে zsh, আপনি বেনামে ফাংশনগুলি ব্যবহার করতে পারেন:

(){stat $1; file $1} filename

সঙ্গে eslambdas:

@{stat $1; file $1} filename

আপনি এছাড়াও করতে পারেন:

{ stat -; file -;} < filename

( statপ্রথম হিসাবে fileঅ্যাক্সেসের সময় আপডেট করবে) doing

আমি করতাম:

f=filename; stat "$f"; file "$f"

তবে, ভেরিয়েবলের জন্য এটিই।


3
{ stat -; file -;} < filenameএইটা জাদু. statঅবশ্যই দেখতে হবে যে এর স্টাডিন কোনও ফাইলের সাথে সংযুক্ত আছে এবং ফাইলটির বৈশিষ্ট্যগুলি প্রতিবেদন করছে? সম্ভবত file
স্টিডিনের

1
@ 1_CR, হ্যাঁ তার এফডে 0 তে একটি করতে stat -বলেstatfstat()
স্টাফেন চেজেলাস

4
{ $COMMAND_A -; $COMMAND_B; } < filenameবৈকল্পিক সাধারণ ক্ষেত্রে কাজ করবে না যদি $ COMMAND_A আসলে কোনো ইনপুট সার্চ; যেমন { cat -; cat -; } < filenameফাইলনামের বিষয়বস্তু কেবল একবার মুদ্রণ করবে।
সর্বাধিক ন্যানসি

2
stat -কোর্টিলস -৮.০ (অক্টোবর ২০০৯) থেকে বিশেষভাবে পরিচালিত হয়, সংস্করণগুলিতে আপনি একটি ত্রুটি পেয়ে যাবেন (যদি না আপনি -পূর্ববর্তী পরীক্ষা থেকে কোনও ফাইল না ডাকেন , এই ক্ষেত্রে আপনি ভুল ফলাফল পাবেন ...)
মিঃ স্পোর্টস

1
@ mr.spuratic। হ্যাঁ, এবং বিএসডি, আইআরআইএক্স এবং জেডএসের পরিসংখ্যান এটিকেও স্বীকৃতি দেবে না। Zsh এবং IRIX স্ট্যাটাস সহ, আপনি stat -f0পরিবর্তে ব্যবহার করতে পারেন ।
স্টাফেন চেজেলাস

9

এই সমস্ত উত্তর আমার কাছে স্ক্রিপ্ট করার মতো, আরও বেশি বা কম পরিমাণে মনে হচ্ছে। এমন কোনও সমাধানের জন্য যা সত্যিই কোনও স্ক্রিপ্টিং জড়িত না এবং ধরে নেওয়া হয় যে আপনি কীবোর্ডে শেল টাইপ করছেন, আপনি চেষ্টা করতে পারেন:

স্টেট সামফাইল Enter
ফাইল Esc_   Enter

কমপক্ষে বাশ, zsh, এবং ksh কমপক্ষে vi এবং emacs উভয় মোডে, এসেস্ক টিপুন এবং তারপরে আন্ডারস্কোরটি পূর্ববর্তী লাইন থেকে শেষ শব্দটি বর্তমান লাইনের সম্পাদনা বাফারে প্রবেশ করান।

অথবা, আপনি ইতিহাসের বিকল্প ব্যবহার করতে পারেন:

স্টেট সামফাইল Enter
ফাইল! $Enter

বাশ, zsh, csh, tcsh এবং সর্বাধিক অন্যান্য শেলগুলিতে !$বর্তমান কমান্ড লাইনটি বিশ্লেষণ করার সময় পূর্ববর্তী কমান্ড লাইনের শেষ শব্দের সাথে প্রতিস্থাপন করা হয়।


zsh / bash এর মতো আর Esc _কী বিকল্প রয়েছে ? আপনি কি অফিসিয়াল ডকুমেন্টেশনের সাথে লিঙ্ক করতে পারেন?
অভিজিৎ রাস্তোগি


1
zsh: linux.die.net/man/1/zshzle এবং "সন্নিবেশিত-শেষ শব্দ" অনুসন্ধান করুন
গডলিজিক

1
@ yশাদ্যাভি b বাশ এবং জেডএস-এর স্ট্যান্ডার্ড কী-বাইন্ডিংগুলির জন্য লিঙ্কগুলি। নোট করুন যে বাশ সবেমাত্র পঠন লাইনের ব্যবহার করছে, সুতরাং (বেশিরভাগ ক্ষেত্রে) ব্যাশগুলি যে কোনও অ্যাপ্লিকেশনে রিডলাইন গ্রন্থাগার ব্যবহার করে তাতে কাজ করবে।
গডলিজিক

3

আমি যেভাবে যুক্তিযুক্তভাবে এটি করতে পেরেছি তা হল xargs ব্যবহার করা, এটি একটি ফাইল / পাইপ নেয় এবং এর বিষয়বস্তুকে প্রোগ্রাম আর্গুমেন্টে রূপান্তর করে। এটি টিয়ের সাথে একত্রিত করা যেতে পারে যা একটি স্ট্রিম বিভক্ত করে এবং এটি দুটি বা আরও বেশি প্রোগ্রামগুলিতে প্রেরণ করে, আপনার ক্ষেত্রে আপনার প্রয়োজন:

echo filename | tee >(xargs stat) >(xargs file) | cat

অন্যান্য উত্তরগুলির থেকে অনেকগুলি ভিন্ন এটি ল্যাবিন্সের অধীনে ব্যাশ এবং বেশিরভাগ অন্যান্য শেলগুলিতে কাজ করবে। আমি এটি একটি পরিবর্তনশীল এর ভাল ব্যবহারের ক্ষেত্রে পরামর্শ দেব তবে আপনি যদি একেবারে ব্যবহার করতে না পারেন তবে এটি কেবল পাইপ এবং সাধারণ ইউটিলিটিগুলি সহকারে করার সেরা উপায় (ধরে নিলে আপনার কাছে বিশেষত অভিনব শেল নেই)।

অতিরিক্তভাবে আপনি টিয়ের পরে এই দুটিয়ের মতো একই পদ্ধতিতে যুক্ত করে যে কোনও প্রোগ্রামের জন্য এটি করতে পারেন।

সম্পাদনা

মন্তব্যে প্রস্তাবিত হিসাবে এই উত্তরে কয়েকটি ত্রুটি রয়েছে, প্রথমটি হ'ল আউটপুট ইন্টারলেসিংয়ের সম্ভাবনা। এটি তাই ঠিক করা যেতে পারে:

echo filename | tee >(xargs stat) >(( wait $!; xargs file )) | cat

এটি কমান্ডগুলিকে পালাতে চালিত করতে বাধ্য করবে এবং আউটপুট কখনই ইন্টারলেস হবে না।

দ্বিতীয় সংখ্যাটি প্রক্রিয়া প্রতিস্থাপন এড়িয়ে চলেছে যা কিছু শেলের মধ্যে পাওয়া যায় না, এটি টিয়ের পরিবর্তে টিপাইপ ব্যবহার করে অর্জন করা যেতে পারে:

echo filename | tpipe 'xargs stat' | ( wait $!; xargs file )

এটি প্রায় কোনও শেলের কাছে বহনযোগ্য হতে হবে (আমি আশা করি) এবং অন্যান্য প্রশংসায় সমস্যাগুলি সমাধান করা উচিত, তবে আমি এই শেষটি স্মৃতি থেকে লিখছি কারণ আমার বর্তমান সিস্টেমে টিপাইপ উপলব্ধ নেই।


1
প্রক্রিয়া প্রতিকল্পন একটি ksh বৈশিষ্ট্য যা শুধুমাত্র কাজ করে ksh(না পাবলিক ডোমেইনে রূপগুলো), bashএবং zsh। এটি নোট করুন statএবং fileএকই সাথে চলবে, সুতরাং সম্ভবত তাদের আউটপুটটি জড়িত হবে (আমি মনে করি আপনি | catআউটপুট বাফারিংটিকে সেই প্রভাবকে সীমাবদ্ধ করতে বাধ্য করছেন ?)
স্টাফেন চেজেলাস

@ স্টাফেনচেজেলাস আপনি বিড়াল সম্পর্কে সঠিক, এটি ব্যবহার করার সময় আমি কখনই ইন্টারলেসড ইনপুট ব্যবহার করতে সক্ষম হইনি it তবে আমি মুহুর্তে আরও বেশি পোর্টেবল সমাধান উত্পাদন করার জন্য কিছু চেষ্টা করতে যাচ্ছি।
মান

3

এই উত্তরটি অন্য কয়েকজনের সাথে সমান:

স্টেট ফাইলের নাম ও   ফাইল! #: 1

পূর্ববর্তী কমান্ড থেকে স্বয়ংক্রিয়ভাবে শেষ যুক্তির পুনরাবৃত্তি করে এমন অন্য উত্তরগুলির মতো নয় , এটির জন্য আপনার গণনা করা দরকার:

ls -ld ফাইলের নাম ও   ফাইল! #: 2

অন্যান্য উত্তরগুলির মতো কিছু নয়, এর জন্য উদ্ধৃতিগুলির প্রয়োজন নেই:

stat "useless cat"  &&  file !#:1

অথবা

echo Sometimes a '$cigar' is just a !#:3.

2

এর ফলে অন্য উত্তর একটি দম্পতি অনুরূপ, কিন্তু চেয়ে বেশি পোর্টেবল এই এক এবং তুলনায় অনেক সহজ এই এক :

sh -c 'স্ট্যাট "$ 0"; ফাইল "$ 0" ' ফাইলের নাম

অথবা

sh -c 'স্ট্যাট "$ 1"; ফাইল "$ 1" 'sh ফাইলের নাম

যা shনিযুক্ত করা হয়েছে $0। যদিও এটি টাইপ করতে আরও তিনটি অক্ষর রয়েছে তবে এটি (দ্বিতীয়) ফর্মটি পছন্দনীয় কারণ এটি $0সেই নাম যা আপনি সেই ইনলাইন স্ক্রিপ্টকে দেন। এটা যে স্ক্রিপ্টের জন্য শেল দ্বারা উদাহরণস্বরূপ জন্য ব্যবহার করা হয়ে, ত্রুটির বার্তা, মত যখন fileবা statপাওয়া যাবে না বা কোনো কারণে মৃত্যুদন্ড কার্যকর করা যাবে না।


আপনি যদি করতে চান

স্টেট ফাইলের নাম 1  ফাইলের নাম 2  ফাইলের নাম 3 …; ফাইল ফাইলের নাম 1  ফাইলের নাম 2  ফাইলের নাম 3

একটি স্বেচ্ছাসেবী ফাইলের জন্য, করুন

sh -c 'স্ট্যাট "$ @"; ফাইল "$ @" 'সি ফাইল ফাইলের 1  ফাইল নাম 2  ফাইলের নাম 3

যা "$@"সমান কারণ এটি কাজ করে "$1" "$2" "$3" …


সেই $0নামটি আপনি সেই ইনলাইন স্ক্রিপ্টটিতে দিতে চান। এটি স্ক্রিপ্টের শেল দ্বারা ত্রুটি বার্তাগুলিতে উদাহরণস্বরূপ ব্যবহৃত হয়। কখন fileবা কখন statখুঁজে পাওয়া যায় না বা কোনও কারণে কার্যকর করা যায় না Like সুতরাং, আপনি এখানে অর্থবহ কিছু চান। অনুপ্রেরণা না থাকলে, কেবল ব্যবহার করুন sh
স্টাফেন চেজেলাস

1

আমি মনে করি আপনি অন্তত যা করার চেষ্টা করছেন তার জন্য আপনি একটি ভুল প্রশ্ন জিজ্ঞাসা করছেন। statএবং fileকমান্ডগুলি প্যারামিটারগুলি নিচ্ছে যা কোনও ফাইলের নাম এবং এটির সামগ্রী নয়। এটি কমান্ডের পরে রয়েছে যা আপনার নির্দিষ্ট করা নামটি দ্বারা চিহ্নিত ফাইলটি পড়ে।

একটি পাইপের দুটি প্রান্ত রয়েছে বলে মনে করা হয়, একটি ইনপুট হিসাবে এবং অন্যটি আউটপুট হিসাবে ব্যবহৃত হয় এবং এটি বোধগম্য হয় কারণ আপনার প্রয়োজনীয় ফলাফল না পাওয়া পর্যন্ত আপনাকে বিভিন্ন সরঞ্জামগুলি সহ বিভিন্ন প্রক্রিয়াজাতকরণের প্রয়োজন হতে পারে। এই বলে যে আপনি কীভাবে আউটপুটগুলি পাইপ করতে জানেন তবে কীভাবে ইনপুটগুলি পাইপ করবেন তা জানেন না নীতিগতভাবে এটি সঠিক নয়।

আপনার ক্ষেত্রে কোনও পাইপের দরকার নেই কারন আপনাকে কোনও ফাইলের নামের আকারে ইনপুট সরবরাহ করতে হবে। এমনকি যদি সেই সরঞ্জামগুলি ( statএবং file) স্টিডিন পড়তে পারে তবে পাইপটি এখানে আবার প্রাসঙ্গিক নয় কেননা ইনপুটটি যখন দ্বিতীয়টিতে আসে তখন কোনও সরঞ্জাম দ্বারা এটিকে পরিবর্তন করা উচিত নয়।


1

এটি বর্তমান ডিরেক্টরিতে সমস্ত ফাইল নামের জন্য কাজ করা উচিত।

sh -c "$(printf 'stat -- "$1";file -- "$1";shift%.0b\n' *)" -- *

1
ধরে নিচ্ছি যে ফাইলের নামগুলিতে ডাবল উদ্ধৃতি, ব্যাকস্ল্যাশ, ডলার, ব্যাকটিক, }... অক্ষর নেই এবং এটি দিয়ে শুরু করবেন না -। কিছু printfবাস্তবায়ন (zsh, bash, ksh93) এর একটি রয়েছে %q। সহ zsh, এটি হতে পারে:printf 'stat %q; file %1$q\n' ./* | zsh
স্টাফেন চেজেলাস

@ স্টাফেনচিজলস - হার্ডকোটের সম্ভাবনা বাদে এগুলি এখন ঠিক করা হয়েছে। আমি sed s///অনুমান করি যে এটি একটি একক দিয়ে আমি হ্যান্ডেল করতে পারি, তবে এটির সুযোগ সম্পর্কে - এবং লোকেরা যদি তাদের ফাইলের নামগুলিতে রাখে তবে তাদের উইন্ডোজ ব্যবহার করা উচিত।
মাইকজারভেল

@ স্টাফেনচাজেলাস - কিছুই নয় - আমি ভুলে গিয়েছিলাম যে এগুলি পরিচালনা করা কতটা সহজ।
মাইকসার্ভ

কড়া কথায় বলতে গেলে এটি প্রশ্নের উত্তর নয়, যেমনটি জিজ্ঞাসা করা হয়েছিল: "আপনি কীভাবে একই ইনপুটে উভয় কমান্ড কার্যকর করতে পারেন ( ইনপুট দু'বার টাইপ না করে ?)" (জোর যুক্ত করা)) আপনার উত্তরটি বর্তমান ডিরেক্টরিতে থাকা সমস্ত ফাইলের জন্য প্রযোজ্য - এবং এতে *দু'বার অন্তর্ভুক্ত রয়েছে । আপনি পাশাপাশি বলতে পারেন stat -- *; file -- *
স্কট

@ স্কট - ইনপুটটি দু'বার টাইপ করা হয় না - *প্রসারিত হয়। সম্প্রসারণ এর *প্লাস দুই কমান্ড প্রত্যেক যুক্তি এ জন্য * ইনপুট হয়। দেখুন? printf commands\ %s\;shift *
মাইকসার্ভ

1

এখানে 'ইনপুট'-এর কয়েকটি পৃথক উল্লেখ রয়েছে, তাই প্রথমে এটি বিবেচনা করে কিছু পরিস্থিতি দেব। সংক্ষিপ্ত আকারে আপনার প্রশ্নের উত্তরের জন্য :

stat testfile < <($1)> outputfile

উপরেরটি টেস্টফাইলে একটি স্ট্যাটাস সম্পাদন করবে, এটি STDOUT নেবে (পুনর্নির্দেশ করবে) এবং এটি পরবর্তী বিশেষ ফাংশনে অন্তর্ভুক্ত করবে (<() অংশ) তারপরে যা ছিল তার চূড়ান্ত ফলাফলকে একটি নতুন ফাইলে (আউটপুট ফাইল) আউটপুট দেবে। ফাইলটি বলা হয়, তারপরে ব্যাশ বিল্ট-ইনগুলির সাথে রেফারেন্স করা হয় (প্রতি বারের পরে, 1, যতক্ষণ না আপনি নির্দেশের একটি নতুন সেট শুরু করেন)।

আপনার প্রশ্নটি দুর্দান্ত, এবং এটি করার জন্য বেশ কয়েকটি উত্তর এবং উপায় রয়েছে তবে আপনি বিশেষভাবে যা করছেন তার সাথে এটি প্রকৃতপক্ষে পরিবর্তিত হবে।

উদাহরণস্বরূপ, আপনি এটি লুপ করতে পারেন, যা বেশ কার্যকর। এর সাধারণ ব্যবহার হ'ল স্যুইডো-কোড মানসিকতায়, হ'ল:

run program < <($output_from_program)> my_own.log

এটিকে গ্রহণ করা এবং সেই জ্ঞানকে প্রসারিত করা আপনাকে এই জাতীয় জিনিস তৈরি করতে দেয়:

ls -A; (while read line; do printf "\e[1;31mFound a file\e[0m: $line\n"; done) < <(/bin/grep thatword * | /usr/bin/tee -a files_that_matched_thatword)

এটি আপনার বর্তমান ডিরেক্টরিতে একটি সাধারণ ls -A সঞ্চালন করবে, তারপরে ls -A থেকে (এবং এটি যেখানে জটিল!) প্রতিটি ফলাফলের মধ্যে প্রতিটি ফলাফলের মধ্যে লুপ করার সময় বলুন এবং সেই ফলাফলগুলির প্রতিটিটিতে "গ্রেড" শব্দটি গ্রেপ্তার করুন এবং কেবল পূর্ববর্তীটি সম্পাদন করুন প্রিন্টফ (লাল রঙে) যদি এটিতে আসলে "সেই শব্দ" যুক্ত কোনও ফাইল খুঁজে পায়। এটি গ্রেপের ফলাফলগুলিকে একটি নতুন পাঠ্য ফাইল, ফাইল_ট্যাট_ম্যাচড_সামগ্রী করে লগ করবে।

উদাহরণ আউটপুট:

ls -A; (while read line; do printf "\e[1;31mFound a file\e[0m: $line\n"; done) < <(/bin/grep thatword * | /usr/bin/tee -a files_that_matched_thatword)

index.html

এগুলি সবগুলি কেবলমাত্র ls -A ফলাফল মুদ্রণ করেছে, বিশেষ কিছুই নয়। এবার গ্রেপ করার জন্য এটিতে কিছু যুক্ত করুন:

echo "thatword" >> newfile

এখন এটি আবার চালান:

ls -A; (while read line; do printf "\e[1;31mFound a file\e[0m: $line\n"; done) < <(/bin/grep thatword * | /usr/bin/tee -a files_that_matched_thatword)

files_that_matched_thatword  index.html  newfile

Found a file: newfile:thatword

যদিও আপনি বর্তমানে খুঁজছেন তার চেয়ে সম্ভবত আরও ক্লান্তিকর উত্তর, আমি বিশ্বাস করি যে এই জাতীয় হাতের নোটগুলি চারপাশে রাখলে ভবিষ্যতের প্রচেষ্টাগুলিতে আপনার আরও অনেক উপকার হবে।

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