ls
を作成することは可能ですか? 実行可能スクリプトを実際にコンパイルされたバイナリと区別しますか?
ほとんどの場合、権限は同じです(+x
)、およびls -F
を使用 アスタリスクのサフィックス(*
)両方の場合、区別するのは難しいです。 ls
の色を設定するスクリプトがあります 、ただし、ファイルが実行可能かどうかに依存しているため、同じように表示されます:
BG='01;32' # green
EX="ex=$BG" # file with execute permission
これらのファイルの多くには拡張子がないため、拡張子に依存したくありません。
これが欲しいので、奇妙なエラーメッセージを見て、「どのコードがそれを引き起こしたのか」と考えると、cat
が安全かどうかがわかります。 ファイル。
標準的な解決策がない場合は、file
の出力を解析するのはどうでしょうか。 、1つの一般的な機能で、いくつかの特徴的なマークを挿入しますか?または、ls
には遅すぎますか ?
承認された回答:
バイナリとスクリプトを区別するには、ファイルの内容を確認する必要があります。 ls
これは行われず、ファイル名とメタデータ(タイプ、権限など)のみが調べられます。
これがfile
の大まかなパーサーです スクリプトとバイナリの色が異なります。 ls -d
のように機能します;メタデータを追加するには、より直接的なアプローチ(PerlやPythonなど)を必要とするパッチアップジョブが必要になります。 lsx somedir/*
を使用します ディレクトリの内容を一覧表示します。ファイル名には改行やコロンが含まれていないと見なされます(:
は変更できます) -F
を使用した他の文字列の区切り文字 file
のオプション 。
lsx(){file -iN-"[email protected]" | IFS=読み取り-r行; name =$ {line %%:*};を実行します。 type =$ {line#*:} color =0 case $ type in application / x-executable *)color ='32';; text / x-shellscript *)color ='01; 32';; application / * zip *)color ='31';; esac printf '
Linux