আপনি এটি করতে ব্যবহার করতে পারেন $LS_COLORS
। যদি আপনার সংস্করণ ls
সমর্থন করে তবে সেই পরিবর্তনশীলটি ব্যবহার করে রঙগুলি নির্দিষ্ট করা যায়, আপনি প্রতি ফাইল টাইপ আউটপুট নির্ধারণ করতে পারেন। এটি অন্তর্নির্মিত আচরণ এবং খুব কনফিগারযোগ্য। সুতরাং আমি ডেমো তৈরির জন্য কিছু ফাইল তৈরি করেছি:
for f in 9 8 7 6 5 4 3 2 1
do touch "${f}file" &&
ln -s ./"${f}file" ./"${f}filelink"
done
সুতরাং এখন আমি করব:
LS_COLORS='lc=:rc=:ec=:ln=\n\n\0HERE_THERE_BE_A_LINK>>\0:' \
ls -1 --color=always | cat
###OUTPUT###
1file
HERE_THERE_BE_A_LINK>>1filelink@
2file
HERE_THERE_BE_A_LINK>>2filelink@
3file
...
HERE_THERE_BE_A_LINK>>8filelink@
9file
...
এবং নালাগুলিও আছে ...
LS_COLORS='lc=:rc=:ec=:ln=\n\n\0HERE_THERE_BE_A_LINK>>\0:' \
ls -1 --color=always | sed -n l
1file$
$
$
\000HERE_THERE_BE_A_LINK>>\0001filelink@$
2file$
$
$
\000HERE_THERE_BE_A_LINK>>\0002filelink@$
3file$
...
আপনি সমস্ত বা যে কোনও ফাইল টাইপের জন্য নির্দিষ্ট করতে পারেন। কেবলমাত্র একক ফাইল ls
টাইপের জন্য এটি করা আপনাকে সম্ভবত এটি পেতে না পারে যদিও টার্মিনাল পলায়নের জন্য কিছু ডিফল্ট সংকলন মান অন্তর্ভুক্ত করা হয়েছে। আপনি এপিআইকে একটি একক ইন্টারফেস হিসাবে সম্বোধন করতে আরও অনেক ভাল করতে চাই। বর্তমান পরিবেশটি dircolors
কনফিগার করা ডিফল্টগুলি পার্সিং এবং নির্ধারনের একটি সহজ সামান্য উপায়'s
LS_COLORS='rs=:no=//:lc=:rc=:ec=//:'$(
set -- di fi ln mh pi so do bd cd or su sg ca tw ow st ex
for fc do printf %s "$fc=/$fc//:"
done) ls -l --color=always | cat
আমার হোম ডিরেক্টরিতে এটির ফলাফলটি এরকম দেখাচ্ছে:
total 884
///-rw-r--r-- 1 mikeserv mikeserv 793 Jul 9 11:23 /fi//1/
//drwxr-xr-x 1 mikeserv mikeserv 574 Jun 24 16:50 /di//Desktop//
//-rw-r--r-- 1 mikeserv mikeserv 166 Jul 4 23:02 /fi//Terminology.log/
//-rw-r--r-- 1 mikeserv mikeserv 0 Jul 6 11:24 /fi//new
file/
//lrwxrwxrwx 1 mikeserv mikeserv 10 Jul 11 04:18 /ln//new
file
link/ -> /fi//./new
file/
//-rwxr-xr-x 1 mikeserv mikeserv 190 Jun 22 11:26 /ex//script.sh/*
//-rw-r--r-- 1 mikeserv mikeserv 433568 Jun 22 17:10 /fi//shot-2014-06-22_17-10-16.jpg/
//-rw-r--r-- 1 mikeserv mikeserv 68 Jun 17 19:59 /fi//target.txt/
আপনি cat -A
এটির সাথে এটি পরিচালনা করতে পারেন $
এবং আপনি যে নতুন পার্থক্যের মুখোমুখি হবেন তা হ'ল আপনি নতুন লাইনগুলি দেখতে পাবেন - ls --color=always
এই কনফিগারেশনের মাধ্যমে কোনও ছাপিয়ে অক্ষর অক্ষর নেই - আপনি এখানে যা দেখেন কেবল তাই।
ls
এটির ডিফল্ট টার্মিনালটি এভাবে পালিয়ে যায়:
${lc}${type_code}${rc}FILENAME${lc}${rs}${rc}
... যেখানে $lc
(কোডের বাম) , $rc
(কোডের ডান) এবং $rs
(রিসেট) এর জন্য পূর্বনির্ধারিত মানগুলি :
\033 - ESCAPE
m - END ESCAPE
0 - reset
... যথাক্রমে। ${type_code}
বিভিন্ন fi
(নিয়মিত ফাইল - ডিফল্ট আনসেট) , di
(ডিরেক্টরি) , ln
(লিঙ্ক) , এবং আমার পরিচিত প্রতিটি ফাইল টাইপের জন্য দাঁড়ানোর জন্য ব্যবহৃত হয় । এছাড়াও আছে $no
(সাধারণ) যা ডিফল্ট আনসেট ছাড়াও হয় এবং যা //
প্রতিটি লাইনের শুরুতে এখানে প্রতিনিধিত্ব করে । আমার সাধারণ লিটল IFS=:
ব্লকটি প্রতিটি কনফিগারযোগ্যটির নিজস্ব নাম হিসাবে নিজের নাম সন্নিবেশ করে এবং একটি স্ল্যাশ বা দুটি যোগ করে কাজ করে - যদিও \0
NUL বাইটগুলিও তা করবে।
ডিফল্টরূপে এটির প্রথম আউটপুট পূর্বে অবিলম্বে ls
একটি প্রবেশ করানো হবে - তবে এটি এখানে সঠিকভাবে উপস্থাপন করা হয় না। এই ক্ষেত্রে আমি নির্দিষ্ট করে দেওয়া (শেষ কোড) যার জন্য বাধা হয়ে দাঁড়ায় সব ক্ষেত্রেই - যখন এটি উল্লেখ করা হয় আপনি একটি অতিরিক্ত পাবেন না মধ্যে এবং এটি শুধুমাত্র উপহার অবিলম্বে একটি ফাইল নিম্নলিখিত - আপনি অন্যথায় would হিসাবে এবং আউটপুট শুরুতে একবার - যেহেতু আপনি দেখতে পাচ্ছেন লাইনের একের মাথায় এক অতিরিক্ত স্ল্যাশ।$rs
$lc
$ec
$rs
$rs
$no
${type_code}
এখানে আমার নিজের একটি স্নিপেট $LS_COLORS
printf %s "$LS_COLORS"
rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:\
so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:\
or=40;31;01:su=37;41:sg=30;43:ca=30;41:\
tw=30;42:ow=34;42:st=37;44:ex=01;32:\
*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:...
এবং, সত্য বলতে গেলে, আমার ছোট্ট শেল হ্যাক সম্ভবত অত্যধিক জটিল - এই মানগুলি নির্ধারণের জন্য একটি বিস্তৃতভাবে উপলব্ধ ইন্টারফেস রয়েছে। dircolors -p
আপনার ক্লিমে চেষ্টা করুন এবং সে info dircolors
সম্পর্কে আরও তথ্যের জন্য।
আপনি সুনির্দিষ্ট স্ট্রিংগুলিতে ফাইলের নামগুলি মোড়ানো করতে পারেন। আপনি ইচ্ছা করলে এগুলি মন্তব্য করতে পারেন। আপনি কেবল ফাইল এক্সটেনশনের ভিত্তিতে অনুরূপ আচরণগুলি নির্দিষ্ট করতে পারেন। সত্যিই খুব বেশি কিছু নেই যা আপনি সেভাবে নির্দিষ্ট করতে পারবেন না।
এখন আমি কেবল এই সমস্ত কিছু তৈরি করছি না - দুর্ঘটনাক্রমে উত্স কোডে হোঁচট খাওয়ার পরে আমি এটি সম্পর্কে শিখেছি ।
এই নির্দিষ্ট কনফিগারেশন সহ ls
নির্গমন হবে:
$no
- প্রতিটি রেকর্ডের শুরুতে একবার রেকর্ড প্রতি
${type_code}
- একবার সঙ্গে সঙ্গে প্রতিটি ফাইলের নামের আগে ফাইলের প্রকারের সংক্ষিপ্তসার অন্তর্ভুক্ত করা এবং সর্বদা একই লাইনে এবং 7 টি সাদা জায়গার সীমানা ক্ষেত্রের পরে $no
বা তত্ক্ষণাত ->
প্রতীকী লিঙ্কের লক্ষ্য চিহ্নিতকরণ অনুসরণ করা ।
$ec
- একবারে তত্ক্ষণাত্ খুব প্রথম লাইনের পূর্বে এবং তারপরে কেবল একবারে একবারে প্রতিটি ফাইলের নাম অনুসরণ করা।
অন্যান্য সমস্ত মান খালি।
এরপরে যা শূন্য-বিস্মৃত তা হ'ল ls
এবং এবার আমি এটি ব্যবহার করব cat -A
, যদিও এটি না করে এটি শেষ উদাহরণের মতো দেখাবে:
LS_COLORS='rs=:no=\0//:lc=:rc=:ec=\0//:'$(
set -- di fi ln mh pi so do bd cd or su sg ca tw ow st ex
for fc do printf %s "$fc=/$fc//\0:"
done) ls -l --color=always | cat -A
total 884$
^@//^@//-rw-r--r-- 1 mikeserv mikeserv 793 Jul 9 11:23 /fi//^@1^@//$
^@//drwxr-xr-x 1 mikeserv mikeserv 574 Jun 24 16:50 /di//^@Desktop^@///$
^@//-rw-r--r-- 1 mikeserv mikeserv 166 Jul 4 23:02 /fi//^@Terminology.log^@//$
^@//-rw-r--r-- 1 mikeserv mikeserv 0 Jul 6 11:24 /fi//^@new$
file^@//$
^@//lrwxrwxrwx 1 mikeserv mikeserv 10 Jul 11 04:18 /ln//^@new$
file$
link^@// -> /fi//^@./new$
file^@//$
^@//-rwxr-xr-x 1 mikeserv mikeserv 190 Jun 22 11:26 /ex//^@script.sh^@//*$
^@//-rw-r--r-- 1 mikeserv mikeserv 433568 Jun 22 17:10 /fi//^@shot-2014-06-22_17-10-16.jpg^@//$
^@//-rw-r--r-- 1 mikeserv mikeserv 68 Jun 17 19:59 /fi//^@target.txt^@//$
এবং সুতরাং এটির মতো কোনও অনিং তালিকা থেকে সমস্ত প্রতীকী লিঙ্কগুলি নির্ভরযোগ্যভাবে মুছে ফেলার জন্য -l
, আপনি একটি সাধারণ পরিবর্তন করতে পারেন:
LS_COLORS='rs=:no=//:lc=:rc=:ec=/ :'$(
set -- di fi mh pi so do bd cd or su sg ca tw ow st ex
for fc do printf %s "$fc=$fc/:"
done)ln=///: ls -l --color=always | sed ':ln
\|///|{N;\|\n//|!bln};s|.*//||'
চালানোর পরে আমার ফলাফলগুলি দেখতে দেখতে ...
total 884
-rw-r--r-- 1 mikeserv mikeserv 793 Jul 9 11:23 fi/1/
drwxr-xr-x 1 mikeserv mikeserv 574 Jun 24 16:50 di/Desktop/ /
-rw-r--r-- 1 mikeserv mikeserv 166 Jul 4 23:02 fi/Terminology.log/
-rw-r--r-- 1 mikeserv mikeserv 0 Jul 6 11:24 fi/new
file/
-rwxr-xr-x 1 mikeserv mikeserv 190 Jun 22 11:26 ex/script.sh/ *
-rw-r--r-- 1 mikeserv mikeserv 433568 Jun 22 17:10 fi/shot-2014-06-22_17-10-16.jpg/
-rw-r--r-- 1 mikeserv mikeserv 68 Jun 17 19:59 fi/target.txt/
আমি উপরের মতো কিছু আদেশ ব্যবহার করে:
LSCOLORS=...$(...)fc1=///:fc2=///: ls ... | sed ...
... ( সাবসেলের পরে ফাইল টাইপগুলি কোথায় fc1
এবং fc2
তালিকাবদ্ধ রয়েছে set --
)ls
ফাইলের নামগুলির যে কোনও অক্ষর নির্বিশেষে আউটপুট থেকে আপনি যে ফাইল টাইপগুলি চান তা নির্ভরযোগ্যভাবে মুছে ফেলার জন্য পরিবেশন করা উচিত ।