ইতিমধ্যে বিদ্যমান এবং কোনওভাবে সুরক্ষিত লিনাক্সের একটি ফাইল কীভাবে ("কাটানো") খালি করবেন?


113

আমার সার্ভারে আমার কাছে ত্রুটি.লগ নামে একটি ফাইল রয়েছে যা আমাকে প্রায়শই ছিন্ন করা প্রয়োজন। আমার কাছে ফাইলটির জন্য rw অনুমতি রয়েছে। Vi এ ফাইলটি খুলতে> সমস্ত সামগ্রী মুছে ফেলা> সংরক্ষণের কাজগুলি (স্পষ্টতই)। তবে আমি যখন নীচের চেষ্টা করি

cat /dev/null > error.log

আমি বার্তাটি পাই

File already exists.

স্পষ্টতই ফাইলগুলির দুর্ঘটনাক্রমে ওভাররাইডিং রোধ করতে সার্ভারে কিছু ধরণের কনফিগারেশন করা হয়েছে। কেউ কি বলতে পারেন যে আমি কীভাবে একক কমান্ডে ফাইলটি "ছাঁটাই" করব?


2
একটি অ-সুরক্ষিত ফাইলের জন্য ট্রান্সকেট -0 0 ফাইল কাজ করে।
প্রমোদ

উত্তর:


158

আপনি noclobberবিকল্প সেট আছে। ত্রুটিটি এটি csh থেকে দেখে মনে হচ্ছে, তাই আপনি যা করবেন:

cat /dev/null >! file

যদি আমি ভুল হয়ে থাকি এবং আপনি ব্যাশ ব্যবহার করছেন তবে আপনার উচিত:

cat /dev/null >| file

ব্যাশে, আপনি এটিকেও ছোট করতে পারেন:

>| file

আপনি শেল সিএসএস হওয়ার বিষয়ে ঠিক বলেছেন। আপনি কি জানেন যে কিভাবে?
সুমিত পরীক

6
@ উইকিডকাকা - ত্রুটির বার্তার উপর ভিত্তি করে। আমার সিস্টেমে সিএসএস একই ধরণের File existsত্রুটি দেয় যখন ব্যাশ খুব আলাদা cannot overwrite existing fileত্রুটি দেয় ।
আর স্যামুয়েল ক্লাতচকো

6
@ জারমুন্ড - কারণ ব্যবহারকারীটির নোক্লোবার সেট রয়েছে, >fileকাজ করে না।
আর স্যামুয়েল ক্লাটচো

মধ্যে পার্থক্য কি > fileএবং >| file?
উইল

1
@ উইল - আপনার যদি noclobberবিকল্প সেট থাকে তবে বিদ্যমান ফাইলটিতে পুনর্নির্দেশের চেষ্টা ব্যর্থ হয়। Noclobber চালু রেখে নির্দিষ্ট পুনঃনির্দেশের জন্য ওভাররাইড করতে, আপনি ব্যবহার করতে পারেন>|
আর স্যামুয়েল ক্ল্যাচকো

71

আপনি ফাংশন ছাঁটাই ব্যবহার করতে পারেন

$truncate -s0 yourfile

অনুমতি অস্বীকার করা হলে, sudo ব্যবহার করুন

$sudo truncate -s0 yourfile

সহায়তা / ম্যানুয়াল: মানুষ কাটা

উবুন্টু লিনাক্সে পরীক্ষিত


1
সংক্ষিপ্ত আকার ফাইলটির পরিবর্তনের সময়কেও স্পর্শ করে - "> ফাইল" ফাইলটি অপরিবর্তিত থাকলে স্পর্শ করে না।
dsteinkopf

এটি ফাইলটি যে ডিস্কের স্থান ধারণ করে তা ছেড়ে দেয় না। প্রথমে এটি 0 বাইট দেখায়। আপনি যখন সেই ফাইলটিতে কিছু লিখবেন তখন ফাইলের আকার = কাটা + নতুন ডেটা আকারের আগে =
অনিকেত কুলকার্নি

48

ফাইলের আকার 0 এ সেট করতে এটি যথেষ্ট হবে:

> error.log

6
প্রকৃতপক্ষে, এটি নোক্লোবারের সাথে কাজ করে না (এটি নিজেই পরীক্ষিত হয়েছিল), সুতরাং এটি এই ক্ষেত্রে কোনও বৈধ সমাধান নয় ("-বাশ: ত্রুটি.লগ: বিদ্যমান ফাইলটি ওভাররাইট করতে পারে না"); উপরে প্রশংসা দেখুন ("@ জারমুন্ড - কারণ ব্যবহারকারীটির নোক্লোবার সেট রয়েছে,> ফাইলটি কাজ করে না।")। আমি কেবল ভাবছি কী ধরণের "বুদ্ধিমান লোকেরা" এর মতো স্পষ্টতই ভুল উত্তরগুলি

9

কৃতিত্ব আমার সিনিয়র সহকর্মীর জন্য এটি যায়:

:> filename

এটি লগ ফাইলগুলি ভাঙবে না, সুতরাং আপনি এটি সিসলোগেও ব্যবহার করতে পারেন, উদাহরণস্বরূপ।


8
দয়া করে ব্যাখ্যা করুন. এটা কিভাবে কাজ করে? এই স্বরলিপি কি করছে?
ব্যবহারকারী31986

2
@ ব্যবহারকারী31986 :একটি নো-ইফেক্ট কমান্ড (প্রায় একটি মন্তব্য), তারপরে >যথারীতি পুনর্নির্দেশ করা হয়, সুতরাং এটি কেবল কোনও আদেশ থেকে ফাইলের মধ্যে কিছুই না করে আউটপুট অভাব পুনঃনির্দেশ করে। যদি নোক্লোবার সক্ষম থাকে, আপনার :>| filename(বাশ) দরকার (এবং আমি সিএস অনুমান :>! filenameকরে csh অনুমান করি :)।
রোববার্ব

4

মিথ্যা | টি ফাইলট্রোঙ্কেট

পাশাপাশি কাজ করতে পারে


এটা ঠিক নির্বোধ। বা যদি এটি দরকারী হয় তবে অস্পষ্টভাবে ddআউটপুট পাওয়া কিছুই সহজ সরল পাঠ্যর চেয়ে ভাল হতে পারে false?
ট্রিপলি

2

যেহেতু সুডো পুনঃনির্দেশের সাথে কাজ করবে না >, তাই আমি teeএই উদ্দেশ্যে আদেশটি পছন্দ করি

echo "" | sudo tee fileName

ভাল, আসলে এটি যেমনটি করা হয়, যেমনটি আপনি সংযুক্ত প্রশ্নের উপরে এবং এখানে উভয় ক্ষেত্রেই বর্ণনা করেছেন। "sudo sh -c '> error.log'" ...

এটি টার্গেট ফাইলের অনুমতিগুলির উপর নির্ভর করে error.log, যদি এটি ইতিমধ্যে লিখিত হয় তবে সুডো করার দরকার নেই। আমি মনে করি যে অন্য সমস্যাটি আপনি কমান্ডটি স্ট্রিং আর্গুমেন্ট হিসাবে পাস করছেন sh, আমি জানি না কীভাবে এটি অভ্যন্তরীণভাবে পরিচালিত হয় তবে এটি জটিলতা / পুনর্নির্দেশনার আরও একটি স্তর যুক্ত হয়েছে
সখুনজাই

1
এটি আসলে ফাইলটি কেটে ফেলবে না, কারণ echo ""একটি নতুন লাইন যুক্ত করবে। আপনি ব্যবহার করতে পারেন echo -n ""সম্পর্কে newline দমন করতে
Seb

0

লিনাক্স সিস্টেমে যে কোনও ফাইল কেটে ফেলার জন্য যে কেউ এই কমান্ডটি ব্যবহার করতে পারেন

এটি অবশ্যই যে কোনও বিন্যাসে কাজ করবে:

truncate -s 0 file.txt


-4

আপনিও চেষ্টা করতে পারেন:

echo -n > /my/file


8
এক টন ভোট দিয়ে উত্তরটি দেখুন? এটি পড়ার চেষ্টা করুন, এবং অনুসন্ধান করুন noclobberএবং তারপরে নিজেকে জিজ্ঞাসা করুন আপনার উত্তরটি আদৌ কোনও অর্থবোধ করে কিনা।
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.