টাচ ফাইল এবং> ফাইলের মধ্যে পার্থক্য কী?


17

আমি লিনাক্সে এক ধরণের নবাগত এবং আমি আশ্চর্য হয়েছি কি না >এবং touchএকই প্রভাব রয়েছে কিনা । মানে, নিম্নলিখিত দুটি আদেশের একই প্রভাব আছে ?:

$ > file.txt

$ touch file.txt

যদি তা হয় তবে এটি জেনে রাখা ভাল যে আমি নতুন ফাইলগুলি তৈরি করতে কেবল `> file.txt 'টাইপ করতে পারি।


5
যদি file.txtইতিমধ্যে উপস্থিত থাকে এবং খালি না থাকে তবে তারা অবশ্যই তা করে না।
fkraiem

1
@fkraiem, আপনি কি দয়া করে একটি বিশদ উত্তর দিতে পারেন?
lmiguelvargasf

4
তিনি বলছেন যদি আপনার এমন touchকোনও ফাইল থাকে যাতে ডেটা থাকে তবে কিছুই হবে না তবে আপনি যদি >ফাইলটি মুছে ফেলেন।
WinEunuuchs2Unix

আমি বুঝতে পেরেছি. @ উইনইউনুউচস

আপনি কি প্রশ্নের উত্তর দিতে চান, আমাকে প্রশ্নের উত্তর দিতে চান, @fkraiem এর উত্তর দিয়েছেন, বা মুছবেন?
WinEunuuchs2 ইউনিক্স

উত্তর:


24

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

rick@dell:~$ > EmptyFile

rick@dell:~$ touch EmptyFile2

rick@dell:~$ ls Empty*
EmptyFile  EmptyFile2

rick@dell:~$ ls -l Empty*
-rw-rw-r-- 1 rick rick 0 Sep 29 20:27 EmptyFile
-rw-rw-r-- 1 rick rick 0 Sep 29 20:27 EmptyFile2

rick@dell:~$ echo Hello > EmptyFile

rick@dell:~$ ls -l Empty*
-rw-rw-r-- 1 rick rick 6 Sep 29 20:28 EmptyFile
-rw-rw-r-- 1 rick rick 0 Sep 29 20:27 EmptyFile2

rick@dell:~$ > EmptyFile

rick@dell:~$ ls -l Empty*
-rw-rw-r-- 1 rick rick 0 Sep 29 20:28 EmptyFile
-rw-rw-r-- 1 rick rick 0 Sep 29 20:27 EmptyFile2

rick@dell:~$ echo Hello > EmptyFile

rick@dell:~$ touch EmptyFile

rick@dell:~$ ls -l Empty*
-rw-rw-r-- 1 rick rick 6 Sep 29 20:32 EmptyFile
-rw-rw-r-- 1 rick rick 0 Sep 29 20:27 EmptyFile2

মন্তব্যে উল্লিখিত হিসাবে, touchএকটি বাহ্যিক কমান্ড এবং কেবল ফাইলগুলিতে পরিচালনা করে। >এটি একটি শেল অন্তর্নির্মিত বৈশিষ্ট্য যা বিভিন্ন বিভিন্ন উদ্দেশ্যে পরিবেশন করে। সাধারণত আপনি এটি পছন্দ মত দেখতে পাবেন cat source.fil > target.fil

একটি ফাইল খালি করার জন্য একটি দীর্ঘ ফর্মটি হ'ল:

cat /dev/null > emptyme.fil

> emptme.filকোনও কিছুই ফাইলকে পুনর্নির্দেশের একটি কমপ্যাক্ট ফর্ম্যাটে ব্যবহার করে একই জিনিসটি সম্পাদন করে।


ব্যবহারের কেস: > file.txtলগ ফাইলগুলি সাফ করার জন্য ভাল।
রিনজুইন্ড

8
এটি আসলে পুনরায় তৈরি করা হয়নি। বিদ্যমান ফাইলটি কেটে ফেলা হয়েছে, যা পুরানো ফাইলটিকে লিঙ্কযুক্ত করা এবং একটি নতুন ফাইল তৈরি করা থেকে আলাদা। সবচেয়ে বড় পর্যবেক্ষণযোগ্য পার্থক্যটি হ'ল যদি কোনও প্রক্রিয়াটিতে এখনও পুরানো ফাইলটি খোলা বা ম্যাপ করা থাকে তবে এটি এখনও উপস্থিত থাকবে। তবে কেটে ফেলা অন্যান্য প্রক্রিয়াগুলি খোলে এমন ফাইলটিকে প্রভাবিত করবে।
পিটার কর্ডস

1
নিশ্চিত হতে পারছি না আমাদের সম্পর্কে "সবচেয়ে বড় পর্যবেক্ষণযোগ্য" - তা মান্য করা হবে কিনা তা hardlinks ভাঙা হয় সহজ (যদি আপনি ln foo bar, এবং তারপর মুছে দিন এবং পুনঃ foo, barএখনো তার পূর্বে বিষয়বস্তু আছে)।
চার্লস ডাফি

1
ওহ হ্যাঁ, এটি আরও সহজে পর্যবেক্ষণযোগ্য পার্থক্য। আমার এটি ভাবনা উচিত ছিল: পি
পিটার কর্ডেস

@ চার্লস-ডাফি শিওর, যখন একটি ফাইয়ের 2 টি লিঙ্ক রয়েছে যা আমার অনুমানযোগ্য হবে, পিটার কর্ডেস যদিও যা বলছিল তার সাথে এর কোনও যোগসূত্র নেই। আপনি যখন বর্তমানে ফাইল ব্যবহার করছেন / খোলা ফাইলহ্যান্ডেলটি মুছে ফেলা / লিঙ্কমুক্ত করেন তখন তা মোছা হয় না। উদাহরণস্বরূপ, আপনি বলুন rm /var/log/nginx/access.logযে যখন এনজিনেক্সের সেই ফাইলটি খোলা ছিল তার 0 টি লিঙ্ক থাকবে তবে ইনোডটি এখনও বিদ্যমান থাকবে। lsof -c nginx | grep access.logতারপরে পিড, ls -l /proc/<pid>/fd/ | grep access.logএবং অবশেষে বিড়াল / proc / <pid> / fd / <পূর্ববর্তী কমান্ডের ফাইল নাম> ` এটি পুরানো হলেও মন্তব্য করছি। আশা করি এটি বোধগম্য হয়েছে
স্ক্রোলার

14

উভয়ের মধ্যে যথেষ্ট পার্থক্য রয়েছে। Touchফাইলকে স্ট্যাম্প করার জন্য ব্যবহৃত একটি কমান্ড। >প্রতীক একটি প্রমিত আউটপুট redirector হয়।

দুজনের ব্যবহার ব্যাখ্যা করা হয়েছে

টাচের ব্যবহার

যদি ফাইলটি না থাকে তবে এটি ফাইল তৈরি করবে।

টাচ সাধারণত পতাকা তৈরি করতে ব্যবহৃত হয়। উদাহরণস্বরূপ আপনি যদি আপনার সিস্টেমে দুইবারের মধ্যে সমস্ত ফাইল সন্ধান করতে চান তবে আপনি এই আদেশগুলির ক্রমটি ব্যবহার করতে পারেন:

$ touch -t 201609292200 starttime 
$ touch -t 201609292300 endtime

এটি নিম্নলিখিত ফাইলগুলি তৈরি করবে (বা টাইম স্ট্যাম্পের উপস্থিতি থাকলে তা পরিবর্তন করবে):

-rw-rw-r-- 1 ljames ljames 0 Sep 29 23:00 endtime
-rw-rw-r-- 1 ljames ljames 0 Sep 29 22:00 starttime

এখন আপনি সেই ঘন্টাটিতে সংশোধিত সমস্ত ফাইল প্রদর্শন বা প্রক্রিয়া করার জন্য অনুসন্ধান ব্যবহার করতে পারেন (এই দুই ফাইলের টাইম স্ট্যাম্পগুলির মধ্যে সময়, অর্থাৎ ২৯ শে সেপ্টেম্বর, ২০১ 2016 সালের ১১ নভেম্বর এবং ১১ টার মধ্যে)।

$ find ~/ -newer starttime ! -newer endtime -printf "%M %Tm/%Td %TH:%TM %TM %p\n"

এটি উপরের ফাইন্ড কমান্ডের আংশিক আউটপুট:

-rw-rw-r-- 09/29 22:08 08 /home/users/l/j/ljames/.thunderbird/lj7p62iq.default/gcontactsync/google_feed_backups/apollothethird@gmail.com_groups.xml
-rw-rw-r-- 09/29 22:08 08 /home/users/l/j/ljames/.thunderbird/lj7p62iq.default/gcontactsync/google_feed_backups/apollothethird@gmail.com.xml
-rw-rw-r-- 09/29 22:08 08 /home/users/l/j/ljames/.thunderbird/lj7p62iq.default/gcontactsync/address_book_backups/abook.mab.bak
-rw-rw-r-- 09/29 23:00 00 /home/users/l/j/ljames/endtime
drwx------ 09/29 22:44 44 /home/users/l/j/ljames/.config/google-chrome/Default/Extensions/Temp
drwx------ 09/29 22:44 44 /home/users/l/j/ljames/.config/google-chrome/Default/Extensions/fahmaaghhglfmonjliepjlchgpgfmobi
drwx------ 09/29 22:44 44 /home/users/l/j/ljames/.config/google-chrome/Default/Extensions/fahmaaghhglfmonjliepjlchgpgfmobi/1.337.0_0

আউটপুট পুনঃনির্দেশের ব্যবহার

পুনঃনির্দেশক চিহ্নটি নির্দিষ্ট ফাইলে স্ট্যান্ডার্ড আউটপুট পুনর্নির্দেশ করবে। আপনার ক্লোবার / নোক্লোবার সেটিংসের উপর নির্ভর করে যদি ব্যর্থ হতে পারে। নোক্লোবার কেবল তখনই ফাইলটি তৈরি করে যদি এটি বিদ্যমান না থাকে।

পুনঃনির্দেশের আউটপুটটির বেশ কয়েকটি সংস্করণ রয়েছে যার মধ্যে রয়েছে:

> - স্ট্যান্ডার্ড আউটপুট পুনর্নির্দেশ। বিদ্যমান ফাইলটি তৈরি বা ওভাররাইট করুন।
>> - সংযোজন পুনর্নির্দেশ। বিদ্যমান ফাইলটি তৈরি বা সংযোজন করুন।
> & - স্ট্যান্ডার্ড আউটপুট এবং স্ট্যান্ডার্ড ত্রুটি উভয়ই পুনর্নির্দেশ করুন।
>> এবং - পুনঃনির্দেশ / স্ট্যান্ডার্ড আউটপুট এবং স্ট্যান্ডার্ড ত্রুটি উভয়ই যুক্ত করুন

আমরা findউপরের আমাদের কমান্ডটি একটি নির্দিষ্ট সময়ের মধ্যে তৈরি সমস্ত ফাইলের সামগ্রীগুলি কোনও ফাইলে পুনর্নির্দেশ করতে ব্যবহার করতে পারি যা আমরা পরে লগ ইন করতে এবং অধ্যয়ন করতে পারি:

$ find ~/ -newer starttime ! -newer endtime -printf "%M %Tm/%Td %TH:%TM %TM %p\n" > ~/files.log

অনেক লোক উল্লেখ করেছেন যে, যদি file.txtউপস্থিত থাকে এবং খালি না থাকে তবে > file.txtএর সামগ্রীগুলি পরিষ্কার করে touch file.txtদেবে তবে তা করবে না। তবে কেউ উল্লেখ করেনি যে এটির >> file.txtজন্য একটি ভাল বিকল্প touch file.txt- এটি উপস্থিত না থাকলে ফাইলটি তৈরি করবে (ধরে নিবেন যে এটি করার অনুমতি রয়েছে) তবে এটি কোনও বিদ্যমান ফাইল কেটে ফেলবে না। দেখুন ">" এবং ">>" এর মধ্যে পার্থক্য কী?
জি-ম্যান বলছেন 'পুনরায় ইনস্টল করুন মনিকা'

এটি বিভাগে ব্যাখ্যা করা হয়েছে Usage of Output redirection। নোটিশটি হল >>= Redirect append>
এলডি জেমস

হ্যাঁ, এবং এটি পুরোপুরি স্পষ্ট - যারা ইতিমধ্যে এটি জানেন to নিজেকে ওপি এর জুতা রাখুন - আপনি পাঠ্যের একটি প্রাচীর পোস্ট করেছেন যা খুব দীর্ঘ পড়তে হবে ; তিনি আপনার উত্তরটি বুঝতে পারছেন না যে >> file.txtএটি একটি কার্যক্ষম বিকল্প touch file.txt। (আসলে আপনি শুধুমাত্র ব্যক্তি উল্লিখিত করছি >> এ সব কেন আমি আপনার উত্তর অধীনে আমার মন্তব্য পোস্ট, বরং প্রশ্ন অধীনে চেয়ে।)
জি-ম্যান বলেছেন 'পুনর্বহাল মনিকা'

1
@ জি-ম্যান কিছু লোক পুনর্নির্দেশ প্রতীকটিকে স্পর্শের বিকল্প হিসাবে বিভ্রান্ত করে। তবে এটি বিকল্প নয়। আমার উত্তরটির বিশদটি এই ভুলটি পরিষ্কার করা। দু'টি ব্যবহারের উদাহরণগুলি এটি পরিষ্কার করতে সহায়তা করা। দয়া করে লক্ষ্য করুন প্রথম দম্পতি লাইনটি আপনার বর্তমান মন্তব্যের প্রাথমিক নির্দিষ্টকরণের উত্তর দেয় answers এটি বলে যে উভয়ের মধ্যে একটি উল্লেখযোগ্য পার্থক্য রয়েছে। ওপি পার্থক্য আগ্রহী। সুতরাং উত্তরের অন্যান্য অংশগুলি হ'ল দুটিতে ওপির আগ্রহের বিষয়ে সাড়া দেওয়া। বিভিন্ন প্রভাব রয়েছে এবং পার্থক্যের একটি কারণ রয়েছে।
এলডি জেমস

9

>হ'ল শেল আউটপুট পুনর্নির্দেশ অপারেটর, পূর্ববর্তী কমান্ডের (এস) এর STDOUT পুনর্নির্দেশের জন্য উল্লিখিত ফাইল বর্ণনাকারীতে ব্যবহৃত হয় >। যদি ফাইলটি উপস্থিত থাকে তবে এটির বিষয়বস্তু ছিন্ন হবে, পতাকা হিসাবে open(2)বিডযুক্ত ফাইল হিসাবে O_TRUNCএবং যদি ফাইলটি বিদ্যমান না থাকে তবে এটি তৈরি করা হবে।

গুরুত্বপূর্ণ বিষয়টি লক্ষ করুন যে, পূর্ববর্তী কমান্ডটি চালুর আগে এই পুনঃনির্দেশ অপারেটরটি শেল দ্বারা পরিচালিত হবে, সুতরাং এটি কোনও কমান্ডের উপর নির্ভর করে না এবং নিজেই শেল দ্বারা পরিচালিত হবে।

মনে রাখবেন যে কয়েকটি শেল (উদাঃ zsh) খালি পুনঃনির্দেশের সাথে আলাদাভাবে আচরণ করবে:

 >file.txt

:( true) কোনও অপ-কমান্ড যোগ করা একটি সাধারণ কাজের লক্ষণ :

 : >file.txt

Ditionতিহ্যগতভাবে, এর মূল উদ্দেশ্য touchএকটি ফাইলের টাইমস্ট্যাম্প পরিবর্তন করা, কোনও ফাইল তৈরি করা নয়।

touchএকটি ফাইল তৈরি করে, কেবল তখনই যখন আর্গুমেন্টে উল্লিখিত ফাইলগুলি গুলি উপস্থিত থাকে না অন্যথায় এটি ফাইলের পরিবর্তনের সময়টিকে বর্তমান টাইমস্ট্যাম্পে পরিবর্তন করে। আপনি অ্যাক্সেসের সময় এবং ইনড তৈরির সময় ব্যবহার করেও পরিবর্তন করতে পারেন touch


zshখালি পুনঃনির্দেশকে সমর্থন করে - এটি catকোনও ফাইলে কোনও যুক্তি ছাড়াই পুনর্নির্দেশের জন্য একইভাবে কাজ করে । মূলত আপনি যা টাইপ করেন তা ইওএফ অক্ষর বা বিঘ্নিত না হওয়া পর্যন্ত ফাইলটিতে লেখা থাকবে। ন্যায়বিচারের সাথে এই আয়নাগুলির zshআচরণ <file, যা কেবল ফাইল বিষয়বস্তু প্রিন্ট করে cat। এগুলি কনফিগারযোগ্য হতে পারে, আমি <fileপেজারে ফাইলটি খুলতে দেখেছি ।
বিট্রি

@ 8 বিট্রি বলতে যা বোঝাতে চাইছি তা হ'ল আপনাকে ইনপুট করা দরকার EOF( cat >file.txtযেমনটি আপনি বলেছেন যেমন করছেন ), যেখানে bashকেবল করা >file.txtযথেষ্ট হবে।
হিমাইল

যথেষ্ট পরিমাণে, আমি এমন একটি সম্পাদনার পরামর্শ দিয়েছি যা আমি মনে করি ধারণাটি আরও স্পষ্টভাবে পায়।
বিট্রি

@ 8 বিট্রি অনুমোদিত হয়েছে।
হিমাইল

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