Geliştiriciler için Komut Satırı Araçları

Yayınlanan: 2022-03-11

Günümüzün çevrimiçi dünyasında, uygulama üreticilerinin hem mobil hem de web uygulamalarını tercih etmesiyle, kullanıcıları cezbetme savaşı tüm hızıyla devam ediyor. Masaüstü uygulamaları giderek daha az alakalı hale geliyor. Ayrıca, web uygulamalarının zengin istemcilerinden başka bir şey olmama eğilimindedirler - Electron, tercih edilen popüler platformdur.

Bu, yakında masaüstünden bir platform olarak vazgeçeceğimiz anlamına mı geliyor? Hayır, elbette hayır, öyle demezdim. Ayrıca, GUI uygulamaları son zamanlarda durmuş gibi görünse de, büyümeye devam eden bir masaüstü uygulamaları segmenti var.

Hiç bilgisayar korsanlarının yer aldığı bir film gördünüz mü? Çoğu zaman, bu insanlar bir tür terminal (genellikle koyu bir arka plan ve açık ön plan ile) görüntüleyen monitörlerin önünde çalışırken gösterilir. Bu terminal, sırayla, onları izleyen kişi için bir anlamı olan geçen karakterlerle dolup taşma eğilimindedir.

Örnek resim: komut satırı araçları ve bilgisayar korsanlığı, filmlerde gerçek hayatta olduğundan daha havalı görünüyor

Bilgisayar korsanlarının eylem halindeki bu tür temsilleri genellikle profesyonel geliştiriciler tarafından alay edilir ve sadece eğlence için çeşitli "hacker" efektlerini simüle eden bazı programlar bile vardır.

Ancak gerçek dünyada, komut satırı araçları eğlence değeri için kullanılmaz.

Neden Hala Komut Satırı Arayüz Araçlarını Kullanıyoruz?

Bu makale, komut satırı arabirimi (CLI) araçlarını kullanmanın pratik tarafına odaklanmaktadır. CLI komutlarını bilmek ve kaliteli araçları kullanmak sizi daha üretken hale getirebilir ve ayrıca metinsel arayüzlerle GUI uygulamalarına göre çok daha pratik olan çeşitli otomasyon yaklaşımlarının kapılarını açabilir.

GUI'de, birden çok tıklamanızın tek bir uzun tıklama olarak duyulduğu noktaya kadar tekrarlayan görevleri yapmakta daha iyi olabilirsiniz. Sorun şu ki, bu hala özel bir komut dosyasının verimliliğini geçmeyecek. Dahası, aynı işlemleri manuel olarak gerçekleştirmek hem ek bir bilişsel yük hem de artan insan hatası olasılığını ortaya çıkarır. Her zamanki gibi, insanların sıkıcı, tekrarlayan veya bunaltıcı bulabileceği görevlerin üstesinden gelmek için bilgisayarlara güveniyoruz.

Bir terminal aracının çeşitli arabirim türleri sunabileceğini bilmeye değer. Sadece parametreleri alan ve çıktı sağlayan ls gibi etkileşimli olmayanlar vardır. Paket yöneticilerinde en sık bulunan etkileşimli veya yarı etkileşimli arayüzler vardır. (“Doğrulanmamış kaynaktan yüklemeye devam etmek istediğinizden emin misiniz?”) Ardından, bir terminalin sınırlamalarına uyacak şekilde tasarlanmış etkileşimli GUI uygulamaları olan metinsel kullanıcı arayüzleri (TUI'ler) vardır. Muhtemelen en ünlüsü, son derece popüler (90'larda) Norton Commander'ın bir klonu olan Midnight Commander'dır (mc).

Temel Komut Satırı Araçları

Bir konsol kullanıcısı olmak istiyorsanız, kendinizi minimum ayarlanmış komut satırı geliştirici araçlarıyla - yani temel gereksinimlerle - donatmanız gerekir. Kesinlikle onsuz yaşayamayacağınız şeyler, etkileşimli bir kabuk (uygun sekme tamamlama ile modern bir şeyi hedefleyin) ve bir metin düzenleyicidir .

Örnek resim: temel komut satırı araçları

Şimdi, aracın yazarları tarafından bilinçli ya da bilinçsiz olarak alınan tasarım kararlarının arkasındaki temel olan UNIX felsefesinden bahsedeceğim. Bazı önemli noktalar şu şekilde özetlenebilir:

  • Her şeyi bir dosya olarak ele alın.
  • Sadece bir şey yap, ama iyi yap.
  • Standart girdiden okuyun, standart çıktıya yazın ve hataları standart bir hata akışına iletin.
  • Başarılı olduğunda, dönüş kodu 0. Sıfır olmayan bir değer, bir hata anlamına gelir (tam dönüş koduyla belirtilebilir).
  • Komut zincirleme ve komut dosyası oluşturmaya izin verin.

Kabuk

Bir terminali açarken gördüğünüz ilk şey bir kabuktur. Bu, kullanıcı ile makine arasındaki etkileşimi mümkün kılan kısımdır. Komutlarınızı yorumlar, onları program adlarına ve argümanlara böler ve ona attığınız tüm kabuk komutlarını yürütür.

Tarihsel olarak, birçok farklı kabuk türü olmuştur. En popüler olanlar arasında csh (C Shell) ve Bourne Shell'in çeşitli uygulamaları (genellikle sadece sh olarak bilinir) vardı. Bourne Shell, biraz ilgi gören ve hala meraklıları tarafından kullanılan Korn Shell'e doğru genişledi. Csh şu anda bazı BSD sistemlerinde varsayılan kabuk iken, hemen hemen tüm diğer UNIX benzeri işletim sistemleri bir tür Bourne Shell'i tercih ediyor. Linux dağıtımları bash'ı tercih etme eğilimindeyken, Mac OS X varsayılan seçenek olarak zsh ile birlikte gelir.

Dışarıda başka olasılıklar da var, ancak Windows sistemlerinde Microsoft PowerShell dışında çok daha az popülerler. PowerShell, kısmen zsh gibi etkileşimli UNIX kabuklarından ve kısmen de .NET çalışma zamanından ilham almıştır. UNIX dünyasında yaygın bir kavram olan her şeyi metin olarak ele almak yerine, verilerin nesne yönelimli olarak işlenmesine izin verir.

Microsoft PowerShell, Windows alanında oldukça popüler olmasına rağmen, UNIX kökenli birçok program (en dikkat çekeni Git, Autotools veya Make'dır), Bourne Shell'in bazı varyasyonlarını tercih etme eğilimindedir. Bu nedenle, msys (Windows için Git ile birlikte gelir), Cygwin veya Microsoft'un son WSL'si gibi projeler doğdu. Windows'ta Linux benzeri bir his istiyorsanız, MSys burada en iyi seçimdir. Standart Linux ikili dosyalarını çalıştırabilen tam özellikli bir Linux ortamı istiyorsanız, gitmeniz gereken yol WSL'dir. Aradaki bir şey için - UNIX API'si ancak Windows yürütülebilir dosyası olarak derlenmiş (yalnızca buna neden ihtiyacınız olduğunu gerçekten bildiğinizde kullanın) - Cevap Cygwin'dir.

Editör

Kabuğunuzla tanıştıktan sonra, bazı yararlı beceriler edinmek isteyeceksiniz. Kodlama çalışmalarının çoğu metin yazmak (kod, README'ler, taahhüt mesajları) etrafında döndüğünden, etkileşimli metin editörleri hakkında iyi bir bilgi sahibi olmak önemlidir. Aralarından seçim yapabileceğiniz pek çok şey var ve bir editör herhangi bir geliştirici için en gerekli araçlardan biri olduğundan, muhtemelen hangi editörün en iyi olduğu konusunda da bir o kadar çok görüş vardır.

Örnek resim: bir komut satırı düzenleyicisinin basit bir arayüzü vardır

En popüler metin editörleri iki temel gruba ayrılabilir: Basit metin editörleri ve programlanabilir metin editörleri .

Her ikisi de kod yazmak için harika olabilir, ancak adından da anlaşılacağı gibi programlanabilir olanlar, düzenleyiciyi ihtiyaçlarınıza mükemmel şekilde uyacak şekilde şekillendirme ve özelleştirme yeteneği sunar. Bununla birlikte, daha dik bir öğrenme eğrisine sahip olma eğiliminde oldukları ve kurulum için daha fazla zaman gerektirebileceği için bunun bir bedeli vardır.

Temel Metin Düzenleyicileri

Basit metin düzenleyiciler arasında en yaygın olanı GNU Nano'dur. Aslında, pico editörünün bir klonudur, yani sisteminizde biri yoksa diğerini deneyebilirsiniz. Her ikisine de daha modern bir alternatif, mikro düzenleyicidir. Aynı anda hem basit hem de genişletilebilir bir şey istiyorsanız, bu başlamak için iyi bir yerdir.

Programlanabilir Metin Düzenleyiciler

Birçok geliştirici, Vim ve GNU Emacs gibi farklı kamplardan programlanabilir editörlere güveniyor. Her iki düzenleyici de konsolda veya GUI modunda çalışabilir ve her ikisinin de diğer yazılımlarda bulunan anahtar bağlantıları üzerinde etkisi olmuştur. Her ikisi de yalnızca bir API değil, aynı zamanda yerleşik gerçek programlama dilleri sunar. Emacs LISP'ye odaklanır ve Vim kendi VimL'sini kullanır, ancak aynı zamanda diğer popüler betik dillerine (Lua, Perl, Python veya Ruby gibi) arayüzler sunar. Vim'e Neovim adı verilen daha yeni bir yaklaşımdan da bahsetmeye değer, çünkü ciddi bir takipçi kazanmaya başlıyor.

Biraz kafa karıştırıcı olabilir, ancak Vim'in öncülü olan vi adında bir editör de var (bu arada, " Vi i kanıtlandı" anlamına gelir). Vim'den çok daha basittir, ancak Vim'de yazmak için yeterince güveniniz varsa, vi'yi kullanmanız gerektiğini düşünüyorsanız, bu sizin için zor olmamalıdır.

Pico/GNU Nano ve vi/Vim genellikle çeşitli sistemlere önceden kurulu olduğundan, en azından temellerini kavramak iyi bir fikirdir (Vim'den çıkmak yeni başlayanlar için herkesin bildiği gibi zor bir sorundur). Bu şekilde, uzaktaki bir makinede bir şeyi düzenlemeniz gerekirse, orada hangi düzenleyici olursa olsun hazır olursunuz. Özel cihazınızda, en rahat bulduğunuz herhangi bir düzenleyiciyi kullanmaktan çekinmeyin.

Varsayılan Sistem Düzenleyicisi

Unutulmaması gereken son bir şey, sisteminizin varsayılan düzenleyici olarak adlandırılan şeye sahip olabileceğidir.

$EDITOR ortam değişkeni varsayılan düzenleyiciye işaret eder ve Bourne uyumlu kabuklarda (sh, bash, ksh, zsh) bunu echo $EDITOR girerek görebilirsiniz. Değer kişisel seçiminizden farklıysa, kabuğunuzun çalışma zamanı yapılandırmasına export EDITOR=my-awesome-editor ekleyerek kendiniz ayarlayabilirsiniz ( ~/.profile , ~./bashrc , ~/.zshrc vb.).

Sürüm kontrol sistemleri ve posta istemcileri gibi diğer programlar, daha uzun metin girişine ihtiyaç duyduklarında bu düzenleyiciyi kullanır.

çoklayıcı

CLI'de ciddi şeyler yapmaya başlar başlamaz, herhangi bir zamanda yalnızca bir uygulamayı açık tutabilme sınırlamasıyla karşılaşacaksınız. Kod yazarken, kodu düzenlemek, yürütmek, hataları düzeltmek ve yeniden yürütmek isteyebilirsiniz. Bir hata ararken, günlükleri listelemek ve sunucuya bir istek gönderdiğinizde nelerin günlüğe kaydedildiğini görmek isteyebilirsiniz. Tipik olarak bu, iki uygulama arasında sürekli geçiş yapmak veya birkaç terminal penceresi açmak anlamına gelir.

Bir terminal çoklayıcının size yardımcı olabileceği yer burasıdır. Çoklayıcılardan bahsederken, bazı insanlar hemen konunun GNU Ekranı olduğunu varsayar. Türünün ilk yaygın aracıydı ve bugün hala çok popüler (genellikle varsayılan olarak kurulur). Modern ikamesi, şaşırtıcı olmayan bir şekilde “ terminal çoklu x er” anlamına gelen tmux'tur .

Bu ikisi, belirli bir terminal oturumunda birden fazla pencere açmanıza ve bu oturumlar arasında serbestçe geçiş yapmanıza izin verir. Pencereleri bölmelere ayırmanıza olanak tanır, bu da aynı anda birkaç uygulamayı çalıştırmanıza ve çıktılarını gerçek zamanlı olarak (herhangi bir pencereyi değiştirmeden) gözlemlemenize yardımcı olur. Ayrıca, bir istemci-sunucu modunda çalışırlar, bu da herhangi bir zamanda onları ayırabileceğiniz ve daha sonra geri dönüp çalışmaya kaldığınız yerden devam edebileceğiniz anlamına gelir. Bu son özellik, insanlar kalıcı IRC oturumları istediğinde Screen'in popülaritesine yol açtı.

Çoğu kullanım durumu için, GNU Screen veya tmux sizin için harika olmalıdır, ancak herhangi bir nedenle kaynak açısından çok ağır olduklarını düşünürseniz, daha hafif alternatifler de vardır. dtach/atach var ve abduco var. Kapsamları kasıtlı olarak sınırlıdır, ancak ilgili görevlerini iyi bir şekilde yerine getirebilirler.

Paketleme yöneticisi

Bu noktada, yukarıda belirtilen tüm yazılımların makinenize yüklenmesini düşünmeye başlayabilirsiniz. Bir sorun, araçların her birinin farklı kurulum talimatlarına sahip olmasıdır. Bazen kaynakları indirmeniz ve bunları kendiniz derlemeniz gerekir, bazen bağımsız ikili dosya alırsınız ve bazen ikili paket adı verilen ve genellikle bazı meta verilerle birlikte sıkıştırılmış bir yürütülebilir dosya anlamına gelen ikili paket alırsınız.

Yazılım yükleme sürecini kolaylaştırmak için işletim sistemi yaratıcıları bir paket yöneticisi konseptiyle geldi. Basitçe söylemek gerekirse, bir paket yöneticisi, CLI ve masaüstü uygulamaları için bir uygulama mağazası gibidir. Gerçek uygulama mağazalarından birkaç on yıl önce gelir. Sorun, hemen hemen her sistemin kendi paket yöneticisine sahip olmasıdır. Debian, Ubuntu ve türetilmiş GNU/Linux dağıtımları APT kullanır, Red Hat tabanlı dağıtımlar yum veya DNF'yi tercih eder, diğer Linux dağıtımları yazılım yüklemek için daha egzotik araçlara sahiptir ve farklı BSD klonları da öyle. Yerleşik paket yöneticilerinin yanı sıra, MS Windows için Chocolatey ve Mac OS X/macOS için Homebrew gibi kullanıcı tarafından yüklenenler de vardır. Programınızı nasıl kuracağınıza dair talimatlar yazmak istediğinizde, bu sistemlerin her biri için vakalar yazabilirsiniz. Biraz fazla gibi görünüyor, değil mi?

Neyse ki bahsedilen sistemlerin sonuncusu olan Homebrew, Homebrew'dan GNU/Linux sistemlerine bir bağlantı noktası olan Linuxbrew sayesinde en taşınabilir olanı olabilir. İşin komik yanı, Microsoft Windows'ta benzer bir kullanıcı deneyimi yaşamak istiyorsanız WSL'de bile çalışıyor. Yine de WSL'nin resmi olarak desteklenmediğini unutmayın.

Peki, taşınabilirliğin yanı sıra Homebrew başka neler sunabilir? Her şeyden önce, sistem paketlerine müdahale etmez, bu nedenle yüklediğiniz her şey işletim sisteminden ayrı bir katmanda bulunur. Ayrıca, paketleri kurmak için genellikle kök izinlerine gerek yoktur. Bu nedenle, kararlı ve test edilmiş sistem paketlerine sahip olabilirsiniz, ancak aynı zamanda sistemin kararlılığından ödün vermeden daha yeni sürümlerini kontrol edebilirsiniz.

Editörleri test etmek istiyorsanız, Homebrew veya Linuxbrew olan bir sistemde yapmanız gereken tek şeyin şu komutu çalıştırmak olduğunu daha önce belirtmiştim:

brew install emacs micro nano vim neovim .

parlak şeyler

Daha önce tartıştığımız şey şüphesiz iş için yararlıdır. Ancak gerekli olmasa da günlük hayata rahatlık getiren uygulamalar da var. Onlara ihtiyacın olmayabilir, ama onları her zaman bilmeye değer.

Etkileşimli Filtre

Komut geçmişini aramak sıkıcı olabilir. Hem bash hem de zsh Ctrl+R tuş bağlama özelliğine sahip olsa da, bir seferde yalnızca bir değişiklik gösterir. Ayrıca, daha önce kullandığınız metni tam olarak girmeniz gerekir. Bu oldukça yaygın bir işlem olduğundan, komut satırını kullanmaya başladığınızda, iyileştirme için iyi bir yer gibi görünüyor.

fzy, percol, peco veya fzf gibi etkileşimli filtreler, uzun metin satırlarını filtrelemenize yardımcı olur. Bu, yukarıda bahsedilen komut geçmişi, bir proje dizinindeki tüm kod satırları veya find . . Buradaki genel fikir, önce size mevcut tüm satırları sunmak ve ardından eşleşmeyen her şeyi filtrelemek için bulanık bulma algoritmalarına güvenmektir.

Örneğin, Ctrl+R'yi fzf'ye bağlamak, okları kullanarak yukarı ve aşağı gezinebileceğiniz en son komutların bir listesini gösterir veya yalnızca içinde bir yerde Git'i içeren komutları göstermek için git yazabilirsiniz. Kişisel olarak, etkileşimli filtresi olmayan bir kabukla çalıştığımda, aniden kendimi biraz kaybolmuş hissediyorum. Bu özellik gerçekten zorlayıcı!

Ayrıca, etkileşimli filtrenizi programlanabilir metin düzenleyicinizde kullanılabilir hale getirebilirsiniz. Bu şekilde, kabuğunuz ve düzenleyiciniz arasında birleşik arama yeteneklerine sahip olacaksınız.

Etkileşimli Gezgin

Facebook PathPicker, çoğunlukla C++ projeleriyle çalışırken çok yardımcı oldu. Derleyici tarafından oluşturulan hata günlüğü oldukça büyük ve oldukça kötü olabilir ve bu günlüğün içindeki gerçek yolları bulma yeteneği bir üretkenlik lütfuydu.

Herhangi bir metin dosyasında veya tmux ile kullanıldığında ekranınızın içeriğinde fpp, dosya yolları dışındaki her şeyi filtreler. Ardından, bu yollardan birini veya daha fazlasını seçebileceğiniz ve bunlarla bir komut çalıştırabileceğiniz bir kullanıcı arayüzü sunar. En yaygın yanıt, dosyaları elbette varsayılan eylem olan bir düzenleyicide açmak olacaktır.

Git kullanıcı arayüzü

Muhtemelen üzerinde çalıştığınız projelerden en az biri Git'i sürüm kontrol sistemi olarak kullanıyor. Git CLI, tamamen güçlü olmakla birlikte, mükemmel kullanıcı deneyiminin zirvesi değildir. Git help $SUBCOMMAND 'daki tüm seçenekleri okurken sizi biraz stresten kurtarmak için, tig'e göz atmanızı tavsiye ederim. log veya blame gibi ondan yararlanan işlemler için güzel bir konsol kullanıcı arayüzü sunar.

GIt kullanıcılarına yardımcı olmayı amaçlayan başka bir araç, Fix All Conflicts'in kısaltması olan fac'tır. Tahmin edebileceğiniz gibi, birleştirme veya rebases yaparken çatışmalarla karşılaştığınızda işe yarar. vimdiff gibi diğer birleştirme araçlarına bir alternatiftir.

Dosya Yöneticisi

90'larda herkesin iki bölmeli bir dosya yöneticisi istediği bir zaman vardı. Trend Norton Commander ile başladı. Diğerleri de aynı yolu izledi, ancak hala istikrarlı bir kullanıcı tabanı gören Midnight Commander. En belirgin kullanım örneği, yerel dosyaları işlemek için mc kullanmaktır, ancak bu, uzak makinelerle çalışırken de çok kullanışlıdır.

Çoğu komut satırı programı gibi, çok hafiftir, bu nedenle onu ssh üzerinden çalıştırmakta sorun yoktur ve destekleyici FTP ve FISH protokolleri sayesinde, bir bölmede yerel bir dosya sistemi ve diğer bölmede de uzak bir dosya sistemi görünür hale getirebilirsiniz. Dosya adlarını scp'ye argüman olarak yazmaktan veya kopyalamaktan kaçınmak istediğinizde bu özellik.

Sadece Eğlence İçin CLI Araçları

"Çalışmak ve oyun oynamamak Jack'i sıkıcı bir çocuk yapar" derler. Sadece eğlencenize hizmet eden birçok program, komut satırı ve başka şeyler var. Rogue video oyunu bu kategoriye girer. Hatta tüm oyun türüne isim bile verdi! Diğer popüler oyuncaklar, örneğin CI komut dosyalarınızda bir yerde kullanırsanız gününüzü biraz daha az sıkıcı hale getirebilecek olan servet ve kovboydur.

Ancak bazılarımız için konsol kullanmanın en büyük cazibesi, filmlerdeki bir bilgisayar korsanı gibi hissetmektir. No More Secret ve Hollywood Hacker bu grubu iyi temsil ediyor. Biri sizi çalışırken izlediğinde deneyin ve hacker itibarınız kesinlikle yükselecektir!

Uygulamada Komut Satırı

Peki, kabuğun, düzenleyicinin ve çeşitli uygulamaların tüm anahtarlarının nasıl kullanılacağını öğrenmek için harcanan saatleri dengeleyen komut satırında bu kadar çekici olan nedir? Kısa cevap, iki şeyden gelen üretkenliktir :

  • Birincisi, size yalnızca bir terminal penceresi sunulduğunda ve başka bir şey olmadığında, dikkatinizi dağıtacak fazla bir şey olmadığı için daha yoğun bir şekilde odaklanabilirsiniz. Açılan bildirim yok, reklam yok, güzel yavru kedi resimleri yok. Sadece sen ve hedefin.

  • İkinci şey otomasyon. Sıklıkla birleştirilmiş birkaç eylemi bir komut dosyasına koyabilir ve her seferinde hepsini elle yazmak yerine daha sonra bir bütün olarak çağırabilirsiniz. Kabuğunuzun geçmişinde arama yaparak, bir zamanlar yazdığınız özellikle karmaşık bir komuta hızla geri dönebilirsiniz. Temel olarak, her şeyi kaydedebilir ve yeniden oynatabilirsiniz ve kod, yaptığınız şeyin bir belgesi olarak mevcuttur.

Takma ad ekleme yeteneği de kazanımlara katkıda bulunur. Örneğin, kendimi Git'te aynı şeyi mükemmel olana kadar güncelleyerek (şimdilik) taahhütler hazırlarken buluyorum. İstenen dosyaları hazırladıktan sonra git carmh çalıştırıyorum. Bunu kılavuzda aramaya çalışmayın, çünkü bu benim özel takma adım anlamına gelir commit --amend --reuse-message=HEAD . Kesinlikle bazı yazarak kaydeder.

Mesele şu ki, insanlar aynı eylemleri tekrar tekrar yapmaktan sıkılıyor ve can sıkıntısı odağı azaltıyor. Bu, hatalara ve hatalara yol açabilir. Onlardan kaçınmanın tek yolu, yüksek odaklı ve düşük odaklı eylemleri birbirine karıştırmamaktır. Kod yazmak yüksek odaklıdır ve bir taahhüt mesajını ve içeriğini gözden geçirmek yüksek odaklıdır, ancak taahhüt inceleme aşamasına geçmek için burada ve orada birkaç mekanik tıklamayı tekrarlamanız gerektiğinde, odağınız azalır. Komut satırı elbette bu tür mekanik faaliyetlerden bağımsız değildir, ancak otomasyon sayesinde bunların çoğundan kaçınabilirsiniz.

Daha Fazla Keşif

Bu makalede bahsedilen komut satırı araçlarının bir kısmının veya tamamının zaten farkında olabilirsiniz. Okurken yeni ve faydalı bir şeyler öğrenmiş olabilirsiniz. Eğer öyleyse, mükemmel—buradaki amacım farklı araçların kapsamlı bir değerlendirmesini ve karşılaştırmasını sunmak değil, bazılarını faydalı bulabileceğiniz umuduyla günlük işlerimde faydalı bulduğum birkaç önemli aracı göstermekti. fazla.

Dışarıda çok daha ilginç komut satırı programları var ve bunlarla ilgileniyorsanız, bugün mevcut olan en iyi komut satırı araçlarından bazılarının Awesome Shell küratörlüğünde listesini kontrol etmenizi öneririm.

GUI uygulamalarının çoğunun terminal karşılığı vardır. Buna web tarayıcıları, e-posta istemcileri, sohbet istemcileri (IRC, Slack, XMPP), PIM paketleri veya elektronik tablolar dahildir. Bahsetmediğim herhangi bir iyi program biliyorsanız, lütfen bunları yorumlarda belirtin.