سؤال

لقد قمت بإنشاء اسم مستعار لعرض الأذونات بتنسيق ثماني:

alias lso="ls -l | awk '
{
  k=0;
  for (i=0;i<=8;i++)
    k+=((substr($1,i+2,1)~/[rwx]/)*2^(8-i));
  if (k)
    printf("%0o ",k);
  print
}'

لقد قمت أيضًا بإضافة هذا الرمز لعرض ls بتنسيق ملون:

export CLICOLOR=1
export LSCOLORS=GxFxCxDxBxegedabagaced

ما أتساءل عنه هو كيفية جعل الاسم المستعار الخاص بي يظهر بتنسيق ملون أيضًا؟أيضًا، إذا كان بإمكان أي شخص أن يشرح بناء جملة الاسم المستعار (بعد الأنبوب)؟لقد قمت بنسخ النص وأحاول أن أتعلم كيفية تجميع الأوامر المشابهة له.

هل كانت مفيدة؟

المحلول

الافتراضي ls المقدمة مع OSX تأتي من BSD ولن تسمح لك بفعل ما تريد.

استخدام CoreUtils ls (مثبت مع macport وهو متوفر مع gls يأمر)

سوف تحصل على الألوان الخاصة بك باستخدام --color=always:

ls -l --color=always | awk '
{
  k=0;
  for (i=0;i<=8;i++)
    k+=((substr($1,i+2,1)~/[rwx]/)*2^(8-i));
  if (k)
    printf("%0o ",k);
  print
}'

حول الجزء awk :

  • ls إخراج أذونات الملف إلى 9 أحرف.لهذا السبب هناك حلقة.
  • ال substr يُرجع في كل خطوة حرفًا واحدًا (مؤشر متزايد، سلسلة فرعية بطول حرف واحد)
  • ~/[rwx] يحول الحرف إلى 1 إذا كان a r أو أ w أو أ x
  • العملية التي تتم خلف العملية فقط تحصل على النتيجة العشرية
  • print("%0o ", k) فقط يطبع النتيجة الثماني للقيمة العشرية المحسوبة من قبل
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى apple.stackexchange
scroll top