Bagaimana cara membuat kolom input yang ls
tidak dikolomasikan seperti halnya?
ls
membuat tabel yang dioptimalkan dengan lebar minimum untuk setiap baris, misalnya:
ls
2 dsao file with space with
5 e g wsdl-rubo-6cb0f1a9086e80c
d file leading space
tetapi jika saya memasukkan output ke column
(mis. setiap file pada satu baris), itu mengisi setiap baris dengan lebar yang sama, sehingga sesuai dengan lebar layar:
for i in *; do echo "$i"; done | column
2 file with space
5 g
d leading space
dsao with
e wsdl-rubo-6cb0f1a9086e80c
file
(Saya hanya menggunakan daftar file di sini untuk menghasilkan output yang sama seperti contoh, saya mencari solusi seperti itu untuk membuat kolom hal-hal lain pada akhirnya.)
Bagaimana saya bisa mengkolumisasi keluaran apa pun dengan lebar col variabel?
column -c
_n
-x`, tetapi paskan output menjadi kolom layar sesedikit mungkin daripada mengisi lebar yang ditentukan". Apakah ini benar?ls
mengelola itu). Mungkin kita menemukan solusinya, jika kita melihat kode sumber kode sumberls
diJawaban:
Terima kasih @ rubo77 untuk menanyakan ini, ini latihan yang bagus. Bagi saya itu adalah kesalahan satu-per-satu apa itu Bahasa Inggris Tough Stuff adalah untuk merusak ritme: itu menyenangkan, cepat, meskipun algoritma itu sendiri di sini cukup sederhana.
[edit terakhir: pindah ke https://github.com/jthill/columnate/blob/master/columnate , bug diperbaiki, baris-mayor diimplementasikan. ]
sumber
time ls | sort | columnate COLUMNS=$COLUMNS
Sesuatu yang dekat dengan output dari
ls
:sumber