23Aug

Kabuk Komut Dosyalarına Yeni Başlayanlar Kılavuzu: Temel Bilgiler

click fraud protection

"kabuk betiği" terimi Linux forumlarında sıklıkla bahsedilir, ancak pek çok kullanıcı buna aşina değildir. Bu kolay ve güçlü programlama yöntemini öğrenmek, zamandan tasarruf etmenize, komut satırı bilgilerini 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 oynamak demektir. Beğenip beğenmedikçe, işaretlemek ve tıklamaktan ziyade bu arayüz üzerinden çok daha kolay bir şekilde yapılan bazı şeyler var. Komut satırını ne kadar çok kullanırsanız ve öğrenirseniz, potansiyelini o kadar çok görebilirsiniz. Komut satırı kendisi bir programdır: Kabuk. Bugün Linux dağıtımlarının çoğunda Bash kullanılıyor ve komutları gerçekten buraya giriyorsunuz.

Şimdi, Linux kullanmadan önce Windows kullanan bazılarınız toplu iş dosyalarını hatırlayabilir. Bunlar çalıştırmak için komutlarla doldurabileceğiniz küçük metin dosyalarıydı ve Windows bunları sırayla çalıştıracaktı.Sistemin klasörlerini açamadığınız veya kısayollar oluşturamayacağınız zaman lise bilgisayar labaratuvarında oyunlar çalıştırmak gibi bazı şeyleri yapmak zekice ve düzgün bir yoldu. Windows'daki toplu iş dosyaları yararlı olmasına rağmen, kabuk komut dosyalarının ucuz bir taklididir.

instagram viewer

Kabuk komut dosyaları, komutları zincirlerle programlamamıza ve sistemin toplu iş dosyaları gibi komut dosyası verilen bir olay olarak yürütmesine izin verir. Ayrıca, komut yerine koyma gibi daha kullanışlı işlevlere izin verirler. Tarih gibi bir komutu çağırabilir ve dosyanın adlandırma şemasının bir parçası olarak çıktısını kullanabilirsiniz. Yedeklemeleri otomatikleştirebilirsiniz ve kopyalanan her dosyanın geçerli tarihinin adının sonuna eklenmesini sağlayabilirsiniz. Komutlar sadece komuta çağrıları değildir. Bunlar kendi başlarına programlardır. Komut dosyası programı, 'for' döngüleri, eğer /then/ ifadeleri vb. Gibi programlama işlevlerini doğrudan işletim sisteminizin arayüzünde kullanmanıza olanak tanır. Ayrıca, başka bir dil öğrenmek zorunda değilsiniz çünkü zaten bildiğiniz şeyleri kullanıyorsunuz: komut satırı.

Bu gerçekten komut dosyalarının gücüdür, sanırım. En önemli programlama dillerinin zımbalarını öğrenirken, zaten bildiğiniz komutlarla programa başlarsınız. Tekrarlı ve sıkıcı bir şey yapmanız mı gerekiyor? Yaz şunu! Gerçekten kıvrılmış bir komut için kısayol mu ihtiyacınız var? Yaz şunu! Bir şey için gerçekten kolay bir komut satırı arayüzü oluşturmak ister misiniz? Yaz şunu!

Başlamadan Önce

Yazım 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, Mac OS kullanıcıları için, Cygwin'de ise Windows'da mevcuttur.Çok evrenseldir, platformunuzdan bağımsız olarak senaryo yazabilmelisiniz. Buna ek olarak, atıf yapılan komutların tümü var olduğu sürece, komutlar, çok az veya hiç zum yapmadan çoklu platformlarda çalışabilir.

Scripting, "yönetici" veya "süper kullanıcı" ayrıcalıklarını kolayca kullanabilir, bu nedenle, komut dosyalarını çalışmaya başlamadan önce test etmenin en iyisidir. Aynı zamanda, bir senaryoyu çalıştırmak üzere olduğunuz dosyaların yedeklerini aldığınızdan emin olmak gibi sağduyu kullanın. Ayrıca, 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, karşıdan yüklediğiniz komut dosyalarını okuyun ve sahip olduğunuz verilere dikkat edin, yalnızca bir şeyler ters giderse.

Ö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 etmektedir. Bunu, zengin metin olarak değil, Word belgesi değil düz metin olarak kaydettiğinizden emin olun. Nano'nun sunduğu kullanım kolaylığını sevdiğimden beri, bunu 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. Komut dosyalarını şu komutu çalıştırarak çalıştırabilir hale getirebilirsiniz:

chmod + x ~ /somecrazyfolder/ komut1

Bu, herkesin o komut dizisini çalıştırmasına izin verecektir. Kullanımı sadece kullanıcıyla sınırlamak isterseniz bunun yerine kullanabilirsiniz:

chmod u + x ~ /somecrazyfolder/ script1

Bu komut dosyasını çalıştırmak için, uygun dizine cd girmeniz ve betiği şu şekilde çalıştırmanız gerekir:

cd ~ / somecrazyfolder

. /script1

İşlerinizi daha kolay hale getirmek için, komut dizinlerini ev dizininizdeki bir "kutu" klasörüne yerleştirebilirsiniz:

~ / bin

Birçok modern dağıtımda, bu klasör artık varsayılan olarak oluşturulmamaktadır ancak onu oluşturabilirsiniz. Bu, genellikle yürütülebilir dosyaların kullanıcıya ait olduğu ve diğer kullanıcılara ait olmadığı bir yerde saklandığı yerdir. Buraya komut dizileri yerleştirerek, cd komutunu kullanmadan ve diğer komutlarla aynı şekilde adlarını yazarak çalıştırabilirsiniz; bu komutla './' öneki kullanabilirsiniz.

Bir komut dosyası adını vermeden önce bu komutu kullanan bir programın yüklü olup olmadığını kontrol etmek için aşağıdaki komutu çalıştırmalısınız:

hangi [komut]

Pek çok kişi ilk komut dosyalarını "test" olarak adlandırıyor ve denemeye çalıştıklarındakomut satırında çalıştırın, hiçbir şey olmaz. Bunun nedeni, argüman olmadan hiçbir şey yapmayan test komutu ile çakışmasıdır. Betik adlarınızın komutlarla çakışmadığından daima emin olun, aksi halde kendiniz yapmak istemediğiniz şeyleri yaparsınız!

Komut Dosyası Kılavuzu

Daha önce de belirttiğim gibi, her betik dosyası esasen düz metindir. Bu demektir ki, neyin nahoş olmasını istediğinizi yazabilirsiniz. Bir metin dosyası çalıştırılmaya çalışıldığında kabuklar, komut dosyaları olup olmadığı ve her şeyi düzgün bir şekilde nasıl ele alacağıyla ilgili ipuçları için onları ayrıştırır. Bu nedenle, bilmeniz gereken birkaç yönerge vardır.

  1. Her betik "#!/bin/ bash "
  2. Her yeni satır yeni bir komut
  3. Yorum satırları bir #
  4. ile başlar Komutlar tarafından çevrilmiştir()

Hash-Bang Hack

Bir kabuk bir metin dosyası aracılığıyla ayrıştırıldığında, dosyayı tanımlamak için en doğrudan yol şu şekilde:Bir komut dosyası ilk satırınızı yaparak:

#!/bin/ bash

Başka bir kabuk kullanırsanız, onun yerine geçin. Yorum satırları karma( #) ile başlar, ancak bang( !) Ve kabuk yolunu ekledikten sonra bu yorum kuralını atlayacak ve bu satırın işaret ettiği kabukla komut dosyasını çalıştırmaya zorlayacak bir kesme türü olacaktır.

Yeni Hat = Yeni Komut

Her yeni hat, yeni bir komut ya da daha büyük bir sistemin bileşeni olarak düşünülmelidir.Örneğin, /then/ başka ifadeler birden fazla satır alır, ancak sistemin her bileşeni yeni bir satırdadır. Bir komutun sonraki satıra sıçramasına izin verme, çünkü bu, önceki komutu kesebilir ve bir sonraki satırda bir hata verebilir. Metin düzenleyiciniz bunu yapıyorsa, metin sarma işlemini güvenli tarafta olmasını sağlamalısınız. Metin kaydırmayı nano bitlik ALT + L'ye basarak kapatabilirsiniz.

Yorum Genellikle #s

ile Bir # ile bir satıra başlarsanız, satır göz ardı edilir. Bu, onu önceki komutun çıktısını veya sonraki komutun ne yapacağını kendinize hatırlatan bir yorum satırı haline getirir. Yine, metin sarmalamayı kapatın veya hepsini bir karma ile başlayan birden fazla satıra yorumunuzu kırın. Bir sürü yorum kullanmak, size ve diğer kişilerin komut dosyalarınızı daha kolay bir şekilde değiştirmesine olanak tanıyan tutmak için iyi bir uygulamadır. Tek istisna, yukarıda bahsedilen Hash-Bang kesmektir, bu nedenle # s'leri! S ile takip etmeyin.;-)

Komutları Parantezlerle Çevrelenmiştir

Daha eski zamanlarda, komut ikameleri tek tıklama işaretleriyle yapılmıştır( `, ~ tuşunu paylaşır).Henüz buna dokunmayacağız, ancak çoğu kişinin geçtiği ve temelleri öğrendikten sonra keşfedebileceği gibi bunun yerine parantez kullanması gerektiğini belirtmek iyi bir fikir olabilir. Bunun nedeni, esasen yuvaladığınızda - komutları diğer komutların içine koyduğunuzda - parantezler daha iyi çalışmasıdır.

İlk Senaryon

Dosyaları kopyalamanıza ve dosya tarihinin sonuna dosya adını eklemenize izin veren basit bir betikle başlayalım. Buna "datecp" diyelim.Önce, bu adın bir şeyle çakışıp çarpıp çatmadığını kontrol edelim:

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

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

touch ~ /bin/ datecp

Ve şimdi izin unutalım:

Sonra komut dosyamızı oluşturmaya başlayalım. Seçtiğiniz metin editöründe bu dosyayı açın. Dediğim gibi, nano'nun basitliğini seviyorum.

nano ~ /bin/ datecp

Ve devam edin ve önkoşul olan ilk satırı ve bu komut dosyasının yaptığı işle ilgili bir açıklama koyun.

Daha sonra, bir değişken bildirelim.Şimdiye kadar cebir almış iseniz, muhtemelen bunun ne olduğunu biliyorsunuzdur. Bir değişken, bilgi depolamanıza ve onunla işler yapmamıza izin verir. Değişkenler, başka yerde başvurulduğunda "genişletebilir".Diğer bir deyişle, adlarını göstermek yerine saklanan içeriğini görüntülerler. Aynı değişkeni farklı bilgileri depolamak için daha sonra söyleyebilir ve bundan sonra ortaya çıkan tüm talimatlar yeni bilgiyi kullanır.Çok süslü bir yer tutucudur.

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

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

% ile başlayan farklı değişkenleri ekleyerek, komutun çıktısını istediğiniz şeye değiştirebilirsiniz. Daha fazla bilgi için date komutunun manuel sayfasına bakabilirsiniz.

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

Bu betiği şu an kurtaracak olsaydık onu çalıştırabilirdik ve tarih komutunun çıktısını beklediğimiz gibi verecekti:

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

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

Ve bizim için şu şekilde inşa ederiz:

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

Buna Komuta Değişimi diyoruz. Esas olarak bash'ye "date_formatted" değişkeni geldiğinde parantez içinde komutu çalıştırmamız gerektiğini söylüyoruz. Ardından, "date_formatted" değişkeni adı yerine komutların verdiği çıktılar görüntülenmelidir.

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

Çıktının iki boşluk olduğunu unutmayın. Eko komutunun tırnak işaretleri içindeki boşluk ve değişken önündeki alan her ikisi de görüntülenir. Onların görünmesini istemiyorsanız boşluk kullanmayın. Ayrıca bu ek "echo" satırı olmadan, komut dosyası kesinlikle hiçbir çıktı verecek unutmayın.

Senaryonuza geri dönelim.Şimdi, komutun kopyalama kısmına ekleyelim.

cp -iv $ 1 $ 2. $ date_formatted

Bu, -i ve -v seçenekleri ile kopyalama komutunu çağıracaktır. Birincisi, bir dosyanın üzerine yazmadan önce doğrulama isteğinde bulunacak ve ikincisi, komut satırında neyin olup olmadığını görüntüleyecek.

Sonra, "$ 1" seçeneğini ekledim görebilirsiniz. Komut dosyası oluştururken, bir dolar işareti( $) ve ardından bir sayı gelecek, komut dosyasının çağrıldığında numaralı argümanını gösterecektir.Örneğin, aşağıdaki komutta:

cp -iv Trogdor2.mp3 ringtone.mp3

Birinci argüman "Trogdor2.mp3" ve ikinci argüman "ringtone.mp3" dir.

Yazımıza baktığımızda, iki bağımsız değişkene başvurduğumuzu görebiliriz:

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

İkinci argüman olan $ 2, aynı komut için çıkış dosyası olarak görev yapar. Ancak, farklı olduğunu da görebilirsiniz. Bir süre ekledik ve yukarıdaki "date_formatted" değişkenine başvurduk. Bunun ne yaptığını merak ediyor musun?

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

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

Şimdi datecp komutunu çalıştırdığımda, bu betiği çalıştıracak ve herhangi bir dosyayı yeni bir konuma kopyalama ve otomatik olarak dosya tarihinin sonuna tarih ve saat ekleme izni vereyim. Dosyaları arşivlemek için kullanışlı!

Kabuk betiği, işletim sisteminizin sizin için çalışmasını sağlamaktadır. Bunun olmasını sağlamak için yeni bir programlama dili öğrenmek zorunda değilsiniz. Evdeki bazı temel komutlarla komut dosyası yazmayı deneyin ve bunu ne için kullanabileceğinizi düşünmeye başlayın.

Sen senaryo var mı?Yeni başlayanlar için tavsiye var mı?Düşüncelerinizi yorumlarınızda paylaşın! Bu seride daha fazlası var!