Ana sayfa→Yazılım & İşletim Sistemleri
Yazılım & İşletim Sistemleri

Linux Komut Takma Adı Sistemiyle Tüm İş Akışımı Yönetiyorum: Artık 30 Karakter Yerine 2 Karakter Yazıyorum.

Uzun bir süre .bashrc dosyama yaptığım düzenlemelerin çoğu, sürekli kullandığım ve her seferinde yazmak istemediğim anahtarlar için küçük kısaltmalardan…

User Avatar
Alper DemirEditör
4 dk okuma

Uzun bir süre .bashrc dosyama yaptığım düzenlemelerin çoğu, sürekli kullandığım ve her seferinde yazmak istemediğim anahtarlar için küçük kısaltmalardan ibaretti; tıpkı ls -la gibi. Ayrıca birkaç git kısaltması ve fonksiyonlara dönüştürdüğüm bazı zincirleme komut da içeriyordu. Bunlar hoş birer artıydı ve ben de kısaltma oluşturarak çıkarabileceğim rahatlığın neredeyse tamamını zaten elde ettiğimi sanıyordum.

Daha çok kısaltma oluşturmamı engelleyen temel şey, yaptığım rutin işlerin çoğunun yalnızca statik komutlara yönlendiren kısaltmalardan yararlanamamasıydı. Bazen belirli bir sırayla işlem yapmam gerekir ya da bir komut, çalıştırma seferlerine göre değişen belirli argümanları alması gerekir.

Sonunda bu sorunu, alias sistemimdeki her şeyi fonksiyonlara bağlayarak çözdüm. Artık hepsine, kendi baş harflerimden dolayı, yazması hızlı ve unutulmaz olduğu için kb adını verdiğim aynı iki harfli komutla erişebiliyorum.

SayarBilgi sitesini Google’da tercih edilen kaynak olarak seç
A screenshot showing the bashrc file on Ubuntu Linux
A screenshot showing the bashrc file on Ubuntu Linux

Kısaltmalar belli bir noktaya kadar işe yarar

Mantık eklemeniz gerekiyorsa fonksiyonlar daha iyidir

          Kısaltmalar işe yarar, ama son derece basittirler. Aslında yaptıkları şey dizge değiştirmedir. Neredeyse herkesin bildiği yaygın bir örnek ll’dir; kabuk, komutu çalıştırmadan önce onu ls -la olarak genişletir. Birkaç tuşa basmayı sağlar, ama davranışı değiştiren bir koşul ya da argüman eklemeniz gerektiğinde o kadar da yararlı değildir.

          Fonksiyonlar buna karşılık, bir komuta ya da komut dizisine mantık eklememizi sağlayan mini Bash betikleridir. Dinamiklerdir; farklı dizinlerden ya da farklı koşullar altında çağrılmaları sonucu değiştirebilir. Projemi başlatan komut bunun güzel bir örneğidir:

          proj

          () {
           

          cd

          ~/dev/

          $1

          &&

          source

          venv/bin/activate && tmux new -s

          $1

          }

          Hangi komutu manuel olarak kaç kez yazdığımı sayamam, hepsini bir fonksiyonun içine koymadan önce. Şimdi yapmam gereken tek şey proj yazıp bir argüman vermek (bu durumda budget), böylece doğru proje dizinine gitmek, sanal ortamı aktifleştirmek ve aynı isimle yeni bir tmux oturumu açmak.

          Bu noktada, iş akışımın en yaygın kısımlarını kapsayan bir düzine yakın fonksiyon biriktirdim. Yedekleme için biri, dosya transferi için biri, farklı sunuculara SSH ile bağlanmak için biri ve hatta YouTube‘dan video indirmek için biri dahil olmak üzere birçoğu var. Tüm özel takma adlarımı ve fonksiyonlarımı ayrı bir .bash_shortcuts dosyasında tutuyorum ve bunu .bashrc dosyasının en başında source ile yüklüyorum. Böylece her şeyin daha taşınabilir ve düzenli olduğunu düşünüyorum.

          Bir yönlendirici takma adlarımı temizlememe yardımcı oldu

          Artık bir şeye ne isim verdiğimi unutsam önemli değil

          40’dan fazla takma ad ve fonksiyona sahip olmanın sorunu, bunların bazılarına ne isim verdiğimi kaçınılmaz olarak unutmam. Bu özellikle her iki haftada bir kullandığım birkaç tanesi için geçerli. Bu sorunun çözümü, argümanları şöyle bir case ifadesi üzerinden yönlendiren iki harfli yönlendiricim:

          kb

          () {

          case

          “

          $1

          “

          in

          deploy) ./deploy.sh

          “

          $2

          “

          ;;
          backup) rsync -a ~/data/ /mnt/

          $2

          / ;;

          sync

          ) git pull && git push ;;
          *)

          echo

          Bilinmeyen komut:

          $1

          “

          ;;

          esac

          }

          Yukarıdaki kod, nasıl çalıştğına dair bir fikir edinmeniz için basitleştirilmiş bir örnek. Yani kb backup external yazsaydım, rsync dosyaları veri dizinimden takılı olan harici diskime gönderirdi.

          Bu takma adların hepsi için bir yönlendirici kullanmanın iki nedeni var. İlki, gerçek komutlarla çışma konusunda endişelenmememe olanak tanıması. Böylece deploy, backup ve sync gibi kelimeleri özgürce kullanabilirim; “kb” öneki sayesinde sistemimdeki PATH içindeki benzer isimli herhangi bir komutla çışmazlar.

          İkinci neden ise, hatırlamakta zorlandığım bir takma adı kolayca arayabilmem. Tek başına “kb” yazmak, alt komut listesini fzf’ye (belirsiz arama) yönlendirir; dolayısıyla birini unuttuğumda takma adların aranabilir bir listesine sahip olurum. İşte bu, yukarıda bahsettiğim case ifadesinin tam üstüne yerleştirildiğinde şöyle görünüyor:

          kb

          () {

          if

          [ -z

          “

          $1

          “

          ];

          then

          local

          cmd
          cmd=$(

          printf

          “deploy\nbackup\nsync\nenvreset\n”

          | fzf –prompt=

          “kb > “

          )
          [ -n

          “

          “

          ] && kb

          “

          “

          # case ifadesi

          Bir argüman verilmediğinde, bu liste önce bu fonksiyon tarafından yakalanır ve bana seçebileceğim bir takma ad listesi sunar. Aradığım şeyi seçebilirim; o da beni aşağıdaki case ifadesine yönlendirir. Abartılı mı? Muhtemelen, ama bana şaşırtıcı sayıda kez yardımcı oldu.

          Kısayollar çift keskin bir bıçak

          Takma adların ardındaki komutları hatırlamaya çalış

          Takma adlarım ve fonksiyonlarımı yeterince uzun süre kullandıktan sonra, basitleştirmeyi amaçladıkları gerçek komutların bazılarını hatırlamayı bıraktığımı fark ediyorum. Bu, en çok yeni bir makinede olduğumda ortaya çıkıyor; kas hafızamdan özel takma adlarımı çağırmaya başladığımda, karşısına Bash isteminden bir hata çıkmasıyla karşılaşırım. Bazen, genellikle yalnızca birkaç tuş vuruşunda hatırlayabildiğim uzun komut dizisini yazmanın nasıl yapılacağını bir dakika boyunca düşünmek zorunda kalırım.

          Bu arada büyük bir endişe de yok, çünkü tüm takma adlar ve işlevler, herhangi bir anda kolayca başvurabileceğim, düzgünce düzenlenmiş düz metin dosyasında yer alıyor. Yine de her Linux komutunu her zaman ezberlemem beklenemez. Bazen notlara sahip olmak faydalı olur ve ben de .bash_shortcuts dosyayı bunun bir uzantısı gibi görüyorum.

          Her şeyi elle yazmak çok yavaş

          “kb” yazmak, 30 karakter yazmaktan çok daha hızlı, ama onu sevmemin asıl nedeni bu değil. Çalışmaya hazır olduğum her üç ya da dört komutu aynı rutin üzerinden çalıştırmak zorunda kalmaktan sıkıldım. Karmaşık işlevleri saniyeler içinde ortaya çıkarmak, terminal kullanımının en sıkıcı kısmını otomatikleştirmeye benziyor.

          İlginizi Çekebilir: Windows On Yıllardır Start Menüsü Aramalarını Bing’e Yönlendiriyor: Yeni Anahtar Bu Sorunu Çözüyor →
          Kaynak: XDA Developers ↗Kaynak yazarı: Korbin Brown
          💬 SayarBilgi Topluluğu

          Bu Gelişmeyi Toplulukta Değerlendirin

          Haber hakkındaki düşüncelerinizi, donanım deneyimlerinizi ve teknik sorularınızı topluluk üyeleriyle anlık olarak tartışın.

          Topluluk Canlı Akışı →
          💬 Topluluk Masası & Tartışma

          Bu gelişme hakkında düşüncelerinizi, donanım deneyimlerinizi veya sorularınızı Topluluk Forumumuzda paylaşın.

          Foruma Katıl & Yanıtla ➔
          Forumda sor / tartış
          TOPLULUĞUN SESİ

          Söz sizde.

          1 yorum

          Deneyiminizi, sorularınızı ve katkılarınızı paylaşın. E-posta adresiniz yayımlanmaz.

          Sohbete katıl

          E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

          Yorumunuz yayımlanmadan önce onay bekleyebilir.

          BİR SONRAKİ OKUMA

          Merak etmeye devam

          Tümünü gör ↗

          Neyi merak ediyorsun?

          En az 3 karakter yazın.

          Keşfet