Apa artinya ^ d di ls-l | grep ^ d?

13

Ketika saya melakukannya ls -l | grep ^dhanya daftar direktori di direktori saat ini.

Apa yang saya ingin tahu adalah apa tanda sisipan ^di ^drata-rata?

Meluncur
sumber
Untuk informasi terkait, lihat ekspresi reguler atau lihat halaman ini tentang penggunaan ekspresi reguler di grep: robelle.com/smugbook/regexpr.html
Trey Hunner
Ini berfungsi, tetapi tidak optimal. Pertimbangkan ls */sebagai gantinya, yang akan bekerja dengan atau tanpa daftar panjang ( ls -l) dan tanpa perlu grep(dan karenanya sangat sedikit lebih cepat) dan kecil kemungkinannya (dibandingkan ls -l *) untuk masuk ke daftar argumen masalah terlalu lama (karena hanya menempatkan direktori ke dalam perintah baris). Tentu saja, find . -maxdepth 1 -type dini lebih baik, karena tidak mengacaukan baris perintah Anda sama sekali.
Adam Katz

Jawaban:

21

Jawaban Andy benar, seperti yang terlihat di halaman manual:

Penahan

Tanda ^ dan tanda dolar $ adalah meta-karakter yang masing-masing cocok dengan string kosong di awal dan akhir baris.

Alasan kerjanya adalah -lbendera untuk lsmembuatnya menggunakan format daftar panjang. Hal pertama yang ditunjukkan pada setiap baris adalah izin yang dapat dibaca manusia untuk file tersebut, dan karakter pertama dari itu adalah duntuk direktori atau -untuk file

Michael Mrozek
sumber
14

Itu sebuah caret, bukan wortel. Itu berarti "awal dari garis." Grep hanya mencocokkan garis yang dimulai dengan "d".

Andy Lester
sumber