kulit ikan: analog "shopt -s dotglob"

9

Saya mencoba bermigrasi dari bashke fish.

Untuk apa fishanalog itu shopt? Saya mencoba meniru garis ini dari .bashrc:

shopt -s dotglob # for mv * see hidden files
netimen
sumber
Cukup yakin tidak ada. dokumentasi berbicara tentang file dot yang tidak termasuk tanpa menyebutkan tentang mekanisme konfigurasi. Anda mungkin harus menggumpal {,.}*secara manual.
glenn jackman
1
Catatan, Anda mungkin ingin bertanya di stackoverflow.com, beberapa pengelola ikan nongkrong di sana.
glenn jackman

Jawaban:

8

Ini disengaja. Sebagian besar waktu pengguna tidak ingin secara tidak sengaja mencocokkan file tersembunyi yang tidak terlihat untuk ls(tanpa -a). Biasanya, file disembunyikan karena suatu alasan, bukan hanya untuk menjebak Anda. Juga, jika *akan cocok dengan file yang tersembunyi, mencocokkan file yang tidak tersembunyi akan terlalu rumit.

Namun, tidak seperti bash shopt -s dotglobtidak diperlukan untuk mencocokkan file yang tersembunyi. Dalam bash, shopt -s dotglobadalah satu - satunya cara untuk mencocokkan setiap file dalam direktori tanpa sengaja mencocokkan .atau ... Namun, cangkang ikan tidak pernah bisa cocok .atau ..dengan gumpalan, oleh karena itu itu bukan masalah (jika Anda benar-benar perlu mencocokkan .atau ..karena alasan konyol, katakan saja secara eksplisit). Selain itu, ikan mencoba menghindari memiliki opsi oleh desain, jadi tidak punya dotglob.

Untuk mencocokkan setiap file dalam direktori, Anda mungkin ingin menggunakan ekspansi braket untuk mendeteksi file yang dimulai dengan titik, dan yang tidak. {.,}adalah ekspansi braket yang cocok dengan titik yang mungkin ada atau tidak ada. Bintang setelah itu cocok dengan segalanya. Karena gumpalan pada ikan tidak bisa cocok .atau .., kode berikut cocok dengan semuanya kecuali untuk dua direktori (yang sayangnya cocok, jika Anda menggunakan kode di bawah ini)

cat {.,}*
Konrad Borowski
sumber