Bash Nedir? Komut Satırı Neden Bu Kadar Önemli?

Fatih Küçükkarakurt

Fatih Küçükkarakurt

8 min read

Bash, Unix tabanlı işletim sistemleri için bir komut satırı dilidir. Bilgisayarınızı bir geliştirici gibi kontrol etmenizi sağlar. Ancak bu sadece yazılım geliştiricileri için önemli değildir. Bash öğrenmek, verilerle çalışan herkes için değerlidir.

İçerik

Bash Nedir?

Bash, Unix komut satırı arayüzüdür (CLI). Ayrıca terminal veya komut satırı olarak adlandırılır. Bilgisayarlarımızdaki dosyalarla, bir GUI (grafik kullanıcı arayüzü) kullanmaktan çok daha verimli ve güçlü bir şekilde çalışmamızı sağlayan bir komut dilidir.

Grafik kullanıcı arayüzlerinden (GUI'ler) komut satırı arayüzüne geçiş yapmak çok zor olabilir. Peki buna rağmen neden bash öğrenmeliyim?

İşte bash öğrenmeniz ve komut satırını kullanmanız için birkaç neden:

Bash Oldukça Popülerdir

2020 Stack Overflow Geliştirici Araştırması'na göre, bash, en çok kullanılan diller arasındadır. Ayrıca bu anket sonucunda göre bash, Python ile kıyaslandığında, daha yüksek ücretlere imkan tanıyor diyebiliriz.

Ayrıca bash, en çok sevilen teknolojiler listesinde yine üst sıralarda yer alıyor.

Bunu da belirtmekte yarar var ki, StackOverflow'un araştırması her türden yazılım geliştiricilerini ve mühendisleri kapsıyor. Ancak komut satırı veri bilimcileri için özellikle önemlidir. Çünkü Bash/Shell, Python, IPython/Jupyter, TensorFlow ve PyTorch gibi Veri Bilimi teknolojileriyle büyük ölçüde ilişkilidir. Bu aynı zamanda Python Software Foundation tarafından gerçekleştirilen Python Geliştirici Anketi tarafından da desteklenmektedir.

Komut Satırı Becerileri ve Veri İşlemleri

Bir veri bilimcinin görevinin bir kısmı, düzenli bir şekilde belirli bilgilerin mevcut olduğundan emin olmaktır. Çoğu zaman bu veriler aynı şekilde alınır, işlenir ve görüntülenir. Komut satırı bu amaç için çok uygundur çünkü komutlar kolayca otomatikleştirilir ve kopyalanır. Bunu şöyle bir örnekle anlatmama izin verin.

İşvereniniz veri analitiğine yatırım yapmaya karar veriyor. Ekibe birkaç veri uzmanı katılacak. Makinelerinin başlamak için ihtiyaç duydukları her şeye sahip olmasını sağlamakla görevlendirildiniz. Bir CLI (komut dili yorumlayıcısı) ile çalışabiliyorsanız, her şeyi otomatik olarak kuracak, yapılandıracak ve test edecek birkaç komut dosyası yazabilirsiniz. Yapamazsanız, bir GUI'ye başvurmanız ve aynı fare ve tıklama hareketlerini birkaç makinede art arda yapmanız gerekir.

Bu, yapılan işlem basamaklarının veri bilimi süreçlerini daha ölçeklenebilir ve tekrarlanabilir hale getirmeye nasıl yardımcı olabileceğinin sadece basit bir örneğidir.

Bash Öğrenmek Size Özgürlük Verir

Bir veri bilimi rolünde, GUI'lere tıklamak yerine terminali kullanabiliyorsanız, genellikle daha fazla esnekliğe sahip olduğunuzu göreceksiniz.

Komut satırı, diğer programları çalıştıran bir program olduğundan ("shell" adı da buradan gelmektedir), programlar arasındaki etkileşimi komut satırında ayarlamak genellikle daha kolaydır.

Bash komutlarında ustalaştıktan sonra, komut dosyaları yazmak nispeten kolaydır ve shell komut dosyaları, her türlü veri ardışık düzeni ve iş akışını oluşturmayı çok daha basit hale getirir. Genel olarak, shell'in nasıl kullanılacağını bilmek, bilgisayarınızla etkileşim kurmak için size ikinci bir seçenek sunar.

GUI'yi istediğiniz zaman kullanabilirsiniz. Ancak komut satırı (bash / shell), ihtiyaç duyduğunuz zamanlar için size daha çok güç ve kontrol sağlayabilir.

Metin Dosyaları ile Çalışmak

Metin dosyaları, verileri depolamanın ve işlemenin en yaygın yöntemlerinden biridir. Hemen hemen her veri bilimi projesi, metin dosyalarının olduğu çalışmalar içerecektir. Metin dosyalarını hızlı ve verimli bir şekilde kullanabilmek, bir veri bilimcisi için çok yararlı bir beceridir.

Shell, AWK ve sed gibi dosyalar hakkında bilgi sahibi olmaya ve veri temizlemeyi kolaylaştırmaya yardımcı olan çok güçlü metin işleme araçlarına sahiptir.

Örneğin, aşağıdaki kod yapısında, alan ayırıcı olarak virgül kullanarak, ikinci alan değerinin Anatoliacode olduğu, a_csv_file adlı bir dosyanın, birinci ve üçüncü sütunlarını yazdırmak için AWK'yı kullandım.

awk 'BEGIN {FS=","} {if ($2=="Anatoliacode") {print $1 $3} } a_csv_file'

Gördüğünüz gibi, ihtiyacımız olan sadece tek satır bir kod parçacığı.

Az Kaynak ile Çalışmak

Sınırlı bilgi işlem kaynakları ile çalışırken veya sadece hızınızı en üst düzeye çıkarmak istediğinizde, bash kullanmak neredeyse her zaman bir GUI kullanmaktan daha iyidir çünkü bir GUI kullanmak, kaynakların grafik çıktısını oluşturmanın amaçlandığı anlamına gelir.

Bu hem lokal hem de uzaktan çalışma için geçerlidir. Uzaktan bağlanırken, GUI'ler terminallerden çok daha fazla bant genişliği tüketerek kaynakları boşa harcar.

Ayrıca, bir GUI kullanırken Latency, yani “uyarım ve yanıt arasındaki zaman aralığı” daha yüksek olacaktır ve bu, bir veya iki saniye farkla çalışmaktan olan bir fareyi kontrol etmeye çalışıyorsanız gerçekten sinir bozucu olabilir.

Sadece bash komut satırına yazıyorsanız, gecikme muhtemelen daha düşük olacaktır. Ayrıca imlecinizin herhangi bir zamanda tam olarak nerede olduğunu bildiğiniz için kullanımı daha kolay olacaktır.

Bulut için Bash Becerilerine İhtiyacınız Var

Bulut hizmetleri genellikle bir komut satırı arayüzüne bağlanır ve bunlar aracılığıyla çalıştırılır. Bu, özellikle yerel bilgi işlem kaynaklarınızın gerçekleştirmek istediğiniz görevler için yetersiz kalacağı derin öğrenme gibi, daha gelişmiş veri bilimi çalışmaları için gerçekten önemlidir. Nucleus Research'ün 2018 tarihli bu makalesinden şöyle bir alıntı yapmak istiyorum.

Geçen yılki araştırmada, derin öğrenme projelerinin yüzde 10'undan daha azı, yerinde yürütülüyordu. Bu eğilim hızlandı ve 2018'de projelerin yalnızca yüzde 4'ü şirket içinde yürütülüyor.

Aynı makaleye göre, "Bugün derin öğrenmenin yüzde 96'sı bulutta çalışıyor."

Derin öğrenme gibi gelişmiş teknikler ile ilgileniyorsanız, verilerinizi verimli bir şekilde buluta taşımak için bash becerilerine ihtiyacınız olacaktır.

Unix Shell Becerileri

Yalnızca birkaç popüler shell (bash, zsh, fish, ksh, tcsh, cmd, Windows PowerShell, vb.) var ve bunlar, gerçekten çok benzerdir. Aralarında geçiş yapmak çok kolaydır.

Örneğin, öğrendiğiniz bash komutları, Mac'ler ve Linux bilgisayarlar gibi Unix tabanlı makinelerde çalışacaktır. Ancak aynı komutların çoğu, Windows komut ekranında veya Windows PowerShell'de çalışır.

Bu çapraz uyumluluk, bir tür komut satırı arayüzü gerektiren çevrimiçi hizmetleri kullanırken oldukça yararlıdır. Sistemleri bash kullanmasa bile, çok kısa bir sürede yeni shell yapısına alışabilirsiniz.

Öte yandan GUI'ler sonsuz çeşitliliktedir ve birini öğrenmek, diğerlerini öğrenmenize çok yardımcı olmayacaktır.

Bash Sizi Hızlandırır

Araştırmalar, yüksek öğrenme eğrisine rağmen klavye kullanımının daha verimli olabilmesine karşın, fare kullanımının da oldukça fazla olduğunu gösteriyor.

Microsoft Word'ün 251 deneyimli kullanıcısına, en sık karşılaşılan komutlar için yöntem seçimlerini değerlendiren bir anket verildi. Herkesin beklediğinin aksine, çoğu deneyimli kullanıcı nadiren verimli klavye kısayollarını kullandı ve bunun yerine simge araç çubuklarının kullanılmasını tercih etti.

Klavye kısayollarının gerçekten de en verimli yöntem olduğunu doğrulamak için ikinci bir çalışma yapıldı. Altı katılımcı, menü seçimini, simge araç çubuklarını ve klavye kısayollarını kullanarak ortak komutları uyguladılar. Klavye kısayolları, beklendiği gibi en verimli olanıydı.

Başka bir deyişle: Bir GUI ile hızlı bir şekilde çalışıyormuş gibi hissediyor olsanız bile, en azından bazı görevler için komut satırında daha verimli olma şansınız yüksektir. Ayrıca tüm faaliyetlerinizi komut satırından takip etmek çok kolay olduğu için, denetleme ve hata ayıklama çok daha kolaydır. Shell ile yaptığınız her eylemi izlemek için kolayca günlüğe bakabilirsiniz, oysa bir GUI ile çalışırken, yanlış bile tıklama hataya yol açarsa, muhtemelen kaydı olmayacaktır.

Unix Shell Her Yerde Kullanılabilir

Yalnızca Mac ve Linux işletim sistemlerinde yerleşik olmasına rağmen, Windows kullanıcıları yine de WSL , Cygwin ve MinGW gibi araçlarla partiye dahil olabilirler.

Bu, öğrendiğiniz komut satırı becerilerinin hemen hemen karşılaştığınız her bilgisayarda (kişisel işletim sisteminiz dahil, hangi işletim sistemini kullanırsanız kullanın) kullanılabileceği anlamına gelir.

Komut Satırı Basittir

Komut satırını kullanmanın birkaç yüz komut bilmenizi gerektirdiği konusunda bir yanlış anlayış var. Aslında, evet komutların yüzlercesi kullanılabilir. Ancak veri bilimi görevlerinin çoğunu yapmak için bu komutların sadece küçük bir yüzdesi kullanılıyor.

Eğer sizi ikna edemediysem, The Linux Command Line kitabından bir alıntı yapmama izin verin:

Üstelik bu link ile "The Linux Command Line" kitabının PDF uzantılı haline, ücretsiz bir şekilde ulaşabilirsiniz.

"Windows ve Linux arasındaki farkı açıklamam istendiğinde, genellikle bir oyuncak benzetmesi kullanıyorum. Windows bir Game Boy gibidir. Mağazaya gidersiniz ve kutudan yepyeni bir tane satın alırsınız. Onu eve götürürsünüz, açarsınız ve onunla oynarsınız. Güzel grafikler, sevimli sesler... Yine de bir süre sonra beraberinde gelen oyundan bıkarsınız, bu yüzden mağazaya geri dönüp bir tane daha satın alırsınız. Bu döngü defalarca tekrar eder.

Son olarak, mağazaya geri dönersiniz ve tezgahın arkasındaki kişiye "Bunu yapan bir oyun istiyorum!" dersiniz. Böyle bir oyunun var olmadığı, çünkü ona "piyasada talebin" olmadığı cevabını alırsınız. Sonra, "Ama sadece bu şeyi değiştirmem gerekiyor!" dersiniz. Tezgahın arkasındaki kişi değiştiremeyeceğinizi söyler. Oyuncağınızın, başkalarının ihtiyacınıza karar verdiği oyunlarla, sınırlı olduğunu keşfedersiniz.

Linux ise dünyanın en büyük Kurulum Seti gibidir. Açarsınız ve bu sadece büyük bir parça koleksiyonudur. Çok sayıda çelik destek, vida, somun, dişli, kasnak, motor ve ne yapılacağına dair birkaç öneri olur. Böylece onunla oynamaya başlarsınız. Önerilerden birini ve ardından diğerini oluşturursunuz.

Bir süre sonra ne yapacağınıza dair kendi fikirleriniz olduğunu keşfedersiniz. İhtiyacınız olan her şeye zaten sahip olduğunuz için mağazaya geri dönmek zorunda değilsiniz. İstediğinizi yaparsınız. Elbette ki oyuncak seçiminiz kişisel bir şey. Ama sen, tüm bunlara rağmen hangi oyuncağı daha tatmin edici bulursun?"

Son Söz

Bash, komut satırları, genel olarak şu siyah ekranlar... Onlar her zaman sizin en iyi dostlarınız arasında yer alacaklar. Basit araştırmalar ile onları öğrenebilirsiniz. Eğer bir sorunuz olursa lütfen mail atmaktan, sosyal medya hesaplarından yazmaktan çekinmeyin.

Umarım açıklayıcı ve bilgilendirici bir makale olmuştur. Kendinize dikkat edin.

Mutlu Kodlamalar.

Anatoliacode Makale Aboneliği

Bize abone olarak tüm makaleleri ilk siz okuyabilirsiniz. Ayrıca asla reklam veya spam yapmıyoruz.