balık kabuğu: “shopt -s dotglob” analogu


9

Ben göç çalışıyorum bashiçin fish.

Nedir fish'ın analog için shopt? Bu satırı benim taklit etmeye çalışıyorum .bashrc:

shopt -s dotglob # for mv * see hidden files

Eminim biri yok. dokümantasyon, herhangi bir yapılandırma mekanizması hakkında herhangi bir açıklama yapılmaksızın dahil edilmeyen nokta dosyalarından bahseder. Muhtemelen {,.}*elle kürek çekmeniz gerekecek .
glenn jackman

1
Not, stackoverflow.com üzerinde sormak isteyebilirsiniz, bazı balık koruyucular orada takılıyor.
glenn jackman

Yanıtlar:


8

Bu kasıtlı. Çoğu zaman kullanıcılar yanlışlıkla ls( görünmez -a) görünmeyen gizli dosyalarla eşleşmek istemezler . Genellikle, dosyalar sadece sizi trol etmek için değil, bir nedenden dolayı gizlenir. Ayrıca, *gizli dosyalarla eşleşirse, gizli olmayan dosyaları eşleştirmek çok zor olur.

Ancak, shopt -s dotglobgizli dosyaların eşleşmesi için bash'ın aksine gerekli değildir. Bash, shopt -s dotglobdizindeki her dosyayı yanlışlıkla .veya eşleştirmeden eşleştirmenin tek yoludur ... Bununla birlikte, balık kabuğu asla eşleşemez .veya ..globlarla eşleşemez , bu nedenle bu bir sorun değildir (ciddi bir şekilde eşleşmeniz gerekiyorsa .veya ..aptalca bir sebeple, bunları açıkça söyleyin). Ayrıca, balık tasarım gereği seçeneklerden kaçınmaya çalışır, bu yüzden sahip değildir dotglob.

Dizindeki her bir dosyayla eşleşmek için, noktalarla başlayan ve olmayan dosyaları tespit etmek için köşeli ayraç genişletmesini kullanmak isteyebilirsiniz. {.,}, var olabilecek veya olmayabilecek noktaya uyan köşeli ayraç genişletmesidir. Bundan sonraki yıldız her şeye uyuyor. Balıktaki küreler eşleşemeyeceği için .veya ..aşağıdaki kod, bu iki dizin dışındaki her şeyle eşleşir (aşağıdaki kodu kullanırsanız bash ne yazık ki eşleşir)

cat {.,}*
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.