কি করে \; একটি স্ক্রিপ্ট মানে? [নকল]


0

এই প্রশ্নটি ইতিমধ্যে একটি উত্তর আছে:

কি করে \; নিম্নলিখিত কমান্ড মানে? আমি কি নিশ্চিত না {} মানে। কি \; সত্যিই প্রয়োজন?

find ./ -name file_1 -exec cp {} ./ \;

2
কী ভাষা? আপনি এই দেখতে কোথায়?
Canadian Luke

1
প্রশ্নটি সঠিকভাবে উত্তর দেওয়া হয়নি, যদিও কিছু চমৎকার ব্যাখ্যা দেওয়া হয়েছিল। দ্য ; কমান্ডের শেষে চিহ্নিত করে যে -exec চলমান হবে। \ Bash থেকে এটি escaping জন্য।
jaychris

দেখ শেল এর নিয়ন্ত্রণ এবং পুনঃনির্দেশ অপারেটরদের কি কি? কি আলোচনা জন্য ; নিজেই দ্বারা মানে (ছাড়া \ )।
G-Man

উত্তর:


6

আপনার উদাহরণে \; অনুসন্ধান কমান্ড অংশ। (দেখুন মানুষ 1 খুঁজে )। একই জন্য সত্য {}

এই সুনির্দিষ্ট আদেশটি বলে:

  • বর্তমান ডিরেক্টরির মধ্যে বিন্দু খুঁজুন (বিন্দু বা আপনার ক্ষেত্রে ./ )
  • কোথায় ফাইল বা ডিরেক্টরি নাম হয় file_1
  • এবং তারপর Exec নিচের কমান্ডটি চালু করুন cp {} ./
    যেখানে {} পাওয়া ফাইল বা ডিরেক্টরি প্রতিস্থাপন করবে।

ফলস্বরূপ file_1 নামক সমস্ত ফাইল এবং ডিরেক্টরি আপনার বর্তমান ডিরেক্টরির মধ্যে অনুলিপি করা হবে। (এবং সেগুলির নামের একাধিক ফাইল বা ডিআইআর রয়েছে যদি তারা ওভাররাইট হয়ে যেতে পারে)


সাধারণ ব্যাখ্যা জন্য অনেক। এখন nitty-পিক বিবরণ:

খুঁজে পাওয়া যায় যে প্রতিটি আইটেম জন্য চালানো হবে যা কমান্ড: cp full_path_to_item ./
এই মধ্যে কন্টেন্ট -exec এবং ;

তবে সেমিকোলন বশে একটি বিশেষ চরিত্র। যদি আমরা এর সাথে বিশেষ কিছু করি না তবে শেলটি খাবে। তাই আমরা একটি ব্যাকস্ল্যাশ দিয়ে এটি অব্যাহতি। এটি শেলকে এটি ছেড়ে চলে যেতে এবং এটি খুঁজে বের করতে এটি বলে।


আপনি সব বিশেষ অক্ষর জন্য এই কাজ করতে হবে মনে রাখবেন। উদাহরণস্বরূপ আপনি কেবলমাত্র ফাইলের নামের মধ্যে একটি তারকাচিহ্ন ব্যবহার করতে পারবেন না (তাই কোনও সন্ধান নেই। -ফাইনাম *। mp3 ... টাইপ করুন)


3

আধা-কোলনটি পালিয়ে যাওয়ার কারণটি হ'ল শেলের পরিবর্তে এর দ্বারা ব্যাখ্যা করা হবে find যদি এটি পালানো হয় না। find এটির কমান্ড লাইন এ এটি দেখতে প্রত্যাশা করে, তাই ব্যাকস্ল্যাশ শেলকে এটি উপেক্ষা করে এটির কাছে প্রেরণ করে find। এটা অপরিহার্য যে find আধা কোলন দেখুন অথবা এটি আপনাকে একটি ত্রুটি দেবে।

{} দ্বারা ব্যাখ্যা করা হয় find। এটি এমন একটি স্থানধারক যা আপনি যে কমান্ডটি চালাতে চান সেটিতে রাখেন এবং প্রতিটি ফাইলের জন্য find খুঁজে পাচ্ছে, এটি ফাইল নাম দিয়ে সেই দুটি বন্ধনী প্রতিস্থাপন করবে এবং আপনার কমান্ড চালাবে।

আপনার উদাহরণে, যদি এটি ফাইল_1 পাওয়া যায় তবে নিম্নোক্ত কমান্ডটি চালানো হবে:

cp file_1 ./

1

দ্য {} \; শেলের সাথে খুব বেশি কিছু করার নেই, কিন্তু আর্কুমেন্টগুলির সাথে আরও অনেক খোঁজা যা কমান্ড কমান্ডটি -exec উপcomm্যান্ডের প্রত্যাশা করে। {} বর্তমান ফাইলের নাম দিয়ে প্রতিস্থাপিত হয়, উদাঃ। এই ফলাফলটি FILENAME এর সাথে ls -d FILENAME কমান্ডটি খুঁজে বের করা খুঁজে পাওয়া প্রতিটি ফাইল দ্বারা প্রতিস্থাপিত হয়। দ্য \; -EXec যুক্তি একটি টারমিনারেটর হিসাবে কাজ করে। খোঁজার ম্যানুয়াল পৃষ্ঠা দেখুন, উদাঃ। টাইপ করুন একটি লিনাক্স শেলের উপর সন্ধান করুন, এবং বিবরণ খুঁজে বের করতে স্ট্রিং-এক্সেক সন্ধান করুন।

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