উইন্ডোজে এটি সম্ভব হওয়ায় আমি বিন্দুটি ব্যবহার না করে লিনাক্সে ফাইলগুলি আড়াল করতে চাই।
এই কাজ করতে একটি উপায় আছে কি?
উইন্ডোজে এটি সম্ভব হওয়ায় আমি বিন্দুটি ব্যবহার না করে লিনাক্সে ফাইলগুলি আড়াল করতে চাই।
এই কাজ করতে একটি উপায় আছে কি?
উত্তর:
তুমি পার না. ফাইল সিস্টেমগুলি যেভাবে লুকানো সেটিংস পরিচালনা করে তার একটি মৌলিক পার্থক্য রয়েছে। উইন্ডোজে, ফাইল সিস্টেমটি মেটাডেটাতে ফাইলের জন্য কয়েকটি বৈশিষ্ট্য সংরক্ষণ করে, "লুকানো" এবং "সিস্টেম" (যা উভয়ই লুকানো ফাইলের ধরণের) বৈশিষ্ট্যগুলি সহ। সাধারণ * নিক্স ফাইল সিস্টেমে এ জাতীয় কোনও বৈশিষ্ট্য সংরক্ষণ করা হয় না। পরিবর্তে তথ্যটি অন্য কোথাও যেমন ফাইলের নামে রাখা উচিত। কনভেনশনটি এভাবেই ফাইলগুলি শুরু হয়। (এবং আপনার সিস্টেমের উপর নির্ভর করে, সম্ভবত _ এর মতো আরও কিছু) ডিফল্টরূপে বেশিরভাগ সরঞ্জাম দ্বারা প্রদর্শিত হবে না।
এটি নিখুঁত সুবিধার জন্য, এ। একটি ফাইলের নাম শুরু করার অর্থ "ব্যবহারকারী সম্ভবত এটি সব সময় দেখতে চান না" but আপনি জানেন কিনা তা নিশ্চিত করার জন্য, চলমান উদাহরণস্বরূপ ls -a
সমস্ত ফাইল প্রদর্শিত হবে।
আপনি যদি লিনাক্সে কোনও তালিকাতে ফাইল তালগোল পাকতে না চান তবে আপনার বিন্দু দিয়ে শুরু করার জন্য এটির নাম পরিবর্তন করা উচিত (বোনাস: এটি ওএস এক্সের জন্যও কাজ করবে, যদি আমরা কোনও পোর্টেবল ডিভাইস সম্পর্কে কথা বলি)। আপনি যদি ব্যবহারকারীদের কোনও ফাইল সন্ধান করতে না চান তবে আপনি এটি ভুল করছেন wrong অনুমতিগুলির জন্য এটিই।
ডিরেক্টরিগুলির সাথে সম্পর্কিত হিসাবে ইউনিক্স অনুমতিগুলি প্রায়শই মানুষকে বিভ্রান্ত করে এবং সম্ভবত এটি আরও ভালভাবে বুঝতে আপনাকে সহায়তা করবে। "পঠন" এবং "চালানো" অনুমতিগুলি ( r
এবং x
) অর্থ ফাইলগুলির চেয়ে ডিরেক্টরিগুলির জন্য আলাদা কিছু। ডিরেক্টরিগুলির জন্য, এক্সিকিউট x
করার অনুমতি নির্ধারণ করে যে আপনি ডিরেক্টরিতে ইনোডগুলি অ্যাক্সেস করবেন কিনা। r
আপনি ডিরেক্টরিটির তালিকা অ্যাক্সেস করতে পারবেন কিনা তা পঠনের অনুমতি নির্দেশ করে। কার্যকরীভাবে, x
ব্যবহারকারীর একটি ডিরেক্টরিতে জিনিসগুলি করার r
অনুমতি দেয় , যখন অনুমতি তাদের এতে কী রয়েছে তা দেখার অনুমতি দেয়। এগুলি পৃথক, এবং পার্থক্য বিভ্রান্তিকর হতে পারে। আসুন একটি উদাহরণ তাকান:
jeanluc@login64: ~ $ mkdir example
jeanluc@login64: ~ $ echo "you can read it" > example/file
jeanluc@login64: ~ $ ls example/
file
jeanluc@login64: ~ $ cat example/file
you can read it
jeanluc@login64: ~ $ chmod -x example/
jeanluc@login64: ~ $ ls example/
ls: cannot access example/file: Permission denied
file
jeanluc@login64: ~ $ cat example/file
cat: example/file: Permission denied
jeanluc@login64: ~ $ cd example/
-bash: cd: example/: Permission denied
jeanluc@login64: ~ $ chmod +x example/
jeanluc@login64: ~ $ chmod -r example/
jeanluc@login64: ~ $ ls example/
ls: cannot open directory example/: Permission denied
jeanluc@login64: ~ $ cat example/file
you can read it
jeanluc@login64: ~ $ cd example/
jeanluc@login64: ~/example $ ls
ls: cannot open directory .: Permission denied
jeanluc@login64: ~/example $ cd ..
সুতরাং, লক্ষ করুন যে নির্বাহ না করে আমি এখনও ফাইলগুলি তালিকাভুক্ত করতে পারি (যদিও ls একটি ত্রুটি দেখায় কারণ এটি ফাইলের বৈশিষ্ট্যগুলি পেতে পারে না), তবে আমি ডিরেক্টরিতে পরিবর্তন করতে বা এতে ফাইলগুলি পড়তে পারি না। পঠন ব্যতীত আমি ফাইলগুলি তালিকাবদ্ধ করতে পারি না, তবে আমি এখনও ডিরেক্টরিতে পরিবর্তন করতে পারি এবং যদি কোনও ফাইলের নাম জানি তবে আমি এটিতে অ্যাক্সেস করতে পারি।
তবে মনে রাখবেন যে পড়ার অনুমতি অপসারণ করা আপনাকে কেবল অস্পষ্টতার দ্বারা সুরক্ষা দেয়। যদি ব্যবহারকারী ফাইলটির নামটি অনুমান করে তবে তারা এর সামগ্রীগুলি পড়তে সক্ষম হবে।
এটি আপনার প্রশ্নের সাথে সত্যিই প্রাসঙ্গিক নাও হতে পারে, আমি কেবল আপনি ডিরেক্টরি অনুমতিগুলি বুঝতে পেরেছিলেন তা নিশ্চিত করতে চেয়েছিলাম।
.hidden
আড়াল করার জন্য ফাইলগুলির নাম সহ ডিরেক্টরিতে একটি ফাইল তৈরি করুন (প্রতিটি লাইনের একটি নাম)।
তারপরে আপনার সাথে নিম্নলিখিতগুলি যুক্ত করুন ~/.bashrc
:
ls () {
if [ -f .hidden ]; then
declare GLOBIGNORE="$GLOBIGNORE:.*:$(tr '\n' ':' < .hidden)"
ls "$@"
fi
}
এখন আপনার ls
কমান্ড এই ফাইলগুলির তালিকা করে না।
আমি আমার __pycache__
এবং __init__.py
ফাইলগুলি আড়াল করতে এই কৌশলটি ব্যবহার করি ।
সম্পাদনা করুন: অন্য মন্তব্য অনুসারে এটি তাদের কমপক্ষে একটিতেও লুকিয়ে রাখে (নটিলাস), তবে সম্ভবত বেশ কয়েকটি জিইআইআই ফাইল ব্রাউজারগুলিও।
ls -al
?
আপনি বিন্দু যুক্ত না করে লিনাক্সে ফাইলগুলি আসলে লুকিয়ে রাখতে পারেন। এটি তাদের নটিলাসে লুকিয়ে রাখে; ls
কমান্ড লাইন থেকে একটি এখনও ফাইলগুলি তালিকাবদ্ধ করবে।
.hidden
যে ফোল্ডারে আপনি ফাইলগুলি আড়াল করতে চান সেখানে একটি পাঠ্য ফাইল তৈরি করুন ।ls
তালিকা।
আপনি কি কেবল নিজের গ্রাফিকাল ইউজার ইন্টারফেসের ফাইল ম্যানেজার এবং / অথবা ডেস্কটপ পরিবেশ থেকে ফাইলগুলি আড়াল করার চেষ্টা করছেন? যদি তা হয় তবে ডট দিয়ে ফাইলের নামটি উপস্থাপনের বাইরেও বিকল্প থাকতে পারে।
আমি বিশ্বাস করি শুধুমাত্র অতিরিক্ত কোনো লিনাক্স ফাইল ম্যানেজার দ্বারা লুকানো ফাইল ব্যাকআপ ফাইল, অর্থাত সেই একটি টিল্ড শেষ হওয়া হয় ~
বা .bak
বা যাই হোক না কেন, তারা ঈমান আনে ব্যাকআপ এক্সটেনশান। যাই হোক না কেন, আপনি সম্ভবত ভাগ্যে আছেন যদি আপনি যা করতে চান তা ফাইল ম্যানেজারের ব্যাকআপ ফাইলগুলি গোপন করে।
আপনার ফাইলগুলিকে আড়াল করার জন্য একটি ব্যাকআপ এক্সটেনশান দিবেন না বা এগুলি ঘটনাক্রমে মুছে ফেলা হতে পারে !!
অন্যদিকে, আপনি কমান্ড SetFile -a V [file]
বা সম্পাদনা ব্যবহার করে ম্যাক ওএস এক্সের ফাইন্ডার থেকে ফাইলগুলি আড়াল করতে পারেন /.hidden
তবে স্পষ্টতই এটি কমান্ড লাইনের ls
প্রোগ্রাম থেকে ফাইলটি আড়াল করবে না ।
chflags hidden filename
।
আপনার যদি কিছু প্রোগ্রামিং দক্ষতা থাকে এবং ব্যবহারকারী প্রয়োজনের জন্য কেবলমাত্র আপনার প্রয়োজনীয় ফাইল ফাইলগুলি হিপিং করা হয় তবে ভিজ্যুয়াল স্পেসটি বিশৃঙ্খলা বন্ধ করতে আপনি এটি হ্যাক করতে পারেন!
আমি কেবল কমান্ড লাইন সরঞ্জামগুলি বিবেচনা করব, কারণ এগুলি বেশ অভিন্ন এবং কেবলমাত্র আমার জন্য ব্যবহৃত একমাত্র সরঞ্জাম।
এই তথ্য সংরক্ষণ করার বিভিন্ন উপায়:
আপনি নির্বাচিত ফাইলগুলিতে "লুকানো" বর্ধিত বৈশিষ্ট্য সংরক্ষণ করতে পারেন। দেখman attr
attr -s hidden -V true your_file
বা উপরে উল্লিখিত হিসাবে আপনি ফাইলের মধ্যে .hidden
ফাইলের নাম তালিকা সংরক্ষণ করতে পারেন
গুরুত্বপূর্ণ: আপনার যুক্তিটি প্রয়োগ করতে হবে এমন বাক্সটির বাইরে এটি কার্যকর হবে না, পরিষ্কার সিস্টেমগুলি কেবল .hidden
ফাইল এবং hidden
বর্ধিত বৈশিষ্ট্যগুলিকে উপেক্ষা করবে !
এছাড়াও বহুবিধ সম্ভাব্য বাস্তবায়ন রয়েছে:
আপনার যদি মাত্র কয়েকটি ফাইল থাকে তবে আপনার .bashrc
ফাইলটিতে লিখুন
alias ls='ls -I filename_1 -I filename_2'
man ls
আরও তথ্যের জন্য.
function ls
এমন একটি লিখুন যাতে এটি লুকানো ফাইলগুলি সনাক্ত করতে এবং সমস্ত -I
এন্ট্রিগুলির তালিকা একত্রিত করার পিছনে সমস্ত যুক্তি পরিচালনা করে এবং তারপরে /bin/ls
সঠিকভাবে উপেক্ষা করা পতাকা সহ সম্পাদন
করে। খুব শ্রমসাধ্য কাজ, কারণ আপনাকে সমস্ত ls
প্যারামিটারগুলি সঠিকভাবে পরিচালনা করতে হবে ।
কোর্টিলের উত্স পান
git clone git://git.sv.gnu.org/coreutils
অথবা
git clone git://git.suckless.org/sbase
আপনার লুকানো ফাইলগুলি প্রয়োগের জন্য যেভাবে প্রয়োজন তা প্যাচ করুন। এবং এটি আপনার মধ্যে রাখুনPATH
আমি অতএব 5 মিনিটের মধ্যে এটিকে হ্যাক করেছি স্তন্যহীন উত্স ব্যবহার করে এবং ভিন্নতা এইরকম:
diff --git a/ls.c b/ls.c
index cdfce4d..8197409 100644
--- a/ls.c
+++ b/ls.c
@@ -214,6 +214,17 @@ lsdir(const char *path)
first = 0;
while ((d = readdir(dp))) {
+///////////////////////////////////////////////
+// Dirty hack to implement hidden files
+// FIXME: Make proper(!) subroutine
+ char attr_command[1024] = "attr -Lqg hidden "; // Oh, dear. That's bad
+ int attr_code;
+ strcat(attr_command, d->d_name);
+ strcat(attr_command, " >/dev/null 2>&1");
+ attr_code = system(attr_command);
+ if (!attr_code)
+ continue;
+///////////////////////////////////////////////
if (d->d_name[0] == '.' && !aflag && !Aflag)
continue;
else if (Aflag)
ls.c
মধ্যে মিথ্যা src
, না রুট ডিরেক্টরি, এবং কোন ফাংশন lsdir
মধ্যে ls.c
।
এটি আমার কাছে পাওয়া সেরা সমাধান, আপনার প্রোফাইলে যুক্ত করুন :
alias ls="/bin/ls --color=auto --ignore='*.egg-info' --ignore='__pycache__'"
আপনার যদি আরও নিদর্শনগুলির প্রয়োজন হয় তবে আরও বেশি --ignore
পতাকা যুক্ত করুন।
আজকাল আপনি FUSE লিখতে পারেন যা প্রদত্ত কনফিগার অনুযায়ী ফাইলগুলি আড়াল করে।
এই নিবন্ধটি আমাকে বিশ্বাস করে যে আপনাকে getdir
ফাংশনটি টুইঙ্ক করতে হবে:
getdir: int (*getdir) (const char *, fuse_dirh_t, fuse_dirfil_t);
এটি একটি ডিরেক্টরি বিষয়বস্তু পড়তে। এই অপারেশনopendir()
,readdir()
, ...,closedir()
এক কলে অনুক্রম। প্রতিটি ডিরেক্টরি প্রবেশের জন্য,filldir()
ফাংশনটি কল করা উচিত।
আমি প্রোগ্রামার নই তবে আমি কল্পনা করেছি যে কেউ getdir
(যেমন) .hidden
ফাইলের তালিকাভুক্ত সমস্ত ফাইল বাদ দিতে পারে । আপনি যদি এটি সঠিকভাবে প্রয়োগ করেন তবে প্রতিটি সরঞ্জাম (জিইউআই বা না) প্রভাবিত হবে।
আপনি 'আড়াল' করতে দল, বা অন্য জন্য 'X perms দূরে নিয়ে একটি ডিরেক্টরির বিষয়বস্তু: chmod go-x directoryname
। আপনি যদি সঠিক পথটি জানতেন তবে কোনও ফাইল অ্যাক্সেস করতে পারলেও আপনি আর ফাইল তালিকাভুক্ত করতে পারবেন না। এটি আপনি যা চান তা শোনাচ্ছে না।
ডটফাইলে জিনিসটি একটি সুবিধাযুক্ত বিষয় মনে রাখবেন, সুরক্ষার প্রয়োজনে ফাইলটি সত্যই আড়াল করা নয়, ফাইল তালিকার সময় ফাইলগুলির বিশৃঙ্খলা হ্রাস করা। এটিতে ls
এবং অন্যান্য সরঞ্জামগুলিতে বেকড ।