Bir takma ad başka bir takma adı etkiler mi?


14

Henüz .bash_aliases dosyamda ayarlanmış çok sayıda takma ad yok. Ancak son zamanlarda ne kadar yararlı olabileceklerini keşfettim.

Kendimi takma adlara oldukça bağımlı hale geldiğini görebiliyorum, bu yüzden dosya çok garip olmadan önce çok basit bir soru sorarak bir şeyi açıklığa kavuşturmak istiyorum. Bir takma ad diğerini etkiler mi, yoksa takma ad her zaman orijinal komuta geri döner mi?

Bir örnek bunu daha açık hale getirebilir:

Ben lstakma ad verdim ls -lF. Diyelim ben de takma istiyorum demek diçin ls -l | grep -E "^d"kapsamaz: dartık kullanıma ls -lFyerine ls? Öyleyse, .bash_aliases yapılandırma dosyasında bir sipariş meselesi var mı?

man alias beni aydınlatmadı.

Yanıtlar:


20

Gönderen Aliases (Bash Kılavuzunun bölüm 6.6) :

Her bir basit komutun ilk kelimesi, belirtilmemişse, bir takma adı olup olmadığını kontrol eder. Öyleyse, bu sözcüğün yerine takma ad metni gelir.

Bu , diğer adı kullandığınızda olur , tanımladığınız zaman değil. İşte bir örnek:

$ alias a1='a2 hello'
$ alias a2='echo'
$ a1
hello
$ unalias a2
$ a1
bash: a2: command not found

1
Tamam harika, bu örnek için teşekkürler (ve ayrıca Bash El Kitabı'na bağlantı için). El Kitabından alıntı yapıyorum: "Takma adların tanımlanması ve kullanımı ile ilgili kurallar biraz kafa karıştırıcı ... Neredeyse her amaç için kabuk fonksiyonları takma adlara tercih ediliyor." Sanırım kabuk fonksiyonlarının nasıl yapılacağını öğrensem iyi olur. :)
boehj

1
Evet. Takma adlar, ortak komutlar için bazı yazımları kurtarabilir, ancak özel işlevlerin üstesinden gelmek için uzaktan karmaşık bir şey yazmak için genellikle daha iyi bir seçenektir.
Caleb

@Caleb @Gilles - Teşekkür ederim millet. BTW, ls = 'ls --color' Çok kullanışlı olduğunu görebiliyorum. Bu siteyi seviyorum. :)
boehj

2
@boehj: Komutun adını veya küçük bir varyasyonunu kullanarak bir komut için otomatik argümanlar almak istediğinizde bir takma ad kullanmaktır, aksi halde işlev görür. Yani alias ls='ls --color', alias cp='cp -i'ama daha karmaşık şeyler için işlev görür. Özellikle, dargümanlarını iletebilmen için bir fonksiyon yapardım ls. [yorum kafa karıştırıcı braino düzeltmek için cevap, teşekkürler @cjm]
Gilles 'SO- kötü olmaktan

@Gilles - Tamam, bugünkü görevim kendime dbir kabuk işlevi olarak nasıl kopyalanacağını öğretmek .
boehj
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.