GNU/Linux >> Linux の 問題 >  >> Linux

Lsに出力のバイナリからスクリプトを区別させますか?

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
  1. ファイルからGrepパターンを読み取る?

  2. インストールされたアプリから.clickファイルを作成する方法は?

  3. install -c は cp とどう違うのですか

  1. pacman をインストールするためのリスト/ファイルをどのように作成しますか?

  2. ログファイルを作る

  3. シェルスクリプトを介してファイルから文字列を削除するには?

  1. Iconvに入力ファイルを変換された出力に置き換える方法は?

  2. Sedを使用してテキストファイルから複数のランダム行を削除する方法は?

  3. リダイレクトとパイプ出力?