Yeni Başlayanlar İçin Kabuk Komut Dosyası Oluşturma Kılavuzu: Temel Bilgiler

"Kabuk komut dosyası oluşturma" teriminden Linux forumlarında sıklıkla bahsedilir, ancak birçok 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 Komut Dosyası Nedir?

Linux kullanıcısı olmak, komut satırı ile oynadığınız anlamına gelir. Hoşunuza gitsin veya gitmesin, bu arayüz aracılığıyla işaret edip tıklatmaktan çok daha kolay yapılan bazı şeyler var. Komut satırını ne kadar çok kullanır ve öğrenirseniz, potansiyelini o kadar çok görürsünüz. Komut satırının kendisi bir programdır: kabuk. Günümüzde çoğu Linux dağıtımı Bash kullanıyor ve bu gerçekten komutları girdiğiniz şey.

Şimdi, Linux kullanmadan önce Windows kullanan bazılarınız toplu iş dosyalarını hatırlayabilir. Bunlar, yürütmek için komutlarla doldurabileceğiniz küçük metin dosyalarıydı ve Windows bunları sırayla çalıştırıyordu. Sistem klasörlerini açamadığınızda veya kısayollar oluşturamadığınızda lise bilgisayar laboratuvarınızda oyun çalıştırmak gibi bazı işleri halletmenin akıllıca ve düzenli bir yoluydu. Windows'taki toplu iş dosyaları yararlı olsalar da, kabuk komut dosyalarının ucuz bir taklididir.

Kabuk komut dosyaları, zincirlerdeki komutları programlamamıza ve sistemin bunları toplu iş dosyaları gibi komut dosyalı bir olay olarak yürütmesine izin verir. Ayrıca, komut ikamesi gibi çok daha kullanışlı işlevlere de izin verirler. Tarih gibi bir komutu çağırabilir ve çıktısını bir dosya adlandırma şemasının parçası olarak kullanabilirsiniz. Yedeklemeleri otomatikleştirebilirsiniz ve kopyalanan her dosyanın adının sonuna geçerli tarih eklenebilir. Komut dosyaları da yalnızca komutların çağrıları değildir. Kendi başlarına programlardır. Komut dosyası oluşturma, programlama işlevlerini (örneğin 'for' döngüleri, if / then / else ifadeleri ve benzeri) doğrudan işletim sisteminizin arabiriminde kullanmanıza olanak tanır. Ve başka bir dil öğrenmek zorunda değilsin çünkü zaten bildiğin şeyi kullanıyorsun: komut satırı.

Bence bu gerçekten senaryo yazmanın gücü. Başlıca programlama dillerinin çoğunun temellerini öğrenirken, zaten bildiğiniz komutlarla programlama yaparsınız. Tekrarlayan ve sıkıcı bir şey mi yapmanız gerekiyor? Senaryo yaz! Gerçekten karmaşık bir komut için bir kısayola mı ihtiyacınız var? Senaryo yaz! Bir şey için gerçekten kullanımı kolay bir komut satırı arayüzü oluşturmak ister misiniz? Senaryo yaz!

Sen başlamadan önce

Komut dosyası yazım serimize 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, Mac OS kullanıcıları ve Cygwin için Windows'ta da mevcuttur. Çok evrensel olduğu için, platformunuz ne olursa olsun senaryo yazabilmelisiniz. Ek olarak, referans verilen tüm komutlar var olduğu sürece, komut dosyaları çok az veya hiç ince ayar gerektirmeden birden çok platformda çalışabilir.

Komut dosyası oluşturma, "yönetici" veya "süper kullanıcı" ayrıcalıklarından kolayca yararlanabilir, bu nedenle komut dosyalarını çalıştırmadan önce test etmek en iyisidir. Ayrıca, üzerinde komut dosyası çalıştırmak üzere olduğunuz dosyaların yedeklerini aldığınızdan emin olmak gibi sağduyulu davranın. Rm komutu için –i gibi doğru seçenekleri kullanmak da gerçekten önemlidir, böylece etkileşiminiz gereklidir. Bu, bazı kötü hataları önleyebilir. Bu nedenle, indirdiğiniz komut dosyalarını okuyun ve işlerin ters gitmesi ihtimaline karşı elinizdeki veriler konusunda dikkatli olun.

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

Komut Dosyası İzinleri ve Adları

Komut dosyaları programlar gibi yürütülür ve bunun gerçekleşmesi için uygun izinlere sahip olmaları gerekir. Üzerinde aşağıdaki komutu çalıştırarak komut dosyalarını çalıştırılabilir hale getirebilirsiniz:

chmod + x ~ / somecrazyfolder / script

Bu, herkesin belirli bir komut dosyasını ç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 / script

Bu betiği çalıştırmak için, uygun dizine cd yapmanız 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ı ana dizininizdeki bir "bin" klasörüne yerleştirebilirsiniz:

~ / bin

Pek ç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, kendi kullanıcınıza ait çalıştırılabilir dosyaların depolandığı yerdir. Komut dosyalarını buraya yerleştirerek, diğer komutlarda olduğu gibi, etrafta cd yapmak ve './' önekini kullanmak yerine, adlarını yazarak çalıştırabilirsiniz.

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

hangi [komut]

Pek çok insan eski komut dosyalarına "test" adını verir ve komut satırında çalıştırmaya çalıştıklarında hiçbir şey olmaz. Bunun nedeni, bağımsız değişkenler olmadan hiçbir şey yapmayan test komutuyla çakışmasıdır. Komut adlarınızın komutlarla çakışmadığından her zaman emin olun, aksi takdirde kendinizi yapmayı istemediğiniz şeyler yaparken bulabilirsiniz!

Komut Dosyası Kuralları

Daha önce de bahsettiğim gibi, her komut dosyası aslında düz metindir. Bu, ne istersen yazabileceğin anlamına gelmez. Bir metin dosyası çalıştırılmaya çalışıldığında, kabuklar komut dosyası olup olmadıkları ve her şeyin nasıl düzgün bir şekilde ele alınacağına dair ipuçları için onları ayrıştırır. Bu nedenle bilmeniz gereken birkaç yönerge var.

  1. Her komut dosyası "#! / Bin / bash" ile 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ını ayrıştırdığı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ırsanız, yolunu burada değiştirin. Yorum satırları karmalarla (#) başlar, ancak patlama (!) Ve kabuk yolunu eklemek, bu yorum kuralını atlayacak ve betiği bu çizginin işaret ettiği kabukla çalışmaya zorlayacak bir tür hack'tir.

Yeni Satır = Yeni Komut

Her yeni satır yeni bir komut veya daha büyük bir sistemin bir bileşeni olarak düşünülmelidir. Örneğin If / then / else ifadeleri birden çok satırı devralır, ancak bu sistemin her bileşeni yeni bir satırdadır. Bir komutun sonraki satıra taşmasına izin vermeyin, çünkü bu önceki komutu kesebilir ve bir sonraki satırda size bir hata verebilir. Metin düzenleyiciniz bunu yapıyorsa, güvenli tarafta olmak için metin kaydırmayı kapatmalısınız. ALT + L tuşlarına basarak nano bitte metin kaydırmayı kapatabilirsiniz.

Genellikle #s ile Yorum Yapın

Bir satıra # ile başlarsanız, satır yok sayılır. Bu, önceki komutun çıktısının ne olduğunu veya sonraki komutun ne yapacağını kendinize hatırlatabileceğiniz bir yorum satırına dönüştürür. Yine, metin kaydırmayı kapatın veya yorumunuzu tümü karma ile başlayan birden çok satıra bölün. Çok sayıda yorum kullanmak, sizin ve diğer kişilerin komut dosyalarınızı daha kolay değiştirmesini sağladığından, saklamak için iyi bir uygulamadır. Bunun tek istisnası, yukarıda bahsedilen Hash-Bang hackidir, bu yüzden #s'i! ;-)

Komutlar Parantezle Çevrilmiştir

Eski günlerde, komut ikameleri tek onay işaretleriyle yapılırdı (`, ~ anahtarını paylaşır). Henüz buna değinmeyeceğiz, ancak çoğu insan temelleri öğrendikten sonra gidip keşfe çıktığından, bunun yerine parantez kullanmanız gerektiğini belirtmek muhtemelen iyi bir fikirdir. Bunun temel nedeni, iç içe yerleştirdiğinizde - komutları diğer komutların içine yerleştirdiğinizde - parantezlerin daha iyi çalışmasıdır.

İlk Senaryonuz

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 ismin bir şeyle çelişip ç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'e dokunun

Ve unutmadan şimdi izni değiştirelim:

O zaman senaryomuzu oluşturmaya başlayalım. Bu dosyayı istediğiniz metin düzenleyicinizde açın. Dediğim gibi, nano'nun basitliğini seviyorum.

nano ~ / bin / datecp

Ve devam edip önkoşul olan ilk satırı ve bu senaryonun ne yaptığı hakkında bir yorum yazalım.

Sonra bir değişken tanımlayalım. Daha önce cebir aldıysanız, muhtemelen bunun ne olduğunu biliyorsunuzdur. Bir değişken, bilgileri depolamamıza ve onunla bir şeyler yapmamıza izin verir. Değişkenler, başka bir yerde referans verildiğinde "genişleyebilir". Yani, adlarını göstermek yerine, depolanan içeriklerini göstereceklerdir. Daha sonra aynı değişkene farklı bilgileri depolamasını söyleyebilirsiniz ve bundan sonra ortaya çıkan herhangi bir talimat yeni bilgiyi kullanacaktır. Gerçekten süslü bir yer tutucudur.

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

Tarih komutunun çıktısının nasıl oluşturulacağını öğrenmek için 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.

Tarih komutunun son yinelemesini, "tarih +% m_% d_% y-% H.% M.% S" ve komut dosyamızda kullanalım.

Bu betiği şimdi kaydedersek, çalıştırabilirdik ve beklediğimiz gibi bize date komutunun çıktısını verirdi:

Ama farklı bir şey yapalım. Bu komuta date_formatted gibi bir değişken adı verelim. Bunun için uygun sözdizimi aşağıdaki gibidir:

değişken = $ (komut –seçenek argümanları)

Ve bizim için bunu şöyle inşa ederdik:

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

Bu, komut ikamesi dediğimiz şeydir. Esasen bash'a, “date_formatted” değişkeni göründüğünde, parantez içindeki komutu çalıştırmasını söylüyoruz. Daha sonra, komutların verdiği çıktı ne olursa olsun değişkenin adı yerine "tarih_formatlı" gösterilmelidir.

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

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

Senaryomuza geri dönelim. Şimdi komutun kopyalama kısmını ekleyelim.

cp –iv 1 $ 2 $ tarih_formatlı

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

Sonra, "1 $" seçeneğini eklediğimi görebilirsiniz. Komut dosyası oluştururken, bir dolar işareti ($) ve ardından bir sayı, çağrıldığında komut dosyasının numaralandırılmış bağımsız değişkenini gösterir. Örneğin, aşağıdaki komutta:

cp –iv Trogdor2.mp3 ringtone.mp3

İlk bağımsız değişken "Trogdor2.mp3" ve ikinci bağımsız değişken "ringtone.mp3" dür.

Senaryomuza dönüp baktığımızda, iki argümana referans verdiğimizi görebiliriz:

Bu, betiği çalıştırdığımızda, betiğin doğru çalışması için iki argüman sağlamamız gerektiği anlamına gelir. İlk argüman olan $ 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 hareket edecektir. Ancak bunun farklı olduğunu da görebilirsiniz. Bir nokta ekledik ve "date_formatted" değişkenine yukarıdan referans verdik. Bunun ne yaptığını merak mı ediyorsunuz?

Komut dosyası çalıştırıldığında şunlar olur:

Çıktı dosyasının $ 2 için girdiğim şey olarak listelendiğini, ardından bir nokta ve ardından tarih komutunun çıktısının listelendiğini görebilirsiniz! Mantıklı, değil mi?

Şimdi datecp komutunu çalıştırdığımda, bu komut dosyasını çalıştıracak ve herhangi bir dosyayı yeni bir konuma kopyalamama ve dosya adının sonuna tarih ve saati otomatik olarak eklememe izin verecek. Bir şeyleri arşivlemek için kullanışlıdır!

Kabuk komut dosyası oluşturma, işletim sisteminizin sizin için çalışmasını sağlamanın merkezinde yer alır. Bunun gerçekleşmesi için yeni bir programlama dili öğrenmenize de gerek yok. Evde bazı temel komutlarla komut dosyası oluşturmayı deneyin ve bunu ne için kullanabileceğinizi düşünmeye başlayın.

Senaryo yazıyor musun? Yeni başlayanlar için herhangi bir tavsiyeniz var mı? Düşüncelerinizi yorumlarda paylaşın! Bu seride daha fazlası var!