প্রশ্ন Filename দৈর্ঘ্য সীমা লিনাক্স?


লিনাক্সে কোন ফাইলের নাম বা পথের সীমা আছে?


110
2018-05-18 17:27


উত্স




উত্তর:


দেখুন ফাইল সিস্টেম তুলনা সম্পর্কে উইকিপিডিয়া পাতা, বিশেষ করে কলামে সর্বোচ্চ ফাইলের নাম দৈর্ঘ্য

এখানে কিছু আছে ফাইলের নাম দৈর্ঘ্য সীমা জনপ্রিয় ফাইল সিস্টেমের মধ্যে:

BTRFS   255 bytes
exFAT   255 UTF-16 characters
ext2    255 bytes
ext3    255 bytes
ext3cow 255 bytes
ext4    255 bytes
FAT32   8.3 (255 UCS-2 code units with VFAT LFNs)
NTFS    255 characters
XFS     255 bytes

117
2018-05-18 17:29



উত্তর হল: সীমা সাধারণত 255 অক্ষর (যারা এই লিঙ্কটি ক্লিক করতে খুব অলস) - rahmanisback
আপনার উত্তর প্রদত্ত লিঙ্কে প্রাসঙ্গিক তথ্য অন্তত একটি সারসংক্ষেপ থাকা উচিত। শুধু একটি লিঙ্ক নয়। - zrajm
@rahmanisback যা ফাইলের সীমাগুলির জন্য সঠিক, তবে পথ সীমাগুলি সাধারণত ওএস দ্বারা সংজ্ঞায়িত করা হয়, FS নয় (কিছু অদ্ভুত FSes যেমন iso বা ntfs ছাড়া), এবং লিনাক্সে 4K হয় - nonchip
প্রকৃতপক্ষে এটা উভয় সম্পর্কে ছিল: ডি - nonchip
শুধু ইঙ্গিত দিচ্ছে: বাইট! = চর, বিশেষত যদি আপনি UTF-8 ব্যবহার করেন। দেখ এখানে। - Kris


আমি পড়েছি এখানে যে পথ দৈর্ঘ্য সীমা সিস্টেম হেডারে হয়। ফাইল নাম দৈর্ঘ্য সীমা আছে। আমার সিস্টেমে এটি ফাইল:

  /usr/src/linux-headers-2.6.38-10/include/linux/limits.h

এবং সি-ল্যাং সংজ্ঞায়িত করে:

  #define NAME_MAX         255    /* # chars in a file name */
  #define PATH_MAX        4096    /* # chars in a path name including nul */

এবং আরো কিছু.


81
2017-08-31 08:58



দুঃখিত, কিন্তু আমি এখানে নতুন একটি মন্তব্য করতে পারবেন না, ভোট সংরক্ষণ করুন। পূর্ববর্তী উত্তর (এসএফপি দ্বারা) আপ করা উচিত, এটি সম্পূর্ণরূপে প্রশ্নের উত্তর হিসাবে, অন্যদের আংশিকভাবে বন্ধ করা হয়। আবার, নিয়ম ছাড়াও যেতে দুঃখিত, কিন্তু সবচেয়ে ভাল উত্তর নীচে যখন আমি শান্ত হতে পারছি না। - David Balažic
শুধু ইঙ্গিত দিচ্ছে: বাইট! = চর, বিশেষত যদি আপনি UTF-8 ব্যবহার করেন। দেখ এখানে। - Kris
@ ডেভিড বালাজিক: যদিও সত্য, প্যাথ_এইচএক্সটি লিনাক্সের অধীনে শুধুমাত্র একটি নির্দেশিকা, তবে অন্তর্নিহিত ফাইল সিস্টেমগুলির অধিকাংশই সীমাবদ্ধতা নেই। এটি যে আকারের চেয়ে বড় পাথ উল্লেখ করা কঠিন করে তোলে। আমি সাধারণত আকার হিসাবে PATH_MAX এর "অংশ" ব্যবহার করুন। - Rahly


আমি অন্যান্য উত্তর পড়ুন, তাদের উত্থাপন করুন।

লিনাক্সে কোন ফাইলের নাম বা পথের সীমা আছে?

হ্যাঁ, ফাইলের নাম এবং পাথর নাম দৈর্ঘ্য দ্বারা সীমাবদ্ধ:

গতিশীলভাবে এই বৈশিষ্ট্য পেতে:

  • ফাংশন ব্যবহার করুন pathconf এবং fpathconf হিসাবে প্রস্তাবিত মাইকেল অ্যারন সাফিয়ান
  • একটি ফাইলের নাম (বা পাথনাম) তৈরি করুন যতক্ষণ ব্যাখ্যা করা হয়েছে ততদিন dogbane
  • কমান্ড ব্যবহার করুন getconf হিসাবে প্রস্তাবিত টিম যে লিনাক্সে পাওয়া যায়:

    $ getconf NAME_MAX /mnt/sda2/
    255
    $ getconf PATH_MAX /mnt/sda3/
    4096
    

20
2018-05-24 07:35





এবং সময় সংরক্ষণের জন্য (এবং স্মৃতিতে এটি নোঙ্গর):

ext2, ext3, ext4, zfs: কোন পাথর নাম সীমাবদ্ধ নয়; 255 বাইট ফাইল নাম সীমা।


17
2018-05-18 18:15



সর্বাধিক প্রোগ্রাম পরম পথ সীমাবদ্ধ PATH_MAX = 4096, যদিও। আপনার প্রোগ্রাম আপেক্ষিক পাথ ব্যবহার করতে সক্ষম হয় এবং আপনি আপনার কাজ ডিরেক্টরি প্রথম পরিবর্তন করতে পারেন, যে প্রায় কাজ করা যেতে পারে। - Mikko Rantalainen


যারা ফাইল সিস্টেম নাম দৈর্ঘ্য। "লিনাক্স" নিজেই কিছু আছে। উদাহরণস্বরূপ, বিট / stdio_lim.h থেকে:

# define FILENAME_MAX 4096

6
2018-03-22 18:31



কারন এক্সেলএক্স ফাইল সিস্টেমে কার্নেলের সংজ্ঞায়িত চেয়ে কম ফাইল নামমাত্র সীমা আছে, ততক্ষণ আপনি যে সীমাটি আঘাত করবেন না, যদি না এটি প্যাসনামগুলির সাথে যুক্ত থাকে, তাই না? - Ivan
এটা আমার মত দেখাচ্ছে কি। পাথের জন্য PATH_MAX রয়েছে, যা 4096, তাই এটি এক্সটেনশানগুলিতে "সীমাহীন" আকারের আকারের আগে আঘাত করা হবে ... আমি নিশ্চিত নই যে OS কীভাবে তার নিজস্ব অভ্যন্তরীণ সীমাবদ্ধতা এবং FS এর সমাধানগুলি সমাধান করে না যে গভীর আমার অস্ত্র। যদিও আকর্ষণীয় প্রশ্ন। - jj33
4096 অক্ষর একটি হেলুভাভা নাম। আমি নিশ্চিত যে এটি একটি পুনর্নির্মাণের মাধ্যমে উত্থাপিত হতে পারে, কিন্তু সততা, / কেন আপনি দীর্ঘ যে পথের নাম প্রয়োজন হবে? - Avery Payne
আমি এটা আপনি প্রয়োজন হবে না নিশ্চিত না। আমি দূষিত বা অবহেলিত প্রোগ্রামগুলির বিরুদ্ধে সুরক্ষা হিসাবে এটি আরও দেখতে পারি (আমি সহজেই এমন একটি স্ক্রিপ্ট দেখতে পারি যা দুর্বল আচরণ করে এবং একইরকম ডির তৈরি করতে শুরু করে। প্রকৃতপক্ষে, আমি সেই স্ক্রিপ্টটি তৈরি করেছি, কিন্তু এটি একটি ওয়েব সাইটকে পুনঃনির্দেশিত করে, ডায়ের তৈরি করে না ...)। - jj33
@AveryPayne ফাইলগুলিতে ট্যাগ যুক্ত করতে যাতে তারা সহজ ব্যবহার করে অনুসন্ধান করা যায় locate। - Hubert Kario


এখানে কোনভাবেই না পোর্টেবল ভাবে লিনাক্সে সর্বাধিক দৈর্ঘ্যের পথ নির্ধারণ করতে। আমার সিস্টেমে:

$ getconf PATH_MAX / 
4096
$ getconf _POSIX_PATH_MAX / 
4096

কিন্তু আমি সহজেই 4096 অক্ষরের চেয়ে অনেক বেশি পথ তৈরি করতে পারি। পরিবর্তে দেখুন PATH_MAX একটি নিম্ন আবদ্ধ হিসাবে। আপনি এই দীর্ঘ পথ তৈরি করতে সক্ষম হবেন নিশ্চিত, কিন্তু আপনি অনেক বেশী তৈরি করতে সক্ষম হতে পারে।


3
2018-01-16 02:17



সর্বাধিক দৈর্ঘ্য অনুষঙ্গীভাবে অনুসন্ধানের একটি সহজ পোর্টেবল উপায় একটি প্রোগ্রাম লিখতে হয় যা দীর্ঘতর আর দীর্ঘতর ডিরেক্টরি চেইন তৈরি করে এবং এটি কোথায় ব্যর্থ হয় তা দেখতে। আপনি সঠিকভাবে কেন এটি ব্যর্থ হবেন তা আপনি জানেন না (যদিও আপনি একটি মানবিক পঠনযোগ্য ত্রুটির বার্তা হিসাবে আশা করবেন) তবে আপনি নিরাপদে যেতে পারেন কতদূর জানতে পারবেন। পৃথক ডিরেক্টরি দৈর্ঘ্য, আপেক্ষিক পাথর নাম দৈর্ঘ্য, এবং পরম পাথর দৈর্ঘ্য উভয় জন্য পরীক্ষা করতে মনে রাখবেন। - tripleee
এছাড়াও, যেমন পাইথন os.pathconf() মডিউল কিছু উত্তর থাকবে; পাইথন পোর্টটি যদি কোনও ভাল হয় তবে তাদের যুক্তিযুক্ত হওয়া উচিত। - tripleee
আপনি কিছু ফাইল সিস্টেম প্রযোজ্য না করতে পারেন না কোন সীমা। এটি খুব শীঘ্রই মেমরি ত্রুটির বাইরে ব্যর্থ হবে যা কোনও প্রোগ্রাম থেকে পুনরুদ্ধার করা কঠিন হবে। - Björn Lindqvist
এটি সঠিক উত্তর, ব্যতীত @ BjörnLindqvist মন্তব্যের কারণে। PATH_MAX শুধুমাত্র একটি নির্দেশিকা এবং 99% ফাইল সম্ভবত সেই সীমার মধ্যে থাকবে। - Rahly


আপনি সবসময় ব্যবহার করা উচিত pathconf অথবা এই মত কিছু ফাংশন নির্দিষ্ট আইটেম সম্পর্কে রানটাইম মান পেতে, এই হিসাবে পৃষ্ঠা বলেছিল যে:

তবে উল্লেখ্য, তালিকাবদ্ধ সীমাগুলির মধ্যে অনেকেই অনিয়মিত নয় এবং রানটাইম এ, সীমার মানটি এই শিরোনামের প্রদত্ত থেকে ভিন্ন হতে পারে, নিম্নলিখিত কারণে:

  • সীমা পাথনাম-নির্ভরশীল।

  • সীমা কম্পাইল এবং রানটাইম মেশিনের মধ্যে পৃথক।

এই কারণে, রানপেইমে একটি সীমা প্রকৃত মান নির্ধারণ করতে একটি অ্যাপ্লিকেশন fpathconf (), pathconf (), এবং sysconf () ফাংশন ব্যবহার করতে পারে।


1
2017-12-05 01:49





এটা সিস্টেম নির্দিষ্ট করা হয় limits.h হেডার ফাইল।

এখানে এই ফাইলগুলির মধ্যে একটি:

cat /usr/include/linux/limits.h

...
#define NAME_MAX         255    /* # chars in a file name */
#define PATH_MAX        4096    /* # chars in a path name including nul */
...

এখানে এই ফাইলের কপি অবস্থিত এবং মানগুলি সংজ্ঞায়িত করে এখানে রয়েছে:

find /usr | grep limits.h | xargs -I {} grep -H 'NAME_MAX' {}

আউটপুট:

...
/usr/include/linux/limits.h:#define NAME_MAX         255        /* # chars in a file name */
...

0