Memanggil ls atau kurang di bash berdasarkan jenis file

0

Saya sering tidak sengaja melakukan ls pada file, ketika saya bermaksud melakukan lebih sedikit.

Apakah ada cara untuk membuat alias, atau fungsi, yang akan melakukan ls pada direktori, dan lebih sedikit pada file.

kmace
sumber
Lihatlah tes. -d akan memeriksa apakah argumennya adalah direktori, -f untuk file. Jadi dalam skrip dapat memiliki sesuatu seperti jika [-f "$ 1"]; lalu kurang dari "$ 1"; elif [-d "$ 1"]; lalu ls "$ 1"; fi. Meskipun saya yakin ada kesalahan di sana karena saya tidak banyak menggunakan skrip ,, cukup tambahkan ke file, dengan shebang, dan buat executable ..
Guy

Jawaban:

1

Hal dasar yang Anda inginkan mungkin terlihat seperti ini:

function my_less()
  {
  obj=$1
  shift
  test -d $obj && ls $obj $@
  test -f $obj && less $obj $@
  }

Kemudian

my_less thing

akan melakukan lsatau lesstergantung pada jenisnya.

The obj=$1diperebutkan argumen pertama ke fungsi. The shiftpergeseran argumen yang tersisa "ke kiri" dan $@adalah daftar argumen saat ini.

Jika Anda ingin memiliki beberapa pemrosesan sakelar yang belum sempurna, Anda dapat memperluas fungsi ini seperti ini:

function my_less()
  {
  switches=
  obj=
  while true
  do
    case $1 in
      -*)
        switches="$switches $1"
        shift
        ;;
      *)
        obj=$1
        shift
        break
        ;;
    esac
  done
  test -d $obj && ls $switches $obj $@
  test -f $obj && less $switches $obj $@
}

Ini akan mengumpulkan semua sakelar utama dan disetel objke sakelar non-sakelar pertama. Ini, akan sering melakukan hal yang salah, tetapi itu hanya saran untuk langkah selanjutnya.

Greg Tarsa
sumber