質問

オクテット形式で権限を表示するエイリアスを作成しました:

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 各ステップでchar(インクリメントされたインデックス、1文字長の部分文字列)のいずれかを返します
  • ~/[rwx] それがaの場合、charを1に変換します r またはa w またはa x
  • 後ろの操作は、10進数の結果を取得する操作を行うだけです
  • print("%0o ", k) 前に計算された10進数値の8進数の結果を出力するだけです
ライセンス: CC-BY-SA帰属
所属していません apple.stackexchange
scroll top