ls এর রঙ: আমার কিছু ফন্ট কালো এবং অন্যগুলি ls আউটপুটে সবুজ কেন


10

আমি কিছু ফন্ট ফাইলগুলি এডাব্লুএসে (অ্যামাজন লিনাক্স চলমান) আপলোড করেছিলাম এবং সেগুলি .ebextensions এ /usr/share/fontsএকটি cpকমান্ড ব্যবহার করে ডিরেক্টরিতে স্থানান্তরিত করেছি ।

আমি যখন আমার ম্যাক থেকে এসএসএইচ করি এবং ব্যবহার করি ls -a, তখন আমি দেখি কিছু ফাইল আলাদাভাবে রঙিন হয় - ফন্ট ফাইলগুলির একটি সেট কালো এবং অন্যগুলি সবুজ। আমি কৌতূহল বোধ করি এটি কী কারণে হয়েছিল এবং এটি যদি আমার কোডের জন্য কোনও সমস্যা তৈরি করে

ইলাস্টিক বিয়ানস্টালক এডাব্লুএস লিনাক্সে চলমান ফন্ট ডিরেক্টরি

ls -la স্ক্রিনশট

আসকউবুন্টুর অন্য উত্তর থেকে আমি এই কীগুলি কীভাবে ব্যাখ্যা করতে পারি তার এই কীটি পেয়েছি। আমি বুঝতে পারি না কেন একটি .ttf এক্সিকিউটেবল হবে বা .ttfs এর একটি সেট কেন স্বীকৃত হবে এবং অন্যটি নয়।

নীল: ডিরেক্টরি

সবুজ: সম্পাদনযোগ্য বা স্বীকৃত ডেটা ফাইল

স্কাই ব্লু: লিঙ্কযুক্ত ফাইল

কালো ব্যাকগ্রাউন্ড সহ হলুদ: ডিভাইস

গোলাপী: গ্রাফিক চিত্র ফাইল

লাল: সংরক্ষণাগার ফাইল

এই ফাইলগুলি সমস্ত আপলোড করার আগে বিভিন্ন ফন্ট সাইট থেকে একটি ম্যাক ডাউনলোড করা হয়েছিল।


5
নির্দিষ্ট রঙগুলির (নীল, গোলাপী, ইত্যাদি) কোনও অর্থ নেই। আপনি যা চান তা রঙিন করতে পারেন ize linux-sxs.org/housekeeping/lscolors.html আপনার নির্দিষ্ট সিস্টেমের রঙগুলি পরীক্ষা করতে, প্রতিধ্বনি করুন $ LS_COLORS
beardedlinuxgeek

স্পষ্ট করে বলার জন্য, আমার অভিপ্রায়টি সত্যিকার অর্থে রং সম্পর্কে নয়, তবে এটি বোঝা যায় যে আমি আমার স্ক্রিপ্ট / কোড নিয়ে কোনও সমস্যার মুখোমুখি হব।
প্রণব

উত্তর:


13

ls -lকোনও ফাইল নির্বাহযোগ্য কিনা তা আপনাকে অবশ্যই বলতে হবে tell আমি মনে করি না যে এখানে কোনও দুর্দান্ত রহস্য আছে। আপনি বিভিন্ন উত্স থেকে ফাইলগুলি ডাউনলোড করেছেন যার প্রতিটিরই কোনও কারণে বা অন্য কোনও কারণে আলাদা আলাদা অনুমতি বিট থাকতে পারে। * আপনি যদি রঙ এবং অন্যদের সাথে কিছু ব্যবহার না করে দেখতে পছন্দ করেন না chmod -x *.ttf... ফন্ট ফাইলগুলিতে এক্সিকিউটেবল বিট সেটের প্রয়োজন হবে না।

* যেমন মাত্তিও ইটালিয়ায় অত্যন্ত আপত্তিজনক মন্তব্য, যা সংরক্ষণ করা উচিত, বলেছেন: সম্ভবত এগুলি এফএটি বা এনটিএফএস ভলিউম থেকে অনুলিপি করা হয়েছিল, যা এক্সিকিউটেবল বিট সংরক্ষণ করে না, তাই ডিফল্টরূপে মাউন্ট করা হয় যাতে সমস্ত ফাইলের এক্সিকিউটেবল বিট সেট থাকে


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

2
@ প্রণব না, ফন্টের জন্য কোনও পার্থক্য থাকা উচিত নয়।
জ্ঞানদিফ

1
@ প্রণব গ্ল্যাড আমি সাহায্য করতে পারে। আমি যখন কীবোর্ড সহ একটি উপযুক্ত কম্পিউটারে থাকি, তখন আমি আরও কিছু তথ্যমূলক উত্তর দেওয়ার চেষ্টা করব, যাতে আরও বিস্তৃত প্রসঙ্গ উপলব্ধ থাকে।
জ্ঞুডিফ

1
প্রকৃতপক্ষে, আমি বরং এমন কাউকে বিভ্রান্ত করব না যা অন্যথায় জানে না তাই এখানে আমার মূল মন্তব্যটি ভুল বিট বিয়োগ করা হবে: বিট সেট করার বিভিন্ন কারণ রয়েছে .. লাইনের পাশে যে কোনও জায়গায় এক্সিকিউটেবল বিট চালু হওয়ার পরে বিভিন্ন কারণ রয়েছে কাছাকাছি ফাইল "অনুসরণ" করতে পারে। (এটি অনুমান করে যে প্রতিটি ব্যক্তি এটির অনুলিপি করে original মূল বিটগুলি সংরক্ষণ করে)) এটি কোনওরকম ক্ষেত্রে নিখুঁতভাবে নিরীহ।
বি লেয়ার

12
সম্ভবত এগুলি এফএটি বা এনটিএফএস ভলিউম থেকে অনুলিপি করা হয়েছিল, যা এক্সিকিউটেবল বিট সংরক্ষণ করে না, তাই ডিফল্টরূপে মাউন্ট করা হয় যাতে সমস্ত ফাইলের এক্সিকিউটেবল বিট সেট থাকে
মাত্তেও ইটালিয়া

6

দেখে মনে হচ্ছে আপনি যে lsকমান্ডটি চালাচ্ছেন তা হ'ল একটি নামls --color

মানুষ ls

- রঙ [= WHEN] আউটপুটটিকে রঙিন করুন; WHEN 'সর্বদা' (বাদ পড়লে ডিফল্ট), 'অটো' বা 'কখনই' হতে পারে না; নীচে আরও তথ্য

আপনি মূলটি চালিয়ে এটি পরীক্ষা করতে পারেন ls:

  • উদ্ধৃতি ব্যবহার:

    "এলএস" -এ

  • সম্পূর্ণ পাথ ব্যবহার (যেমন যদি lsঅবস্থানে থাকে /bin/ls) এবং দেখুন এটি রং বা না দেখায়:

    / বিন / এলএস -এ

দ্রষ্টব্য: দৌড়াতে ls -laফাইলগুলির বিশদ প্রদর্শন করা হবে এবং আপনি প্রতিটি ফাইলের সম্পূর্ণ বিবরণ দেখতে সক্ষম হবেন যা আপনাকে প্রত্যাশিত আউটপুট দিয়ে পরীক্ষা করতে সহায়তা করবেls --color


কোর কমান্ডে যাওয়ার কত উপায় আছে তা আকর্ষণীয়। আশেপাশের-উক্তিগুলির পদ্ধতি সম্পর্কে আমি অবগত ছিলাম না। কমপক্ষে ব্যাশ সহ, কেউ ব্যাকস্ল্যাশ সহ কমান্ডের আগে \ls -aবা 'কমান্ড' বিল্টিন ব্যবহার করতে পারে command ls -a। যদি আপনি দেখতে চান যে কোনও কমান্ড এটি চালানোর পরিবর্তে কীভাবে সমাধান করে তবে এটি রয়েছে type -a ls
বি লেয়ার

@BlairM। উদ্ধৃতি এবং ব্যাকস্ল্যাশ পদ্ধতিগুলি কেবলমাত্র ওরফে প্রসারকে বাধা দেয়। আপনার শেল ফাংশন বা বিল্টিন কল থাকলে তাদের কোনও প্রভাব ফেলবে না ls
শ্যাডটলকার

@ এসএসডেকট্রোল রাইট আমি অন্যথায় পরামর্শ দেওয়ার অর্থ বোঝাতে চাইনি ... আমরা শ্রদ্ধার সাথে উপস্বের বিষয়ে কথা বলছিলাম ls। তবে এটি ভাল তথ্য।
বি লেয়ার

4

রঙটি ইঙ্গিত করছে যে ফাইলটি "নির্বাহযোগ্য" * হিসাবে চিহ্নিত হয়েছে *

এক্সিকিউটেবল অনুমতি বিট (ব্যবহারকারীর জন্য একটি, একটি গ্রুপের জন্য, অন্য একজনের জন্য) এর অর্থ এই যে ফাইলটির নাম এক্সিকিউটিভ সিস্টেমের একটিতে প্রেরণ করা হলে কার্নেলটি এগিয়ে গিয়ে চেষ্টা করে এটি বের করে দেবে।

কনভেনশনটি হ'ল যে ফাইলগুলি কেবল প্রকৃতরূপে নির্গত হওয়ার উদ্দেশ্যে করা হয় তাদের এক্সিকিউটেবল বিট সেট থাকে। তবে ফাইলগুলি চারপাশে সরানো / অনুলিপি করার সময়, বিশেষত একাধিক প্ল্যাটফর্ম পরিবেশে অজানাভাবে এক্সিকিউটেবল বিটগুলি অর্জন বা হারাতে সহজ।

একটি ফাইল সিস্টেমে সঞ্চিত ফাইলগুলি যা ইউনিক্স অনুমতিগুলি সমর্থন করে না (ফ্যাট, এনটিএফএস ইত্যাদি) সম্ভবত এক্সিকিউটেবল হিসাবে সিস্টেমে উপস্থিত হতে পারে। অনুমতিগুলি সংরক্ষণ করে এমন একটি সরঞ্জাম ব্যবহার করে এই ফাইলগুলি একটি ইউনিক্স ফাইল সিস্টেমে অনুলিপি করা বা অনুলিপি করা হলে সেইগুলি কার্যকর করা বিটগুলি সংরক্ষণ করা হবে।

অন্যদিকে ফাইলগুলি সরানোর জন্য সরঞ্জামগুলি ব্যবহার করা হয় যা অনুমতিগুলি সংরক্ষণ করতে পারে না বা অনুমতি বাতিল করে দেওয়ার জন্য বিকল্পের সাথে ব্যবহার করা হয় যার ফলে অনুলিপিটি মূলটি সত্ত্বেও নির্বাহযোগ্য হিসাবে চিহ্নিত হয় না।

সুতরাং বিভিন্ন সরঞ্জাম ব্যবহার করে বিভিন্ন প্ল্যাটফর্মের আশেপাশে সরানোর পরে এক্সিকিউটেবল অনুমতি বিটগুলি মোটামুটি স্বেচ্ছাচারিত অবস্থায় শেষ হতে পারে।

* আমি 100% নিশ্চিত নই যে ls কীভাবে কেস পরিচালনা করে যেখানে কিছু কিন্তু সমস্ত কার্যকরযোগ্য বিট সেট করা হয় না।


2

পূর্ববর্তী উত্তরগুলি যেমন বলেছে, রঙটি হ'ল ফাইলগুলি নির্বাহযোগ্য বলে বিবেচিত হয় কিনা তা নির্দেশ করে।

লিনাক্স এবং অন্যান্য ইউনিক্সগুলিতে "এক্সিকিউট" অনুমতি (= বিট) ফাইলগুলির একটির অর্থ এবং ডিরেক্টরিগুলির জন্য অন্য অর্থ।

ডিরেক্টরিগুলির জন্য, যদি আপনার এটির সম্পাদনের অনুমতি থাকে তবে আপনি এর সামগ্রীগুলি দেখতে পারেন। যদি আপনি না করেন তবে আপনি ডিরেক্টরিতে সিডি করতে পারবেন না, বা আপনি এতে ডিরেক্টরি তালিকাভুক্ত করতে পারবেন না, এমনকি আপনার কাছে ডিরেক্টরিতে পড়া এবং লেখার অ্যাক্সেস উভয়ই রয়েছে।

নিয়মিত ফাইলগুলির জন্য (ডিভাইস ফাইল এবং অন্যান্য বিশেষ ইউনিক্স ফাইল টাইপের বিপরীতে), এক্সিকিউট বিটটির অর্থ হ'ল আপনি যদি কমান্ড লাইনে ফাইলের নামটি ব্যবহার করেন তবে ও / এস (বা আরও স্পষ্টভাবে: শেল) "চালানো" বা চালানোর চেষ্টা করবে কমান্ড হিসাবে ফাইল। বিপরীতে, আপনার যদি ফাইলটিতে অনুমতি কার্যকর না হয়, আপনি কমান্ড লাইন থেকে এটি চালাতে পারবেন না।

সুতরাং, যদি আপনি উদাহরণস্বরূপ, / বিন / বিড়াল ফাইলের সমস্ত ব্যবহারকারীদের (যা ইউনিক্স আদেশ) আপনার কাছ থেকে এক্স অনুমতি সরিয়ে ফেলেন (যা "ইউনিক্স" কমান্ড ব্যবহার করার চেষ্টা করে এমন কোনও প্রোগ্রাম ব্যর্থ হবে)।

তারপরে ওএস কমান্ডগুলি যেমন "বিড়াল" এবং "গ্রেপ", যা / * / বিন / ডিরেক্টরিতে - / বিন, / ইউএসআর / বিন, / এসবিন, / ইউএসআর / এসবিন ইত্যাদিতে কার্যকরভাবে ফাইলগুলি কার্যকর করে have

এবং তারপরে এখানে অসংগঠিত, ব্যাখ্যামূলক স্ক্রিপ্টগুলি থাকতে পারে যা কিছু প্রোগ্রামিং ভাষায় লিখিত হয় যেমন পাইথন বা শেল স্ক্রিপ্টস (মূলত, কমান্ডলাইন থেকে সার্ভারে স্ল্যাশ করার সময় আপনি যে কমান্ডটি লিখে থাকেন)।

এখন, আপনি যখন স্ক্রিপ্ট ফাইলে বিট নির্বাহ করবেন (উদাহরণস্বরূপ, ফাইল ফুবার), এবং এটি আপনার শেল দ্বারা চালিত করার চেষ্টা করুন: "./foobar", শেলটি ফাইলটি বিশ্লেষণ করার চেষ্টা করে এবং স্ক্রিপ্টটি পাস করার জন্য সঠিক প্রোগ্রামটি সন্ধান করে প্রতি.

এই শেলটি ফাইলটির প্রথম লাইনটি পড়ার চেষ্টা করে এবং "শেবাং" সনাক্ত করে যা কোন প্রোগ্রামটি চালাচ্ছে বলে চিহ্নিত করেছে।

সুতরাং, যদি আপনার ফুবারটি প্রথম লাইনের মতো একটি পাঠ্য ফাইল থাকে:

#!/usr/bin/python

তারপরে শেল কমান্ডটি কার্যকর করার চেষ্টা করবে: /usr/bin/python foobarমূলত পাইথন ইন্টারপ্রেটারকে অনুরোধ করা এবং পাইথন স্ক্রিপ্ট হিসাবে আপনার ফুবার ফাইলটির নাম এটিতে প্রেরণ করা।

শেলটি যদি আপনার ফাইলে এই প্রথম লাইনটি না খুঁজে পায়, তবে এটি তখন ফুবারকে নিজেই চালানোর চেষ্টা করবে যেন এতে শেল কমান্ড রয়েছে।

যদি এক্সিকিউটেবল বিটযুক্ত ফাইলটিতে বৈধ শেল কমান্ড না থাকে তবে শেলটি কেবল অভিযোগ করবে।

সুতরাং এটিই হবে, যদি আপনার এক্সিকিউট বিট সেট সহ টিটিএফ ফাইল থাকে এবং কমান্ড লাইন থেকে চালানোর চেষ্টা করে:

$./FreeMonoOblique.ttf
-bash: ./FreeMonoOblique.ttf: cannot execute binary file: Exec format error
$

সুতরাং, ফন্টগুলির জন্য, এটি সম্ভবত খুব সুন্দর, যদি এক্সিকিউট বিট সেট না করা থাকে তবে সত্যিকার অর্থে কোনও পরিবর্তন হয় না।

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

$python foobar

পরিবর্তে

$./foobar

সিস্টেম কমান্ডের উদাহরণ সহ, যেমন "বিড়াল"। আপনি যদি "বিড়াল" থেকে এক্সিকিউট বিটটি সরিয়ে ফেলেন, আপনি এখনও এটি কার্যকর করার জন্য শেলের একটি নতুন উদাহরণে দিতে পারেন:

$sh -c 'cat myfile'

এমনকি আপনি বিড়াল থেকে নির্বাহী বিট অপসারণ করেছেন এমনকি, কাজ করবে

$cat myfile

না।


2
আমার সিস্টেমে, অন্তত, মত একটি বাইনারি এক্সিকিউটেবল ফাইলের উপর এক্সিকিউটেবল বিট unsetting catবা echoনেই না আপনাকে মাধ্যমে এটি চালানোর sh -c 'cat myfile', কিংবা সঙ্গে system("cat", "myfile")Ruby- র মত ভাষাতে। পাইথন অ-এক্সিকিউটেবল .pyফাইলগুলি চালানোর কারণ হ'ল এটি পাঠ্যের একটি স্ট্রিং হিসাবে এগুলি পড়ে এবং তারপরে একটি দোভাষী ব্যবহার করে সেই পাঠ্যটিকে কোড হিসাবে আচরণ করে।
ইথান কামিনস্কি

পছন্দ করুন আমি এটি স্পষ্টভাবে মনে করি এটি আমার পক্ষে কাজ করে তবে এটি বিশদটি পরীক্ষা করতে হবে।
জ্ঞানদিফ

1
@ গুনিডিফ বাইনারি এক্সিকিউটেবলের জন্য, execveসিস্টেম কল কার্যকর করার অনুমতি দেওয়ার জন্য জোর দেয়। গ্লিবসি-ভিত্তিক সিস্টেমে আপনি শেবাং লাইন ( /lib64/ld-linux-x86-64.so.2 /bin/cat) এর মতো প্রায় একই প্রভাব পেতে প্রোগ্রাম হিসাবে গতিশীল লিংকটি ডেকে আনতে পারেন এবং কমান্ড লাইনের ফাইলটি এক্সিকিউটেবল না হলেও এটি আমার পক্ষে কাজ করে তবে তা sh -c catকরবে না তোমার জন্য.
zwol

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