Apa arti dari tanda bintang, garis miring terbalik, titik dua dan dua di (* \: 2)?

14

Apa arti dari mengikuti lsperintah?

ls -l *\:2,*T
  • ls = daftar
  • -l = panjang (daftar)
  • *Tmungkin berarti Tpada akhirnya

Tapi bagaimana dengan itu *\:2dan koma?

jugmac00
sumber

Jawaban:

25

*\:2,*Tadalah pola gumpalan file ke daftar. Untuk memahaminya, kita perlu mengingat beberapa hal:

  • : harus melarikan diri ke dalam shell, menjadi \:
  • Nama file dapat dengan mudah mengandung koma

Jadi *\:2,*Tmisalnya akan cocok dengan file yang disebutTranscationNumber:2,EventType:XYT

EDIT

Dari komentar, perlunya (atau tidak) dari melarikan diri :membutuhkan beberapa kata: Hal ini tidak benar-benar diperlukan untuk melarikan diri :tanda, tapi menampar itu sendiri menunjukkan ketika Autocompleting.

Eugen Rieck
sumber
3
Terima kasih, Eugen dan HBruijn. Saya curiga ada beberapa pola globbing yang rumit, tetapi sebenarnya itu hanya cocok dengan tanda titik dua dan koma, yang tidak saya pikirkan ketika bekerja dengan file. Sekarang, perintahnya benar-benar masuk akal: daftarkan semua file email di direktori Maildir, yang ditandai sebagai "Dihapus" (T). Btw. Angka 2 berarti Maildir dalam versi 2 (cf wiki2.dovecot.org/MailboxFormat/Maildir ).
jugmac00
11
Sejak kapan :harus melarikan diri?
Barmar
7
:tidak perlu melarikan diri. Itu hanya khusus dalam keadaan tertentu (bila digunakan sebagai perintah), bukan dalam pola glob. Itu \:setara dengan :, melarikan diri tidak ada bedanya.
terdon
1
@ Harun, itu bukan benar - benar no-op: shell masih akan memproses substitusi variabel, terutama variasi penugasan (yaitu untuk menetapkan nilai default):unset var; : ${var:=x}; echo $var
glenn jackman
3
@terdon & @Aaron Tanda titik dua :adalah bagian dari nilai default untuk COMP_WORDBREAKSvariabel lingkungan. Dalam pelengkapan otomatis Bash, karakter tersebut digunakan sebagai pemisah kata oleh pustaka baris baca dan nama file yang berisi titik dua tentu saja harus berupa satu kata. Oleh karena itu alasan bahwa bash autocompletion mengharuskan usus besar untuk melarikan diri, meskipun sebaliknya " sebagian besar " bukan karakter khusus ...
HBruijn
14

Daftar semua file yang cocok dengan pola wildcard *:2,*T

Di sana wildcard *cocok dengan apa pun (sejumlah semua karakter yang mungkin)
:2,adalah karakter yang harus ada dalam nama file / direktori.
Usus besar :adalah karakter khusus yang perlu untuk melarikan diri, maka dari itu bentuk \:2,.
Nama file / direktori harus diakhiri dengan a T.

Nama file yang cocok adalah

:2,T
a:2,T
a:2,bT
abbY-$fafaf:2,<hskjhsgdfhjk>T
HBruijn
sumber
1
Tidak ada yang istimewa tentang:, tidak perlu melarikan diri.
Kevin
@Kevin bash, penyelesaian otomatis secara otomatis keluar dari titik dua dalam pola nama file / direktori, karena termasuk dalam daftar COMP_WORDBREAKnilai lingkungan yang ditetapkan secara default. - Jadi itu memang bukan karakter khusus yang sebenarnya, tetapi ketika Anda menggunakan pelengkapan otomatis pada commandline dan ingin / perlu mencocokkan nama file dengan titik dua, itu tidak perlu melarikan diri.
HBruijn
9

Seperti yang telah dicatat oleh orang lain, ini akan mencantumkan dalam format panjang, berisi file :2, dan diakhiri denganT

Ini terlihat seperti pencarian di folder Maildir untuk file yang dihapus (dibuang). Namun, untuk ketahanannya seharusnya memiliki yang lain *pada akhirnya. Bendera baru dengan posisi alfabet kemudian dapat ditambahkan, dan Dovecot misalnya menambahkan bidang lain dengan ukuran file di akhir.

Malaikat
sumber