Anda juga dapat melakukan ini sepenuhnya dengan skrip Bash pendek:
#!/bin/bash
set -eu
shopt -s nullglob
[ "$#" -eq 0 ] || cd -- "$1"
i=0
for f in *; do
printf '%d. %s\n' "$((++i))" "${f//$'\n'/^N}"
done |
cat -vt
Anda bahkan dapat menjadi mewah dan menambahkan nomor baris untuk lebih dari 9 hasil:
#!/bin/bash
set -eu
shopt -s nullglob
[ "$#" -eq 0 ] || cd -- "$1"
ls=(*)
pad=${#ls[@]}
pad=${#pad}
i=0
for f in *; do
printf '%*d. %s\n' "$pad" "$((++i))" "${f//$'\n'/^N}"
done |
cat -vt
Pemakaian
Dengan asumsi bahwa Anda menyimpan skrip sebagai file yang dapat dieksekusi numbered-ls.shdi direktori kerja saat ini:
./numbered-ls.sh [DIRECTORY]
Argumennya DIRECTORYopsional dan default ke direktori kerja saat ini.
Penjelasan
Jika skrip dipanggil dengan argumen, ubah direktori kerja ke jalur di argumen pertama.
Cocokkan semua entri dari direktori kerja saat ini dan lihatlah. Untuk setiap entri menambah penghitung dan mencetak nilainya bersama dengan nama entri. Karakter baris istirahat atas nama entri diganti dengan ^N.
Pipa output melalui cat -vtuntuk berurusan dengan anggun dengan nama file yang mengandung karakter yang tidak dapat dicetak yang terminal dapat menafsirkan sebagai karakter kontrol.