আমি কীভাবে কোনও প্রতিধ্বনি file কিছু << ফাইলের.টেক্সট ছাড়া গাড়ীর রিটার্ন না দিয়ে পারি?


81

আমি যখন echo $something >> file.txt, একটি নতুন লাইন ফাইল যুক্ত করা হবে।

আমি যদি নতুন লাইন ছাড়াই সংযোজন করতে চাই?


3
সতর্কতা অবলম্বন করুন echo $something, এর আচরণটি IFSভেরিয়েবলের উপর নির্ভর করে এবং আপনি অদৃশ্য হয়ে যাওয়া চরিত্রটি দিয়ে শেষ করতে পারেন। আপনি নিম্নলিখিত চেষ্টা করতে পারেন: var="hello world"; echo $var(হ্যালো এবং বিশ্বের মধ্যে দুটি স্পেস) বা var="hello world"; IFS='l'; echo $varবা var="-e hello \\n world"; echo $var। এটি সমাধান করতে, ভেরিয়েবলের চারপাশে ডাবল কোট যুক্ত করুন: echo "$var"বা ব্যবহার করুন printf
jfg956

উত্তর:


96

এটা কি echo -nজন্য।


4
এর সমতুল্য কি আছে cat? (যেমন আপনার যখন something.txtভেরিয়েবলের পরিবর্তে কোনও ফাইল থাকে $something)
cboettig

1
@ কোয়েটিটিগ: না। চূড়ান্ত নিউলাইন ছাড়াও সমস্ত কিছু মুদ্রণের জন্য একটি আলাদা সরঞ্জাম ব্যবহার করুন।
Ignacio Vazquez-Abram

@cboettig, বিড়াল ডিফল্টভাবে আউটপুটটিতে কিছু যুক্ত করে না, তাই বিড়ালের জন্য '-n' পরমের দরকার নেই। উদাহরণস্বরূপ, যদি আপনার ফাইলটির শেষ লাইনে লাইন-এন্ডিং না থাকে, তবে আপনার শেল প্রম্পটটি ফাইলের শেষ চরিত্রের ঠিক পরে মুদ্রিত হবে এবং কোনও নতুন লাইনে নয়
রন্ডো

41

printfখুব নমনীয় এবং তুলনায় আরও বহনযোগ্য echo। সি / পার্ল / ইত্যাদি বাস্তবায়নগুলির মতো, আপনি যদি বিন্যাসের স্ট্রিংটি সমাপ্ত না করেন \nতবে কোনও নতুন লাইন প্রিন্ট করা হয় না:

printf "%s" "$something" >> file.txt

7

আপনি যদি কমান্ডের আউটপুট ব্যবহার করে থাকেন তবে আপনি প্রতিধ্বনির সাথে xargs ব্যবহার করতে পারেন

/sbin/ip route|awk '/default/ { print $3 }' | xargs echo -n >> /etc/hosts

0

tr অন্য বিকল্প।

আপনি যদি echoনিজের ইনপুট হিসাবে ব্যবহার করেন তবে আপনি যা পেতে পারেন tr -d '\n'

অন্যান্য কমান্ড থেকে আউটপুট পাইপিংয়ের সময়ও এই কৌশলটি কাজ করে (কেবলমাত্র একক আউটপুট আউটপুট)। তদতিরিক্ত, যদি আপনি না জানেন যে ফাইলগুলির ইউনিক্স বা ডস লাইনের শেষ রয়েছে যা আপনি ব্যবহার করতে পারেন tr -d '\n\r'

এখানে কিছু পরীক্ষা দেখাচ্ছে যা এটি কাজ করে।

নিউলাইন অন্তর্ভুক্ত:

something='0123456789' ; echo ${something} | wc -c
11

ইউনিক্স নিউলাইন:

something='0123456789' ; echo ${something} | tr -d '\n\r' | wc -c
10

ডস স্টাইল:

something='0123456789' ; echo ${something} | unix2dos | tr -d '\n\r' | wc -c
10

বিএসডি trএবং জিএনইউর সাথে পরীক্ষিত tr

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