bash betiklerinde takma ad ve işlev


11

Bash kabuğundaki takma adlar ve işlevler arasındaki farkı ve hangisinin ne zaman kullanılacağını bilmek istiyorum.

Fonksiyonlar argüman alabildikleri için çok daha güçlüler - esas olarak bir netbook ile yolda çalıştığım ve enerji ve işleme gücünden tasarruf etmek istediğim için, özellikle performans farklarının ne olduğu hakkında biraz daha fazla bilgi edinmek istiyorum bash işlevselliğini genişletmek için bu iki yol vardır.


1
Kendini rahatsız etmeye gerek yok. Sorunuz istenmediyse, indirilecek. Ve birisi sorunuzu netleştirmenizi isterse, bir yorumda söyleyecektir. İnsanların yayınınızı düzenlemesini yasaklamak da noktayı kaçırıyor. Bu site, her şeyin herkes için düzenlenebilir olması için tasarlanmıştır.
k0pernikus

Yasaklamaya çalışmıyordum, ama nazikçe gerekli görüyorlarsa açıklığa kavuşturmam için bir şans vermenizi rica ediyorum. Çok az bildiğim konularla ilgili çok basit sorular sorma deneyimim oldu ve sonra insanlar daha karmaşık bir şey sorduğumu ve beni ne istediğimi nasıl soracağımı nasıl bilmediğimi düzelten tamamen açık olduğunu düşündüler . Tabii ki bu platformun en büyük avantajlarından biri, akranları tarafından düzenlenebilir olması, bunu zayıflatmaya çalışmıyordum. Geri bildiriminiz için teşekkürler, beni düşündürdü :)
MaxAxeHax

Yanıtlar:


10

Takma adları takma ad olarak düşünün . Çok şey uyguladığınız ancak kısaltmak istediğiniz bir komutunuz olabilir.

Örnek olarak, genellikle komut satırında doğrudan masaüstüne gitmek istersiniz, böylece bunu yapabilirsiniz

alias desktop="cd ~/Desktop"

O andan itibaren

desktop

Terminalde ve cd ~/Desktopsizin için gerçekleştirecektir .

Fonksiyonlar mantık içerir. Bir işlevde, birkaç farklı programa çağrı yapabilirsiniz. İşte basit bir yankı işlevi

function e {
                echo $1 
                echo $1 $1
                echo $1 $1 $1                 
           }  

Aradığınızda bir takma ada benzer görünebilir

e Hello

E () cihazınızda çok farklı şeyler olabilir. Yukarıdaki basit bir örnektir.

Takma adlar basit kullanım durumları için ayrılmalıdır. Kişisel örnek - Benim yerini rmböyle komutu

alias rm='trash-put'

Ne zaman bir rm yapsam, onu diskten silmek yerine çöp kutusuna gönderir. Bu, (bazen) yanlışlıkla önemli bir dosyayı silebileceğim terminaldeki sakarlığımı karşılar.

Hatırlamanız gereken fonksiyonlar mantık parçalarıdır. Genellikle tek başına bir işlev kullanmazsınız. Daha büyük bir komut dosyasının parçası olurdu. Tüm dosyalarınızı alan ve onları domuz latin sürümleriyle yeniden adlandıran bir komut dosyası düşünün. Bunu yapmanın farklı yolları olduğunu görmezden gelin.

Ancak yapabileceğiniz, dizindeki her dosyaya döngü ve dosya yolunu RenameAsPigLatin işlevinize iletmektir. RenameAsPigLatin işlevinde, sayılarla biten dosyaların yeniden adlandırılmaması gerektiğine karar verdiğiniz sayıları içeren fazladan bir mantık olabilir.

Hemen bir işlev olarak sahip olmanın faydasını görebilirsiniz. İşlev, garip kurallarınızla yeniden adlandırmaya odaklanabilirken, komut dosyasının geri kalanı gerektiğinde çeşitli dizinleri geçebilir.


2
Bence, fonksiyonları bağımsız kullanmak için birçok neden var. Aslında, takma adlarımla birlikte tanımlanmış birkaç fonksiyonum var. Örneğin, herhangi bir işlevsellikten ödün vermeden her cd'den sonra otomatik olarak bir ls yapabilmesini sağlamak için cd'yi aynı adda bir işlevle değiştirdim. Bu bir takma adla yapılamaz çünkü biraz mantık gerektirir.
Scott Severance

3

Diğer ad, uzun komutlar yazmaktan veya her zaman aynı seçenekleri tekrarlamaktan kaçınmak için konsolda kullanılan basit bir kısayoldur.

Klasik bir örnek:

alias ll='ls -l'

Takma ad yalnızca etkileşimli bir konsolda çalışır, komut dosyalarında kullanılması amaçlanmaz.

İşlev komut dosyalarında veya konsolda kullanılabilir, ancak komut dosyalarında daha sık kullanılır.

Değerleri ile değiştirilen takma adların aksine, bir işlev bash kabuğu tarafından yorumlanacaktır.

İşlev takma adlardan çok daha güçlüdür, çok karmaşık programlar oluşturmak için kullanılabilirler.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.