Bash'de, takma isme nasıl ekstra argümanlar dahil edilmez?


10

Gibi bir şey yapmaya çalışıyorum

alias ftp='echo do not use ftp. Use sftp instead.'

sadece bu ftpyanlışlıkla kullanılmayacak. Ama fark ettim ki

ftp abcd.com

komutun yankılanmasına neden olacak

do not use ftp. Use sftp instead. abcd.com

çünkü abcd.combunun bir argüman olduğu düşünülüyor echo.

Bash'in abcd.comoyuncu değişikliğine echokatılmamasını veya ekstra argümanlar olarak ele almamasının bir yolu var mı ? (Her yaklaşım için bir çözüm var mı?)

Başarabilseydim

alias ftp='sftp'

ama kendimi kullanmamamı hatırlatmak için komutun hep birlikte durmasını istiyorum ftp.


3
Çoğunlukla ftpfarklı şekillerde yasaklayabilirsiniz , ancak bunu yapmak istiyorsanız - printfyerine şunu kullanın echo:printf "Do not use ftp. Use sftp instead.\n\c"
Costas

Ekle echoiçin sftptakma? yani alias ftp='echo "Do not use ftp"; sftp'. Hatırlatmayı da alırsınız, aynı zamanda kullanmaya zorlanırsınız sftp.
Josh Jolly

@JoshJolly Ben sadece "sürekli" kullanmak için izin vermek yerine hep birlikte durdurmak için komut yapmak istedim, böylece sürekli kullanmama hatırlatılacakftp
nonopolarity

1
Diğer adların son derece basit olduğunu unutmayın; bunlar basit dize değiştirmeden başka bir şey değildir ((1) değiştirmenin yalnızca komut dizesinin başında gerçekleştiği ve (2) yinelemesiz olduğu ek sınırlamalarla). Bir takma adın takma adın tanımının ötesinde nasıl çalıştığını "yapılandırmanın" bir yolu yoktur.
Kyle Strand

Er ... üzgünüm, diğer adlar şunlardır özyinelemeli. Ne düşündüğümden emin değilim.
Kyle Strand

Yanıtlar:


18

Bir takma ad tanımladığınızda, yazdığınız komut yerine ayarladığınız komut çalıştırılır. Bu, çalıştırdığınızda ftp abc.comgerçekte yürütülen şeyin

echo do not use ftp. Use sftp instead abc.com

Basit bir çözüm, takma ad yerine bir işlev kullanmaktır:

ftp(){ echo 'do not use ftp. Use sftp instead'; }

Alternatif olarak, printfCostas tarafından önerildiği gibi kullanabilirsiniz :

alias ftp="printf 'do not use ftp. Use sftp instead\n'"


9

Diğer #ad dizesinin sonuna bir boşluk ve yorum karakteri koyun :

alias ftp='echo do not use ftp. Use sftp instead. #'
ftp abcd.com
do not use ftp. Use sftp instead.

Bu, parametrelerin yorum olarak ele alınmasına neden olur. Sadece boşluk eklemeyi unutmayın, #aksi takdirde takma ad genişletmesinden sonra ayrı bir jeton olarak yorumlanmaz.

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.