GNU/Linux >> Belajar Linux >  >> Linux

Jadikan Ls Bedakan Script Dari Biner Di Output?

Apakah mungkin membuat ls membedakan skrip yang dapat dieksekusi dari binari terkompilasi yang sebenarnya?

Izinnya paling sering sama (+x ), dan dengan ls -F anda mendapatkan sufiks asterisk (* ) untuk keduanya, jadi sulit untuk membedakannya. Saya memiliki skrip untuk mengatur warna ls , tetapi itu bergantung pada file yang dapat dieksekusi atau tidak, sehingga mereka muncul sama:

BG='01;32'  # green
EX="ex=$BG" # file with execute permission

Saya tidak ingin bergantung pada ekstensi karena banyak dari file ini tidak memilikinya.

Saya menginginkan ini, jadi ketika saya melihat beberapa pesan kesalahan yang aneh dan berpikir, "Kode apa yang menyebabkannya?", Saya tahu apakah aman untuk cat filenya.

Jika tidak ada solusi standar, bagaimana dengan mengurai output file , dalam satu fungsi umum, dan menyisipkan beberapa tanda khusus? Atau apakah itu terlalu lambat untuk ls ?

Jawaban yang Diterima:

Anda perlu melihat isi file untuk membedakan antara binari dan skrip. ls tidak akan melakukan ini, ini hanya melihat nama file dan metadata (jenis, izin, dll.).

Ini adalah pengurai kasar untuk file yang mewarnai skrip dan binari secara berbeda. Ini bertindak seperti ls -d; menambahkan metadata akan membutuhkan pekerjaan patch-up yang membutuhkan pendekatan yang lebih langsung (misalnya dalam Perl atau Python); gunakan lsx somedir/* untuk membuat daftar isi direktori. Nama file diasumsikan tidak mengandung baris baru atau titik dua (Anda dapat mengubah : pemisah untuk beberapa string lain dengan -F pilihan untuk file ).

lsx () { file -iN -- "[email protected]" | sementara IFS=baca -r baris; lakukan nama=${baris%%:*}; type=${line#*:} color=0 case $type in application/x-executable*) color='32';; teks/x-shellscript*) color='01;32';; aplikasi/*zip*) color='31';; esac printf'
Linux
  1. Membaca Pola Grep Dari File?

  2. Buat PEM dari file PPK

  3. Bagaimana Anda membuat daftar/file untuk menginstal pacman?

  1. Bagaimana Cara Membuat Iconv Mengganti File Input Dengan Output yang Dikonversi?

  2. Bagaimana Cara Menghapus Beberapa Baris Acak Dari File Teks Menggunakan Sed?

  3. Menghapus Redundansi Dari Kolom Keluaran?

  1. Bagaimana Cara Membuat File .click Dari Aplikasi yang Terinstal?

  2. Bagaimana cara membuat file jarang?

  3. Bagaimana cara membuat file di Linux dari jendela terminal?