Takma adlar
Terminali Linux'ta kullanmak, özellikle tekrarlanan işlemlerde bir GUI kullanmaktan daha hızlı ve daha verimli olabilir. Bundan en iyi şekilde yararlanmak için kabuğun birkaç sırrını bilmek yardımcı olur.
Kendinizi sık sık aynı komut seçeneklerini tekrar tekrar yazarken buluyor musunuz? Bazen doğru seçenekleri hatırlamakta güçlük çekiyor musunuz? Sadece tembel misiniz ve mümkün olan her yerde yazmaktan kaçınmak mı istiyorsunuz? Bunlardan herhangi birine evet yanıtı verdiyseniz, takma adlar tam size göre.
Zaten ayarlanmış bazı kabuk takma adlarınız var. Bunları listelemek için şunu yazın:
takma ad
bunun gibi girdileri döndürecek olan (Ubuntu'dan):
takma ad ll='ls -alF'
takma ad ls='ls --color=auto'
Bu örneklerden ilki basittir - ll yazarsanız, ls -A çalışır. İkincisi daha akıllıdır, takma ad komut adıyla aynı olduğundan, eski ls davranışı kaybolur ve her zaman --color=auto seçeneğiyle çalışır.
Kendinizi her zaman belirli komutlarla belirli seçenekleri kullanırken bulursanız, bunun gibi takma adlar, bu seçenekleri etkili bir şekilde varsayılanlar yapar.
Takma ad, komut satırının geri kalanı yorumlanmadan önce genişletilir, yani:
XYZ
olur
ls -alF XYZ
Bu takma adları hatırlamak her zaman kolay değildir, ancak korkmayın; alias komutunun çıktısında olduğu gibi tamamen aynı sözdizimini kullanarak kendi takma adlarınızı oluşturabilirsiniz:
alias myalias='bir komut --seçenek1 --seçenek2'
Bir komutu kendi adına takmak güzel bir numaradır, ancak o zaman orijinal komutu kullanmanız gerekirse ne olur? Endişelenmeyin - geliştiriciler bunu düşündü. Komutun önüne bir ters eğik çizgi koyun, takma adınız yok sayılır:
\ls Belgeler
Profiller
Terminal deneyiminizi takma adlar ve özel istemlerle özelleştirebilirsiniz, ancak bunları daha da kullanışlı hale getirmek için, bir terminal açtığınızda bunları otomatik olarak uygulamanın bir yoluna ihtiyacınız vardır.
Bu, bir kabuk oturumu açtığınızda okunan ve çalıştırılan komutları içeren bir dosya olan profiliniz aracılığıyla yapılabilir.
İlki genel profil ayarlarını içeren /etc/profile olmak üzere okunan birkaç konum vardır . Bu da /etc/profile.d içindeki tüm dosyaları çalıştırır , bu da varsayılan profile dokunmadan genel ayarların eklenmesini kolaylaştırır.
Daha sonra kullanıcının profili /.bash_profile, /.bash_login ve /.profile profillerinden birinden okunur . Bu dosyalardan yalnızca ilki çalıştırılır ve buradaki ayarlar, her ikisinde de aynı şey ayarlanmışsa genel profildekileri geçersiz kılar.
Profil, her satırda bir tane olmak üzere, kabuk başladığında çalıştırılan bir kabuk komutları kümesidir. Bunlar takma adlar, ortam değişkenleri ayarlayabilir veya komut istemini ayarlayabilir. Ortam değişkenlerinin tipik bir kullanımı, varsayılan metin düzenleyiciyi nano olarak değiştirmek olacaktır:
DÜZENLEYİCİ=/usr/bin/nano
Kelime tamamlama
Özellikle kendine güvenen bir dokunmatik daktilocu değilseniz, kısa sürede komut ve dosya adlarını tam olarak yazmaktan ve ardından yazım hatalarından kaynaklanan hata mesajlarıyla uğraşmaktan bıkacaksınız. Neyse ki kabuk, hem yazmayı kaydetmenin hem de sekme tamamlama adı verilen hatalardan kaçınmanın bir yolunu sunar.
İsim oldukça açıklayıcıdır - yazdığınız kelimeyi tamamlamak için Sekme tuşunu kullanır. Bu bir satırdaki ilk sözcükse, bu bir komut olacaktır, bu nedenle eşleşmeler için komut yolunda bakar, örneğin chm yazıp Tab tuşuna basmak chmod olarak tamamlanır .
Komuttan sonra kullanıldığında, Sekme dosya adlarını tamamlar, yani şunu yazmak yerine:
cat /pathto/somelongdirectory/someevenlongerfilename.txt
kullanabilirsiniz:
cat /pa[TAB'a basın]som[TAB'a basın]som[TAB'a basın]
Bu daha kolay değil mi? Birden fazla dosya eşleştiğinde, Sekme tuşu belirsiz hale gelene kadar tamamlanır; Bu noktada Tab'a tekrar basmak, Tab ile geçiş yapabileceğiniz veya bir veya iki harf daha ekleyip tekrar Tab tuşuna basabileceğiniz bir seçenekler listesi gösterir. Aslında kullanımı tarif etmekten çok daha kolay – sadece deneyin.
joker karakterler
Bir komuta birden fazla dosya eklemek istediğiniz ancak hepsini yazmak istemediğiniz zamanlar vardır. Linux kabuğunda bu konuda yardımcı olacak birkaç 'joker karakter' işleci vardır. En çok kullanılan, herhangi bir karakter dizisinin yerine kullanılan yıldızdır.
Böylece * kendi başına geçerli dizindeki her dosyayla eşleşir (bu, * öğesinin eşleşmediği MS-DOS kabuklarından farklıdır ve uzantılı herhangi bir dosyayı eşleştirmek için *.* kullanmanız gerekir).
Bir dosya adının bir bölümünü eşleştirmek için * seçeneğini de kullanabilirsiniz: *.txt , .txt ile biten tüm dosyalarla eşleşir ve a*.txt, yalnızca yine a ile başlayan dosyalarla eşleşir.
Bu eşleştirme kabuk tarafından gerçekleştirilir. Eşleşmeleri, joker karakteri asla görmeyen ve hatta kullandığınızı bile bilmeyen komuta iletmeden önce bir dosya listesine genişletir.
Bu, özellikle çalıştırmakta olduğunuz programa bir * iletmek istiyorsanız, önemli bir ayrım olabilir. Örneğin, uzak bir bilgisayardan dosya kopyalamak için scp kullandığınızı ve aşağıdakileri çalıştırdığınızı varsayalım:
scp user@othercomputer:Documents/*.txt Documents/
Bunun, diğer bilgisayarın Belgeler dizinindeki tüm .txt dosyalarını buradaki aynı dizine kopyalamasını bekleyebilirsiniz, ancak bu olmaz. Kabuk, *.txt dosyasını yerel sistemdeki tüm .txt dosyalarıyla eşleşecek şekilde genişletir, böylece yalnızca zaten sahip olduğunuz dosyaları kopyalarsınız.
Böyle bir durumda, kabuğa, * işaretinden önce bir ters eğik çizgi koyarak genişletmemesini söylemeniz gerekir; bu, ondan kaçmak olarak bilinir:
scp user@othercomputer:Documents/\*.txt Documents/
Artık Documents/*.txt dosyasını değiştirmeden uzak bilgisayara iletir ve genişletmeyi kabuğunun işlemesine izin verir.
İkinci bir joker karakter de var. *, hiçbiri dahil olmak üzere herhangi bir sayıda karakterle eşleşirken, ? tam olarak biriyle eşleşir. Yani ab?.txt, abc.txt ve ab1.txt ile eşleşir, ancak ab.txt veya abcd.txt ile eşleşmezken, ab*.txt bunların tümü ile eşleşir.
Komut değiştirme
Kabuklarda komut ikamesi adı verilen güçlü bir özellik vardır. Bu, bir komutun çıktısını diğerine gömmenizi sağlar.
Basit bir örnek olarak, sisteminizde foo adlı bir komut olduğunu varsayalım ve bunun ne tür bir program olduğunu bilmek istediğinizi varsayalım: derlenmiş, Python ve hatta bir kabuk betiği. Hangi komut size bir programın yolunu verir ve file bir dosyanın türünü bildirir. Kullanabilirsin:
hangi foo
/usr/local/bin/foo almak için ve sonra
dosya /usr/yerel/bin/foo
dosya türünü almak için, ancak kopyala ve yapıştır ile bile, bu çok iş ve yanlış yazmak kolaydır. Alternatif olarak şunları yapabilirsiniz:
dosya $(hangi foo)
/usr/local/bin/foo: bir /usr/bin/Perl betiği, çalıştırılabilir ASCII metni
Olan şu ki, kabuk $(..) içindeki her şeyi çalıştırır ve onu çalıştırmadan önce çıktıyı komut satırına koyar. Bunun için ters tikleri de kullanabilirsiniz:
'hangi foo' dosyası
Bu, yazmak için daha hızlıdır ancak daha az okunabilir, özellikle de okuyucunun yazı tipinin ' ve ' benzer görünebildiği bir foruma gönderildiğinde. İlk formatta böyle bir karışıklık yok.
Terminal zaman kazandırıcılar: tekrar
Kabuğun en büyük avantajlarından biri, ne kadar karmaşık olursa olsun, birkaç tuşa basarak komutları tekrar etmenin basit olmasıdır. En basit haliyle, önceki komutları göstermek için Yukarı tuşuna basabilir, ardından seçtiğiniz komutu tekrar çalıştırmak için Enter tuşuna basabilirsiniz.
İsterseniz komutu çalıştırmadan önce de düzenleyebilirsiniz. Çalıştırdığınız son birkaç komuttan birini kullanmak istiyorsanız sorun değil, ancak çoğu kabuk, tekrar erişebileceğiniz son 500 kadar komutun geçmişini tutar.
Klavyenizin Yukarı ok tuşunu (ve gözlerinizi) yormamak için Ctrl-R tuşlarına basın ve ardından komutun bir kısmını yazın. Terminal, her tuşa basışınızda güncellenen, yazdıklarınızla eşleşen en son komutu size gösterecektir.
Birbirine çok benzeyen birkaç komut çalıştırdıysanız, yazmaya devam etmenize gerek yoktur - sadece birkaç karakter yazın ve önceki eşleşmeyi görmek için tekrar Ctrl-R tuşlarına basın. İstediğini bulana kadar devam et. (Endişelenmeyin - bu, tarif etmesi gerçekte yapmaktan çok daha uzun süren şeylerden biridir.)
Çalıştırmadan önce komutu düzenleyebilirsiniz. Yazdığınız arama terimi komutun kendisi olmak zorunda değildir - komut satırının herhangi bir bölümü eşleşir, böylece dosya adıyla başlayabilirsiniz.
Geçmiş içindeki komutlara doğrudan da erişebilirsiniz. ! _ karakteri, kabuğa geçmişine atıfta bulunduğunuzu söyler. !! !-n, 'n komutları önce çalıştır komutunu yürüt' anlamına gelirken (yani !! , !-1 ile aynıdır ). !xyz, xyz ile başlayan son komutu çalıştırır ve !?xyz, xyz içeren son komut için aynısını yapar (Ctrl-R'nin yaptığı gibi).
- Bu makale TechRadar'a Linux Format tarafından sağlanmıştır ve derginin her sayısı haber analizleri, önemli Linux konuları hakkında ayrıntılı bilgiler, kodlama kılavuzları, Raspberry Pi ve Maker projeleri ve daha fazlasıyla doludur. Linux Formatının basılı veya dijital sürümüne buradan abone olun (yeni sekmede açılır)