Anasayfa » nasıl » Shell Script Hakkında Temel Bilgiler

    Shell Script Hakkında Temel Bilgiler

    “Shell script” terimi Linux forumlarında sıkça bahsedilir, ancak çoğu kullanıcı buna aşina değildir. Bu kolay ve güçlü programlama yöntemini öğrenmek, zamandan tasarruf etmenize, komut satırını daha iyi öğrenmenize ve sıkıcı dosya yönetimi görevlerini ortadan kaldırmanıza yardımcı olabilir.

    Kabuk Betiği Nedir??

    Bir Linux kullanıcısı olmak, komut satırında oynamak demektir. Beğen ya da beğenme, bu arayüzle işaret edip tıklamaktan çok daha kolay bir şekilde yapılan şeyler var. Komut satırını ne kadar çok kullanır ve öğrenirseniz, potansiyelini o kadar fazla görürsünüz. Peki, komut satırının kendisi bir programdır: kabuk. Bugün birçok Linux dağıtımı Bash'i kullanıyor ve bu gerçekten komutları girdiğiniz şey..

    Şimdi, Linux kullanmadan önce Windows'u kullanan bazılarınız toplu dosyaları hatırlayabilir. Bunlar, yürütmek için kullanabileceğiniz komutlarla doldurabileceğiniz küçük metin dosyalarıydı ve Windows bunları sırayla çalıştırırdı. Sistem klasörlerini açamadığınız veya kısayollar oluşturamadığınız zaman, lise bilgisayar laboratuarınızdaki koşu oyunları gibi bazı şeyleri halletmek akıllıca ve temiz bir yoluydu. Windows'taki toplu iş dosyaları yararlı olsa da, kabuk komut dosyalarının ucuz taklididir.

    Shell komut dosyaları, komutları zincirler halinde programlamamızı ve sistemin bunları yalnızca toplu iş dosyaları gibi komut dosyası olay olarak çalıştırmasını sağlar. Ayrıca komut değiştirme gibi çok daha kullanışlı fonksiyonlara izin verirler. Tarih gibi bir komutu çağırabilir ve çıktıyı dosya adlandırma düzeninin bir parçası olarak kullanabilirsiniz. Yedeklemeleri otomatik hale getirebilirsiniz ve kopyalanan her dosyanın adının sonuna eklenen tarih olabilir. Komut dosyaları da yalnızca komutların çağrışımı değildir. Kendi başlarına programlar. Komut dosyası, doğrudan, işletim sisteminizin arabiriminde 'for' döngülerinde, if / then / else ifadeleri ve benzeri gibi programlama işlevlerini kullanmanızı sağlar. Ve başka bir dil öğrenmek zorunda değilsiniz çünkü zaten bildiklerinizi kullanıyorsunuz: komut satırı.

    Bu gerçekten senaryoların gücü sanırım. Çoğu ana programlama dilinin zımbalarını öğrenirken, zaten bildiğiniz komutlarla programlamaya başlayabilirsiniz. Tekrarlayan ve sıkıcı bir şey mi yapmanız gerekiyor? Script it! Gerçekten karmaşık bir komut için kısayola mı ihtiyacınız var? Script it! Komut satırı arayüzünü kullanmak için gerçekten kolay bir şey mi oluşturmak istiyorsunuz? Script it!

    Sen başlamadan önce

    Senaryo dizimize başlamadan önce, bazı temel bilgileri ele alalım. Çoğu Linux dağıtımının yerel olarak kullandığı bash kabuğunu kullanacağız. Bash, Windows'ta Mac OS kullanıcıları ve Cygwin için de mevcuttur. Çok evrensel olduğundan platformunuz ne olursa olsun komut dosyası yazabilmelisiniz. Ek olarak, referans verilen tüm komutlar mevcut olduğu sürece, komut dosyaları çok az ya da hiç ayarlamaya gerek kalmadan birden fazla platformda çalışabilir.

    Komut dosyası, kolayca "yönetici" veya "süper kullanıcı" ayrıcalıklarından yararlanabilir; bu nedenle, komut dosyalarını çalışmaya koymadan önce test etmek en iyisidir. Ayrıca, bir komut dosyasını çalıştırmak üzere olduğunuz dosyaları yedeklediğinizden emin olmak gibi sağduyunuzu kullanın. Etkileşiminizin gerekli olması için, rm komutu için -i gibi doğru seçenekleri kullanmak da çok önemlidir. Bu, bazı kötü hataları önleyebilir. Bu nedenle, indirdiğiniz komut dosyalarını okuyun ve yalnızca işler ters giderse, sahip olduğunuz verilerle dikkatli olun.

    Özünde, komut dosyaları sadece düz metin dosyalarıdır. Bunları yazmak için herhangi bir metin düzenleyicisini kullanabilirsiniz: gedit, emacs, vim, nano… Bu liste devam ediyor. Sadece zengin metin olarak değil, düz metin olarak veya bir Word belgesi olarak kaydettiğinizden emin olun. Nano'nun kullanım kolaylığını sevdiğim için, onu kullanacağım..

    Betik İzinleri ve İsimleri

    Betikler programlar gibi yürütülür ve bunun gerçekleşmesi için uygun izinlere sahip olmaları gerekir. Aşağıdaki komutu çalıştırarak komut dosyalarının çalıştırılabilir olmasını sağlayabilirsiniz:

    chmod + x ~ / somecrazyfolder / script1

    Bu, herhangi birinin o betiği çalıştırmasına izin verecektir. Kullanımını yalnızca kullanıcınızla sınırlamak istiyorsanız, bunun yerine bunu kullanabilirsiniz:

    chmod u + x ~ / somecrazyfolder / script1

    Bu betiği çalıştırmak için, uygun dizine girmeniz ve ardından betiği şu şekilde çalıştırmanız gerekir:

    cd ~ / somecrazyfolder

    ./ script1

    İşleri daha kolay hale getirmek için, komut dosyalarını giriş dizininizdeki "bin" klasörüne yerleştirebilirsiniz:

    ~ / Bin

    Birçok modern dağıtımda, bu klasör artık varsayılan olarak oluşturulmaz, ancak oluşturabilirsiniz. Bu genellikle, diğer kullanıcılara değil, kullanıcınıza ait olan yürütülebilir dosyaların depolandığı yerdir. Buraya komut dosyaları koyarak, './' önekini dolaşıp kullanmak yerine, diğer komutlarda olduğu gibi adlarını yazarak çalıştırabilirsiniz..

    Bir komut dosyasını adlandırmadan önce, bu adı kullanan bir programın kurulu olup olmadığını kontrol etmek için aşağıdaki komutu kullanmalısınız:

    hangi [komut]

    Birçok insan ilk senaryolarını “test” olarak adlandırır ve komut satırında çalıştırmaya çalıştığında hiçbir şey olmaz. Bunun nedeni, argüman olmadan hiçbir şey yapmayan test komutuyla çakışmasıdır. Komut dosya adlarınızın komutlarla çakışmadığından her zaman emin olun, aksi halde kendinizi yapmak istemediğiniz şeyleri yaparken bulabilirsiniz!

    Komut Dosyası Kuralları

    Daha önce de belirttiğim gibi, her script dosyası aslında düz metindir. Bu, ne istersen istediğin şeyi yazabileceğin anlamına gelmez. Bir metin dosyası çalıştırılmaya çalışıldığında, kabuklar komut dosyaları olup olmadıklarına ve her şeyin doğru şekilde nasıl ele alınacağına dair ipuçları için ayrıştırılır. Bu nedenle, bilmeniz gereken birkaç kural var..

    1. Her komut dosyası “#! / Bin / bash” ile birlikte olmalıdır
    2. Her yeni satır yeni bir komuttur
    3. Yorum satırları # ile başlar
    4. Komutlar () ile çevrilidir.

    Hash-Bang Hack

    Bir kabuk bir metin dosyasında ayrıştırıldığında, dosyayı komut dosyası olarak tanımlamanın en doğrudan yolu ilk satırınızı yapmaktır:

    #! / Bin / bash

    Başka bir kabuk kullanıyorsanız, yolunu buraya yazın. Yorum satırları hashlarla (#) başlar, ancak bu açıklama kuralını atlayacak ve komut dosyasını bu satırın işaret ettiği kabuk ile çalıştırmaya zorlayacak bir tür kesmek olduğunda bang (!) Ve kabuk yolunu ekler.

    Yeni Satır = Yeni Komut

    Her yeni satır yeni bir komut veya daha büyük bir sistemin bileşeni olarak kabul edilmelidir. Eğer / then / else ifadeleri, örneğin, birden fazla satır üstlenir, ancak o sistemin her bir bileşeni yeni bir satırdadır. Bir komutun bir sonraki satıra taşmasına izin vermeyin, çünkü bu önceki komutu kesebilir ve bir sonraki satırda bir hata verebilir. Metin editörünüz bunu yapıyorsa, güvenli tarafta olması için metin sarma özelliğini kapatmalısınız. ALT + L tuşlarına basarak nano biti metin kaydırma özelliğini kapatabilirsiniz..

    Yorum #s ile sık sık

    # İle bir satır başlatırsanız, satır dikkate alınmaz. Bu, önceki komutun çıktısının ne olduğunu veya bir sonraki komutun ne yapacağını kendinize hatırlatabileceğiniz bir yorum satırına dönüştürür. Yine, metin paketlemesini kapatın veya yorumunuzu, tümü bir karma değerle başlayan birden çok satıra bölün. Çok fazla yorum kullanmak, sizin ve diğer kişilerin komut dosyalarınızı daha kolay düzenlemesine izin verdiğinden, saklamak için iyi bir uygulamadır. Bunun tek istisnası yukarıda belirtilen Hash-Bang kesmesidir, bu yüzden! S ile #s takip etmeyin. ;-)

    Komutlar Parantezlerle çevrili

    Daha eski günlerde, komut değiştirme tek tik işareti ile yapıldı (', ~ anahtarını paylaşır). Buna henüz değinmeyeceğiz, ancak çoğu insan temelleri öğrendikten sonra ayrılıp araştırdıkça, bunun yerine parantez kullanmanız gerektiğini belirtmek iyi bir fikirdir. Bunun sebebi, iç içe geçtiğinizde - diğer komutların içine komutlar koymak - parantezlerin daha iyi çalışmasıdır..

    İlk Senaryen

    Dosyaları kopyalamanıza ve dosya adının sonuna tarih eklemenize izin veren basit bir komut dosyasıyla başlayalım. Buna "datecp" diyelim. Öncelikle, bu adın bir şeyle çakışıp çakışmadığını kontrol edelim:

    Hangi komutun çıktısının olmadığını görebilirsiniz, bu yüzden hepimiz bu adı kullanmaya hazırız..

    ~ / Bin klasöründe boş bir dosya oluşturalım:

    ~ / bin / datecp dokunma

    Ve şimdi unutmadan önce iznini değiştirelim:

    O zaman senaryoyu oluşturmaya başlayalım. Seçtiğiniz metin editöründe bu dosyayı açın. Dediğim gibi, nano basitliğini seviyorum.

    nano ~ / bin / datecp

    Ve devam edelim ve önkoşul ilk satırı koyalım ve bu betiğin ne yaptığı hakkında bir yorum yapın..

    Sonra bir değişken tanımlayalım. Hiç cebir aldıysanız, bunun ne olduğunu muhtemelen biliyorsunuzdur. Bir değişken bilgi depolamamıza ve onunla bir şeyler yapmamıza izin verir. Değişkenler, başka bir yere referans verildiğinde "genişleyebilir". Yani, isimlerini göstermek yerine, depolanan içeriklerini göstereceklerdir. Daha sonra aynı bilgiyi farklı bilgileri saklamak için söyleyebilir ve bundan sonra gerçekleşecek herhangi bir talimat yeni bilgiyi kullanır. Gerçekten süslü bir yer tutucu.

    Değişkene ne koyacağız? Peki, tarih ve saati saklayalım! Bunu yapmak için tarih komutunu çağırırız..

    Date komutunun çıktısının nasıl oluşturulacağına ilişkin aşağıdaki ekran görüntüsüne bir göz atın:

    % İle başlayan farklı değişkenler ekleyerek komutun çıktısını istediğiniz şekilde değiştirebileceğinizi görebilirsiniz. Daha fazla bilgi için, tarih komutunun kılavuz sayfasına bakabilirsiniz..

    Date komutunun bu son yinelemesini kullanalım: “date +% m_% d_% y-% H.% M.% S” ve bunu komut dosyasımızda kullanalım..

    Bu betiği şimdi kaydedecek olsaydık, onu çalıştırabiliriz ve bize beklediğimiz gibi tarih komutunun çıktısını verirdi:

    Ancak, farklı bir şey yapalım. Bu komuta date_formatted gibi bir değişken adı verelim. Bunun için uygun sözdizimi şöyledir:

    değişken = $ (command -options argümanları)

    Ve bizim için böyle yaparız:

    date_formatted = $ (tarih +% m_% d_% y-% H.% M.% S)

    Buna komut değiştirme diyoruz. Temelde, “date_formatted” değişkeni ne zaman parantez içinde çalıştırılacağını gösterir. Daha sonra, komutların verdiği çıktı ne olursa olsun, “date_formatted” değişkeninin adı yerine gösterilmelidir..

    İşte örnek bir komut dosyası ve çıktısı:

    Çıktıda iki boşluk olduğuna dikkat edin. Echo komutunun tırnak içindeki boşluk ve değişkenin önündeki boşluk görüntülenir. Görünmelerini istemiyorsanız boşluk kullanmayın. Ayrıca, bu "eko" satırı eklenmemişse, komut dosyasının kesinlikle çıktı vermeyeceğini unutmayın..

    Senaryomuza geri dönelim. Daha sonra komutun kopya kısmına ekleyelim..

    cp -iv $ 1 $ 2. $ date_formatted

    Bu, -i ve -v seçenekleriyle copy komutunu çağırır. İlki, bir dosyanın üzerine yazmadan önce sizden doğrulama isteyecektir ve ikincisi, komut satırında ne olduğunu gösterecektir..

    Sonra, “$ 1” seçeneğini eklediğimi görebilirsiniz. Komut dosyası yazarken, ardından bir sayı işareti olan bir dolar işareti ($) çağrıldığında komut dosyasının bu argümanını belirtir. Örneğin, aşağıdaki komutta:

    cp -iv Trogdor2.mp3 ringtone.mp3

    İlk argüman “Trogdor2.mp3” ve ikinci argüman “ringtone.mp3” dür..

    Senaryomuza baktığımızda, iki argümana atıfta bulunduğumuzu görebiliriz:

    Bu, komut dosyasını çalıştırdığımızda, komut dosyasının doğru çalışması için iki argüman sağlamamız gerektiği anlamına gelir. İlk argüman, $ 1, kopyalanacak dosyadır ve “cp -iv” komutunun ilk argümanı olarak değiştirilir..

    İkinci argüman olan $ 2, aynı komut için çıktı dosyası olarak işlev görür. Ancak farklı olduğunu da görebilirsiniz. Bir süre ekledik ve yukarıdan “date_formatted” değişkenine başvurduk. Bunun ne yaptığını merak ediyorum?

    İşte komut dosyası çalıştırıldığında ne olur:

    Çıktı dosyasının 2 $ için girdiğim her şeyi listelediğini görebilirsiniz, ardından bir süre sonra tarih komutunun çıktısını alın! Mantıklı, doğru?

    Şimdi datecp komutunu çalıştırdığımda, bu betiği çalıştıracak ve herhangi bir dosyayı yeni bir yere kopyalamama izin verecek ve otomatik olarak dosya adının sonuna tarih ve saati ekleyeceğim. Arşivlemek için kullanışlıdır!


    Shell komut dosyası, işletim sisteminizin sizin için çalışmasını sağlamanın temelindedir. Bunun gerçekleşmesi için yeni bir programlama dili de öğrenmek zorunda değilsiniz. Evde bazı temel komutlarla komut dosyası çalıştırmayı deneyin ve bunu ne için kullanabileceğinizi düşünmeye başlayın..

    Senaryo mu yazıyorsun? Yeni başlayanlar için herhangi bir tavsiyen var mı? Düşüncelerinizi yorumlarda paylaşın! Bu seriye gelecek daha çok şey var!