উত্তর:
echo "some data for the file" >> fileName
sudo sh -c 'echo "some data for the file" >> fileName'
#!/bin/sh
FILE="/path/to/file"
/bin/cat <<EOM >$FILE
text1
text2 # This comment will be inside of the file.
The keyword EOM can be any text, but it must start the line and be alone.
EOM # This will be also inside of the file, see the space in front of EOM.
EOM # No comments and spaces around here, or it will not work.
text4
EOM
আপনি কোনও আদেশের আউটপুট কোনও ফাইলে পুনর্নির্দেশ করতে পারেন:
$ cat file > copy_file
অথবা এটিতে সংযোজন করুন
$ cat file >> copy_file
আপনি যদি সরাসরি লিখতে চান তবে কমান্ডটি হ'ল echo 'text'
$ echo 'Hello World' > file
sudo sh -c 'cat file > /etc/init/gunicorn.conf'
(উপরে lukaserat এর মন্তব্যের ধন্যবাদ)
#!/bin/bash
cat > FILE.txt <<EOF
info code info
info code info
info code info
EOF
cat > FILE.txt
যখন আপনার কাজ সম্পন্ন হয় তারপর Ctrl + D: ।
আমি জানি এটি একটি জঘন্য পুরাতন প্রশ্ন, তবে ওপি যেমন স্ক্রিপ্টিং সম্পর্কিত, এবং গুগল আমাকে এখানে এনেছে, একই সাথে পড়া এবং লেখার জন্য ফাইল বর্ণনাকারী খোলার বিষয়টিও উল্লেখ করা উচিত।
#!/bin/bash
# Open file descriptor (fd) 3 for read/write on a text file.
exec 3<> poem.txt
# Let's print some text to fd 3
echo "Roses are red" >&3
echo "Violets are blue" >&3
echo "Poems are cute" >&3
echo "And so are you" >&3
# Close fd 3
exec 3>&-
তারপর cat
টার্মিনালে ফাইলটি
$ cat poem.txt
Roses are red
Violets are blue
Poems are cute
And so are you
এই উদাহরণটি ফাইলের কবিতা.টিএসটিএসটি ফাইল ডেস্ক্রিপ্টর 3 পড়তে এবং লেখার জন্য উন্মুক্ত করে তোলে এটি এটিও দেখায় যে * নিক্স বাক্সগুলি আরও fd এর তত্ক্ষণাত কেবল স্টিডিন, স্টডআউট এবং স্টেডার (fd 0,1,2) জানে। এটি আসলে অনেক কিছু ধরে রাখে। সাধারণত কার্নেল বরাদ্দ করতে পারে এমন ফাইল বর্ণনাকারীর সর্বাধিক সংখ্যক সন্ধান করা যেতে পারে/proc/sys/file-max
বা /proc/sys/fs/file-max
9 এর উপরে যে কোনও fd ব্যবহার করা বিপজ্জনক কারণ এটি শেল দ্বারা অভ্যন্তরীণভাবে ব্যবহার করা fd এর সাথে বিরোধ করতে পারে conflict সুতরাং বিরক্ত করবেন না এবং কেবল fd এর 0-9 ব্যবহার করুন। বাশ স্ক্রিপ্টে আপনার যদি আরও 9 ফাইল বর্ণনাকারীর প্রয়োজন হয় তবে আপনার অন্যভাবে অন্য ভাষা ব্যবহার করা উচিত :)
যাইহোক, এফডি এর আকর্ষণীয় উপায়ে ব্যবহার করা যেতে পারে।
আমি এই উত্তরটি পছন্দ করি:
cat > FILE.txt <<EOF
info code info
...
EOF
তবে পরামর্শ দেবে cat >> FILE.txt << EOF
আপনি ইতিমধ্যে যা আছে তা মুছে না দিয়ে কেবল ফাইলের শেষের দিকে কিছু যুক্ত করতে চান কিনা
এটার মত:
cat >> FILE.txt <<EOF
info code info
...
EOF
উত্তর হিসাবে আমার মন্তব্য সরানো, @lycono দ্বারা অনুরোধ হিসাবে
আপনার যদি রুট সুবিধার সাথে এটি করার দরকার হয় তবে এটি এইভাবে করুন:
sudo sh -c 'echo "some data for the file" >> fileName'
echo "some data for the file" | sudo tee -a fileName >/dev/null
কেবল tee
রুট হিসাবে চালানোর চেষ্টা করুন ।
পরিবেশগুলির জন্য যেখানে এখানে নথিগুলি অনুপলব্ধ রয়েছে ( Makefile
, Dockerfile
ইত্যাদি) আপনি প্রায়শই printf
যুক্তিসঙ্গতভাবে সুস্পষ্ট ও দক্ষ সমাধানের জন্য ব্যবহার করতে পারেন ।
printf '%s\n' '#!/bin/sh' '# Second line' \
'# Third line' \
'# Conveniently mix single and double quotes, too' \
"# Generated $(date)" \
'# ^ the date command executes when the file is generated' \
'for file in *; do' \
' echo "Found $file"' \
'done' >outputfile
আমি ভেবেছিলাম কয়েকটি পুরোপুরি সূক্ষ্ম উত্তর আছে তবে সমস্ত সম্ভাবনার সংক্ষিপ্তসার নেই; এইভাবে:
এখানে বেশিরভাগ উত্তরের পিছনে মূল অধ্যক্ষ হ'ল পুনঃনির্দেশ । দুটি ফাইলগুলিতে লেখার জন্য গুরুত্বপূর্ণ পুনর্নির্দেশ অপারেটর:
echo 'text to completely overwrite contents of myfile' > myfile
echo 'text to add to end of myfile' >> myfile
অন্যরা উল্লিখিত, যেমন স্থির ইনপুট উত্সের পরিবর্তে echo 'text'
, আপনি একটি "এখানে নথি" এর মাধ্যমে ফাইলগুলিতে ইন্টারেক্টিভভাবে লিখতেও পারেন, যা উপরের ব্যাশ ম্যানুয়ালটির লিঙ্কেও বিস্তারিত রয়েছে। সেই উত্তরগুলি, যেমন
cat > FILE.txt <<EOF
অথবা cat >> FILE.txt <<EOF
একই পুনঃনির্দেশ অপারেটরগুলি ব্যবহার করুন, তবে "এখানে নথিগুলি" এর মাধ্যমে অন্য স্তর যুক্ত করুন। উপরের সিনট্যাক্সে, আপনি আউটপুট মাধ্যমে FILE.txt এ লিখবেনcat
। ইন্টারেক্টিভ ইনপুটকে কিছু নির্দিষ্ট স্ট্রিং দেওয়ার পরে এই লিখনটি স্থান নেয়, এই ক্ষেত্রে 'ইওএফ', তবে এটি কোনও স্ট্রিং হতে পারে, যেমন:
cat > FILE.txt <<'StopEverything'
অথবা cat >> FILE.txt <<'StopEverything'
ঠিক পাশাপাশি কাজ করবে। এখানে নথিগুলি বিভিন্ন বিযুক্তকারী এবং অন্যান্য আকর্ষণীয় পার্সিং চরিত্রগুলিও সন্ধান করে, সুতরাং সে সম্পর্কে আরও তথ্যের জন্য ডকগুলিতে একবার দেখুন।
কিছুটা পুনঃনির্দেশ এবং আরও অনেকগুলি পুনঃনির্দেশ এবং এখানে নথির সিনট্যাক্স বোঝার জন্য অনুশীলন, তবে আপনি এখানে স্ট্রিং হয়ে স্ট্যান্ডার্ড পুনঃনির্দেশ অপারেটরের সাথে ডকুমেন্ট স্টাইলের সিনট্যাক্সকে একত্রিত করতে পারেন:
বিড়াল ইনপুট এর পুনর্নির্দেশ আউটপুটcat > myfile <<<'text to completely overwrite contents of myfile'
cat >> myfile <<<'text to completely overwrite contents of myfile'
ডকুমেন্ট এবং vi এখানেও ব্যবহার করতে পারেন, নীচের স্ক্রিপ্টটি 3 লাইন এবং ভেরিয়েবল ইন্টারপোলেশন সহ একটি FILE.txt তৈরি করে
VAR=Test
vi FILE.txt <<EOFXX
i
#This is my var in text file
var = $VAR
#Thats end of text file
^[
ZZ
EOFXX
তারপরে ফাইলের নীচের মত 3 লাইন থাকবে। "i" হ'ল vi সন্নিবেশ মোড এবং একইভাবে Esc এবং ZZ দিয়ে ফাইলটি বন্ধ করতে হবে।
#This is my var in text file
var = Test
#Thats end of text file