কোনও পাঠ্য ফাইলের শেষে আউটপুট সংযোজন কীভাবে


478

আমি একটি পাঠ্য ফাইলের শেষে কোনও কমান্ডের আউটপুট কীভাবে যুক্ত করব?

উত্তর:


665

কোনও ফাইলে আউটপুট নির্দেশ করার >>পরিবর্তে ব্যবহার >করুন:

your_command >> file_to_append_to

যদি file_to_append_toবিদ্যমান নয়, এটা তৈরি করা হবে।

উদাহরণ:

$ echo "hello" > file
$ echo "world" >> file
$ cat file 
hello
world

4
সমস্যাটি হ'ল echoস্ট্রিং থেকে নতুনলাইনগুলি সরিয়ে দেয়। আপনি কীভাবে কোনও ফাইলকে যুক্ত করতে পারেন যাতে একটি নতুন স্ট্রিং থাকে?
টিমোথি সোয়ান 21

5
@ টিমোথিওয়ান, আমি -e বিকল্পের সাথে বিশ্বাস করি।
ভ্যালেন্টিন গ্রাগোয়ার

প্রতিধ্বনি স্ট্রিং থেকে নতুন লাইনগুলি সরিয়ে দেয় না। আপনি যদি যুক্তিটি যথাযথভাবে উদ্ধৃত করতে ব্যর্থ হন তবে শেলটি স্ট্রিংকে বিভক্ত করবে এবং আর্গুমেন্টগুলি প্রতিধ্বনিত করবে এবং প্রতিধ্বনি কখনও নতুন লাইনের মুখ দেখেনি।
উইলিয়াম পার্সেল

105

করার appendএকটি ফাইল ব্যবহার >>

echo "hello world"  >> read.txt   
cat read.txt     
echo "hello siva" >> read.txt   
cat read.txt

তারপরে আউটপুট হওয়া উচিত

hello world   # from 1st echo command
hello world   # from 2nd echo command
hello siva

করার overwriteএকটি ফাইল ব্যবহার >

echo "hello tom" > read.txt
cat read.txt  

তারপর আউট পুট হয়

hello tom


74

আপনি >> অপারেটর ব্যবহার করতে পারেন। এটি একটি পাঠ্য ফাইলের শেষে একটি কমান্ড থেকে ডেটা যুক্ত করবে।

এই চেষ্টা চালানোর চেষ্টা করুন:

echo "Hi this is a test" >> textfile.txt

এটি কয়েক বার করুন এবং তারপরে চালান:

cat textfile.txt

আপনি দেখবেন আপনার পাঠ্যটি টেক্সটফিল.টিএসটিএস ফাইলে বেশ কয়েকবার সংযুক্ত করা হয়েছে।


40

command >> file_to_append_toএকটি ফাইল সংযোজন ব্যবহার করুন।

উদাহরণ স্বরূপ echo "Hello" >> testFile.txt

সতর্কতা: আপনি যদি কেবল একটি একক ব্যবহার করেন তবে আপনি >ফাইলের বিষয়বস্তুগুলিকে ওভাররাইট করতে পারবেন। নিশ্চিত করার জন্য যে কখনও ঘটবে না, আপনি যোগ করতে পারেন set -o noclobberআপনার টু .bashrc

এটি নিশ্চিত করে যে আপনি যদি দুর্ঘটনাক্রমে command > file_to_append_toকোনও বিদ্যমান ফাইলটিতে টাইপ করেন তবে এটি আপনাকে সতর্ক করবে যে ফাইলটি ইতিমধ্যে বিদ্যমান। নমুনা ত্রুটি বার্তা:file exists: testFile.txt

সুতরাং, আপনি যখন >এটি ব্যবহার করবেন কেবল তখনই আপনাকে একটি নতুন ফাইল তৈরি করার অনুমতি দেবে, বিদ্যমান ফাইলটি ওভাররাইট না করে।



21

ব্যবহার টী বর্ণের নাম বিকল্প -a (--append) আপনি একবার এবং ব্যবহার করা একাধিক ফাইল সংযুক্ত করতে পারবেন উবুন্টু (খুব দরকারী যখন সংরক্ষিত ফাইলগুলিতে সংযোজন)। তদ্ব্যতীত, যদি আপনার বাশ ছাড়াও অন্যান্য শেলগুলি ব্যবহার করার দরকার হয় তবে এটি আকর্ষণীয় যেহেতু সমস্ত শেলগুলি> এবং >> অপারেটরকে সমর্থন করে না

echo "hello world" | sudo tee -a output.txt

এই থ্রেড টি সম্পর্কে ভাল উত্তর আছে


2
কোনও নতুন লাইনের সাথে কিছু যুক্ত করার সেরা উপায় এটি।
এম_আর_ কে

2
সুরক্ষিত ফাইলগুলিতে
সংযোজনের

14

পুরো প্রশ্নের জন্য:

cmd >> o.txt && [[ $(wc -l <o.txt) -eq 720 ]] && mv o.txt $(date +%F).o.txt

এটি 720 টি লাইন (30 * 24) o.txt এ যুক্ত করবে এবং তার পরে বর্তমান তারিখের উপর ভিত্তি করে ফাইলটির নাম পরিবর্তন করবে।

উপরের ক্রোন দিয়ে প্রতি ঘন্টা বা চালান, বা

while :
do
    cmd >> o.txt && [[ $(wc -l <o.txt) -eq 720 ]] && mv o.txt $(date +%F).o.txt
    sleep 3600
done

11

আমি প্রতিধ্বনির পরিবর্তে প্রিন্টফ ব্যবহার করব কারণ এটি আরও নির্ভরযোগ্য এবং \nসঠিকভাবে নতুন লাইনের মতো ফর্ম্যাট করার প্রক্রিয়া ।

এই উদাহরণটি পূর্ববর্তী উদাহরণগুলিতে প্রতিধ্বনির অনুরূপ একটি আউটপুট উত্পাদন করে:

printf "hello world"  >> read.txt   
cat read.txt
hello world

তবে আপনি যদি এই উদাহরণে প্রতিধ্বনির সাথে প্রিন্টফকে প্রতিস্থাপন করেন তবে প্রতিধ্বনি \ n কে স্ট্রিং হিসাবে বিবেচনা করবে, সুতরাং উদ্দেশ্যটিকে উপেক্ষা করবে

printf "hello\nworld"  >> read.txt   
cat read.txt
hello
world

7

আমি আপনাকে দুটি জিনিস করার পরামর্শ দিই:

  1. >>নির্দিষ্ট ফাইলটিতে সামগ্রী যুক্ত করার জন্য আপনার শেল স্ক্রিপ্টটিতে ব্যবহার করুন। ফাইলের নামটি নির্দিষ্ট বা কিছু প্যাটার্ন ব্যবহার করে স্থির করা যেতে পারে।
  2. শেল স্ক্রিপ্টটি ট্রিগার করতে একটি ঘন্টার ক্রোনজব সেটআপ করুন

7

উদাহরণস্বরূপ আপনার ফাইলের মধ্যে রয়েছে:

 1.  mangesh@001:~$ cat output.txt
    1
    2
    EOF

আপনি যদি ফাইলের শেষে সংযোজন করতে চান তবে ----> 'টেক্সট' >> 'ফাইলের নাম' এর মধ্যে ফাঁকা স্থানগুলি মনে রাখবেন

  2. mangesh@001:~$ echo somthing to append >> output.txt|cat output.txt 
    1
    2
    EOF
    somthing to append

এবং ফাইলের বিষয়বস্তু ওভাররাইট করতে:

  3.  mangesh@001:~$ echo 'somthing new to write' > output.tx|cat output.tx
    somthing new to write

1
এটি অনেক বিবরণে বিভ্রান্তিকর। স্পেসগুলি গুরুত্বপূর্ণ নয় এবং খালি আউটপুটটি পাইপ করা catহল ... সম্পূর্ণরূপে অসচেতন। (এটি খালি কারণ আপনি কেবল একটি ফাইলের কাছে স্ট্যান্ডার্ড আউটপুট পুনঃনির্দেশ করেছেন।)
২৪
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.