Brace Genişleme, komut dosyaları ve takma adlarda ve Linux komut satırında kullanılabilecek dizelerin listelerini üretmek için kullanışlı bir tekniktir. Zaman kazanın ve daha az yazarak hataları önleyin.
Brace Genişleme
Bash kabuğundan önce Bir komutu yürütür Bir terminal penceresinde veya bir komut dosyasındaki bir çizgide, komuta herhangi bir değiştirme yapmanız gerekip gerekmediğini kontrol eder. Değişken adları değerleri ile değiştirilir, takma adlar, kısaltıldığı komutlar tarafından değiştirilir ve herhangi bir genişleme gerçekleştirilir. Brace Genişleme, Bash tarafından desteklenen bir genleşme biçimidir.
Brace Genişlemesi modern kabuklarda mevcuttur, ancak bazı eski kabuklardan eksik olabilir. Scripts'te Brace Genişlemesi'ni kullanacaksanız, Bash gibi brace genişlemesini destekleyen bir kabuğun çağrıldığından emin olun:
Örneklerimiz için bash kullanacağız.
Dizeli listeleri oluşturmak, bir faydadan daha yenilikten daha fazla görünebilir, ancak zamandan ve tuş vuruşlarından tasarruf sağlayabilecek bazı işlevler sunar. Genellikle, bir problem veya gereksinime basit ve zarif bir çözüm sağlayabilir.
Basit genişlemeler
Bir çiftlik genişlemesi, bir çift parantez arasında "{}" arasında yer almaktadır. Virgülle ayrılmış öğelerin bir listesi veya bir menzilli belirteç olabilir. Dizayı tırnak işaretleriyle sardığınız sürece, uzaylara izin verilmez "
"
. "
Virgülle ayrılmış bir liste için, genişletme işlemi her bir öğeyi sırayla alır ve arama komutuna geçer. Bu örnekte,
Eko
basitçe
onları terminal penceresine yazdırır
. Virgüllerin göz ardı edildiğini unutmayın.
echo {bir, iki, üç, dört}
Bir liste kelimeler veya rakam olabilir.
echo {1,2,3,4}
Liste öğelerinin sırası tamamen keyfidir.
yankı (4,2,3,1)
Bir genişletme aralığı bir başlangıç ve iki dönemle bağlantılı bir son karaktere sahiptir "
..
"Herhangi bir boşluk olmadan. Eksik liste öğelerinin tümü, BAŞLAT KARIŞINDAN BÜYÜK KAPASINA GERÇEKLEŞTİRMEYE BAŞLADI.
Bu, rakamları 1 ila 10 arasında yazdıracaktır.
echo {1..10}
Numaralandırma keyfidir. Birinde başlamak zorunda değil.
echo {3..12}
Aralıklar, geriye doğru koşmaları için belirtilebilir. Bu, beşten birine bir liste oluşturacaktır.
echo {5..1}
Aralıklar negatif sayılar içerebilir.
echo {4 ..- 4}
Daha önce belirttiğimiz gibi, bir aralıkın bir başlangıç ve bir sonu vardır. karakter . Bir numara olması gerekmez. Bir mektup olabilir.
echo {q..v}
Harfler de geriye doğru çalışabilir.
echo {f..a}
Döngülerle Brace Genişletme Kullanımı
Scripts'deki döngülerdeki aralıklarla destek genişlemesini kullanabilirsiniz.
I için {3..7}
yapmak
echo $ i
Yapıldı
Brace Genişletme Aralıkları, karakterleri döngü değişkeni olarak kullanmanıza izin verir.
I için {M..Q}
yapmak
echo $ i
Yapıldı
Döngüler genellikle komut dosyalarında kullanılır, ancak neyin olacağını görmek için onları komut satırına yazmanızı engelleyecek bir şey yoktur.
I için {3..7}; echo $ i; Yapıldı
I için {M..Q}; echo $ i; Yapıldı
Birleştirici ve yuvalama
İki bitişik genişleme, diğerlerinden birinden bağımsız olarak hareket etmemektedir. Onlar değişiyorlar. İlk genişlemedeki her bir eleman, ikinci genişlemedeki her bir eleman tarafından harekete geçirilir.
echo {q..v} {1..3}
Genişlemeler de yuvalanabilir. İç içe geçmiş bir genişleme, hemen önceki öğe üzerinde hareket edecektir.
echo {parça-1, parça-2 {a, b, c, d}, parça-3}
Ayrıca, virgülle sınırlı bir aralık genişlemesi listesi oluşturarak genişlemeleri yuvalabilirsiniz.
echo {{5..0}, {1..5}}
Giriş ve PostScript
Bu metnin genişletme sonuçlarına dahil olması için bir ayrıntı genişlemesinden önce ve sonra metin yerleştirebilirsiniz. Bir genişlemenin önüne verilen metin girişi denirken, bir brace genişlemesinin arkasına yerleştirilen metin, PostScript'e denir.
Bu komut bir giriş kullanır.
echo Bölüm {1..3}
Bu örnek bir PostScript kullanır:
echo {İçindekiler, Kağıt, Bilbiyografi} .md
Ve bu komut her ikisini de kullanır.
echo Chapter- {1..4} .md
Dosya adlarını ve dizinlerini genişletme
Muhtemelen şimdi tahmin ettiğiniz gibi, Brace genişletmelerinin ana kullanımlarından biri, diğer komutlara iletilebilecek dosya ve dizin adları oluşturmaktır. Kullandık
Eko
Bir genişleme tetiklendiğinde tam olarak ne olduğunu görmek için uygun bir yol olarak. Dosya adlarını veya dizin adlarını giren herhangi bir komutu girdi olarak değiştirebilir ve bununla birlikte brace genişletmeyi kullanabilirsiniz.
Hızlıca
Bazı dosyalar oluşturun
, kullanmak
dokunma
:
Dokunmatik File- {1..4} .txt
ls * .txt
Aynı taban adına sahip birçok dosyanız varsa, ancak farklı dosya uzantılarınız varsa ve bir alt kümesinde bir işlem yapmak istiyorsanız, Brace Genişlemeleri yardımcı olabilir. Burada, "Program" olan bir dosyanın alt kümesini, "Source-code.zip" adlı bir zip dosyasına "program" olarak sıkıştırıyoruz.
Kalkınma dizinleri, ana programınız olarak aynı basename sahip olacak birçok dosyaları içerir. Genellikle, ".o" nesne dosyaları gibi dosyaları yedeklemek veya dağıtmak istemiyorsunuz. Bu, yalnızca dosya türlerini dahil etmek için temiz bir yoldur.
Zip Kaynağı kodu programı {.c, .h, .css}
Bu komut bir dosyanın bir kopyasını oluşturur ve orijinal dosyanın yedek bir kopyasını yaparak ".bak" ekler. Dikkat edilmesi gereken ilginç bir nokta, ayraç genişlemesinin virgülle ayrılmış bir liste içermesidir, ancak ilk öğe boş. Virgülü dahil etmiş olsaydık, genişleme gerçekleşmez.
CP Brace / New / Prog-1.c {,. Bak}
LS Brace / New / Prog-1.C.BAK
Farklı dizinlerde iki dosyaya bazı eylemler gerçekleştirmek için, dosyaların yolunda bir destek genişlemesi kullanabiliriz.
Bu örnekte, "Brace" dizininin "yeni" denilen iki alt dizin içerdiğini ve "eski" olarak adlandırılır. Aynı kaynak kod dosyası grubunun farklı versiyonlarını içerirler. Kullanacağız
bozmak
"Prog-1.c" nin iki versiyonu arasındaki farkları görmek için program.
diff brace / {yeni, eski} /prog-1.c
Bir projenin başlangıcında oluşturmanız gereken bir dizinin standart bir iskeletiniz varsa, Brace Genişletmeyi kullanarak bunları hızlı bir şekilde oluşturabilirsiniz. NS
mkdir
-P
(ebeveyn) seçeneği
Kayıp ana dizin oluşturur
Bir çocuk dizini oluşturulduğunda.
mkdir -p {kaynağı, inşa, adam, yardım {/ Sayfa, / Yelp, / images}}
Ağaç
Brace genişlemesini kullanabilirsiniz.
teçhizat
ile
Birden fazla dosyayı indirin
.
Bu komutta, "TEST1" ve "TEST2" olarak adlandırılan iki dizinden dosya indireceğiz. Her dizin, "picture1" ve "picture2" adlı iki dosyayı tutar.
wget https://www.url-of-your-choice.com/test {1,213/picture {İletişim bilgileri
Dosyaları listelemek size alınan dosyaları ve nasıl
teçhizat
Mevcut dosyaları olan isimleri önlemek için dosyaları yeniden adlandırın.
ls resim *. *
Braketi kucaklamak
Bakış genişlemesinin bir başkası olduğu görülüyor
Linux'un en iyi tutulan sırları
. Pek çok insan, hiçbir zaman destek genişlemesini duymadıklarını söylerken, diğerleri bana en sevdikleri komut-hat numaralarından biri olduğunu bildirir.
Bir deneyin ve sadece komut satırı go-püf noktaları için yolunu bulabilir.