Bunu, diğer takma adlarla aynı şekilde yaparsınız.
alias git-go='git commit -m "init "; git push; git status'
Zor olduğu durum , bir takma ad bir komutu çalıştırıp bu komuta argümanlar ilettiğinde veya bir takma ad birbirinden ayrılmış birden fazla komut çalıştırdığında bile ;
değil, bunun yerine takma adın kendi komut satırı bağımsız değişkenlerini kabul etmesini ve kullanmasını istediğiniz zamandır. .
Örneğin, bu takma adın adından sonra yazdığınız her şey sonuna yapıştırılacak ve daha sonra üçüncü git
komuta komut satırı bağımsız değişkenleri olarak aktarılacaktır git status
. (Gerçekten de, aşağıdaki metnin sonuna yapıştırıldığı kadar değil, aşağıdaki metnin tek başına bırakıldığı ve takma adın tanımıyla değiştirildiği kadar.)
Böylece, takma adınızı bağımsız değişkenler olmadan çalıştırabilirsiniz ve son komut şöyledir git status
:
git-go
Veya iletmek istediğiniz bağımsız değişkenlerle çalıştırabilirsiniz git status
. Örneğin, bu şekilde çalıştırdığınızda, son komut şöyledir git-status --show-stash
:
git-go --show-stash
Ne edemez Bash (ve diğer Bourne tarzı kabukları) takma ad ile ilgisi takma komut satırı argümanları kabul ve başka bir yerde sonuna kadar koyun yapmaktır.
Örneğin git-go
, tamamlama mesajı için kullandığı bir argümanı kabul etmek istediğinizi varsayalım . Bunu takma ad olarak yazamazsınız. Çözüm, bunun yerine kabuk işlevi olarak yazmak olacaktır:
git-go() { git commit -m "$1"; git push; git status; }
Bir kabuk işlevi tanımında, konumsal parametreler $1
, $2
ve benzeri kabuk işlevine geçirilen komut satırı bağımsız değişkenlerin değerlerini tutun. Takma adların buna karşılık gelen bir işlevi yoktur, çünkü takma ad genişletmesi, kabuk bir komutu ayrıştırdığında çok erken gerçekleşen bir tür makro işleme şeklidir.
Videonauth'un önerdiği gibi, tanımda konumsal parametreleri kullanmanıza gerek olmasa bile, elbette bir kabuk işlevi olarak yazabilirsiniz .