"বিড়াল> ফাইলের নাম << বালাহ" কমান্ড কীভাবে বোঝবেন?


13

নিম্নলিখিত কমান্ডের মধ্যে বিড়ালটি এখানে-ডকটির বিষয়বস্তু নিয়ে যায় এবং এটিকে নামকরণ করা কনফ ফাইল করতে পুনঃনির্দেশ করে:

cat > conf << EOF
var1="cat"
var2="dog"
var3="hamster"
EOF

এখানে কমান্ডের ক্রমটি কীভাবে বোঝবেন? কি bashপ্রথম প্রসেস অন্য সব কিছুর (এখানে-ডক অংশ) এবং একটি চূড়ান্ত পদক্ষেপ হিসেবে দেখে মনে হচ্ছে > confঅংশ?

উত্তর:


17

এখানে-নথি হ'ল এক ধরণের শেল পুনর্নির্দেশ, সুতরাং শেল এটিকে শুরু থেকে শেষ অবধি (বা বাম থেকে ডানে, বা উপস্থিতির ক্রম) হিসাবে স্বাভাবিক পুনর্নির্দেশ হিসাবে সম্পাদন করবে। এটি পসিএক্স দ্বারা সংজ্ঞায়িত:

যদি কমান্ডের সাথে একাধিক পুনর্নির্দেশ অপারেটর নির্দিষ্ট করা থাকে তবে মূল্যায়নের ক্রমটি শুরু থেকে শেষ পর্যন্ত।


আপনার কমান্ডে, লেখার জন্য প্রথমে খোলার এবং ফাইল কেটে ফেলা হবে, তারপরে তথ্য catপড়বে ।> confconfHere-Document

ব্যবহার করে strace, আপনি এটি যাচাই করতে পারেন:

$ strace -f -e trace=open,dup2 sh -c 'cat > conf << EOF
var1="cat"
var2="dog"
var3="hamster"
EOF
'
...
open("conf", O_WRONLY|O_CREAT|O_TRUNC, 0666) = 3
dup2(3, 1)                              = 1
dup2(3, 0)                              = 0
...

আমি দেখি. তাই মূলত কি ক্ষেত্রে এরকম cat > file_name << blahযে চালানোর আগে stdout- এ শেলের নামের ফাইল সংযুক্ত রয়েছে এবং তারপর stdin শেলের সাথে সংযুক্ত করা হয় এখানে-ডক ? catfile_name
মার্টিন

@ মার্টিন: হ্যাঁ আপনি দেখতে পারেন openআগে বলা হয়েছিল dup2
cuonglm

12

আচ্ছা, আসুন জেনে নিই:

unset file
cat >"$file" <<EOF
this is not in ${file=./myfile}
EOF

bash: : No such file or directory

Dang। আমার ধারণা এটি >"$file"প্রথমে অবশ্যই অংশটি করা উচিত । তবে কী হবে ...?

unset file
<<EOF cat >"$file"
this is in ${file=./myfile}
EOF

... কোন ত্রুটি নেই ...?

cat ./myfile

this is in ./myfile

এটি প্রদর্শিত হিসাবে, আদেশের বিষয়।


-1

যখন bashরান প্রক্রিয়া তৈরি করে cat, এটা প্রর্দশিত confফাইল বর্ণনাকারী 1 লেখার জন্য এবং ফাইল বর্ণনাকারী 0 পঠিত জন্য একটি অস্থায়ী ফাইল (এখানে-নথির জন্য) প্রর্দশিত, আগে execপ্রোগ্রাম ing। এই ক্ষেত্রে, এই ক্রিয়াগুলি ক্রম সংঘটিত হওয়ার ক্ষেত্রে এটি কোনও বিষয় নয়।

ফাইল বর্ণনাকারীদের পুনরায় নিয়োগ করা হলে অর্ডার তাৎপর্যপূর্ণ হয়ে ওঠে, উদাহরণস্বরূপ 2>&1

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