Bir bash takma adına ekli komutu nasıl görebilirim?


324

Bash kabuğunda bir takma ad olduğunu varsayalım. Takma adın hangi komutu çalıştıracağını gösteren basit bir komut var mı?

Yanıtlar:


431

typeYerleşiğine Bunun için yararlıdır. Size sadece takma adlar hakkında değil, aynı zamanda fonksiyonlar, yerleşikler, anahtar kelimeler ve harici komutlar hakkında da bilgi verecektir.

$ type ls
ls is aliased to `ls --color=auto'
$ type rm
rm is /bin/rm
$ type cd
cd is a shell builtin
$ type psgrep
psgrep is a function
psgrep () 
{ 
    ps -ef | { 
        read -r;
        printf '%s\n' "$REPLY";
        grep --color=auto "$@"
    }
}

type -a cmdiçin yararlıdır öncelik sırasına, bu isimde tüm komutları gösterecektir lstakma kendisi çağırır yukarıdaki takma, ls.

$ type -a ls
ls is aliased to `ls --color=auto'
ls is /bin/ls

Bu, koşarken ls, /bin/lskullanılacağını ve --color=autokendi eklediğin diğer öğelere ek olarak argümanlar listesine dahil edileceğini söyler .


Bir takma ad DAHA diğer ad içerdiğinde ne yapmalı?
user251046

2
@ user251046 type, takma ad dışında başka bir şeye çarpana kadar kullanmaya devam edin ...
geirha

Bu cevabı beğendim çünkü typeherhangi bir teklifi ayrıştıracak / yorumlayacak, bu yüzden tekliflerin doğru olduğundan emin olabilirsiniz.
wisbucky

Aldım ls is aliased to 'ls --color=auto', ancak / bin / ls veya / usr / local / bin / ls kullanıp kullanmadığını görmek için bir kat daha derine nasıl ulaşabilirim?
krubo

1
@krubo type -a ls, tercih sırasına göre bulunan tüm komutları gösterecektir. Takma adın hemen altındaki hangisi, takma ad tarafından yürütülecek olandır.
geirha

163

Sadece aliasShell isteminde iken yazın. Halen aktif olan tüm diğer adların bir listesini çıkarmalıdır.

Veya, alias [command]belirli bir takma adın takma adını görmek için yazabilirsiniz , örneğin lstakma adın takma adının ne olduğunu öğrenmek istiyorsanız, bunu yapabilirsiniz alias ls.


12
Veya özellikle alias lsneye lsAlias ​​olduğunu öğrenmek için yazın.
poolie

2
@poolie Indeed. Sanırım soru tüm takma adları görmekti , bu yüzden takma ad komutunu daha fazla açıklamamıştım.
Thomas Ward

bu takma adlar için çalışırken, özel bir kabuk işlevi tanımladıysanız çalışmaz. typeancak, her iki durumda da çalışır.
Sujay Phadke 24:16

53

Bu cevaptan öğrendiğim gibi Ctrl+ Alt+ ' Eyı gerçekten seviyorum . Şu anda yazılan komut satırını "genişletir", yani diğer ad genişletmesini gerçekleştirir (diğer şeylerin yanı sıra).

Bu ne anlama geliyor? Komut satırında o anda yazılmış olabilecek takma adları, takma adın yerine geçtiğine dönüştürür.

Örneğin, şunu yazarsam:

$ ls

ve sonra Ctrl+ Alt+ tuşlarına basın E,

$ ls --time-style=locale --color=auto

Bunun diğer dağıtımlardaki karşılığı mı?
sepehr

@sepehr Debian'da Çalışıyor, Bunun bir bash özelliği olduğunu ve herhangi bir dağıtım üzerinde çalışması gerektiğini düşünüyorum.
Der Hochstapler

4
haklısın, bash üzerinde çalışıyor ama ben zsh var ve ne yazık ki çalışmıyor.
sepehr

gerçekten yardımcı oldu. Tarihte basılmış önceki bash komutlarından birini, yani! 394 ile genişletmeyi farklı bir hedefim vardı, böylece ilk çalıştırmadan önce düzenleyebileyim
XXL

1
Bir ihtar var. Bir takma ad gerekli alıntıları içerdiğinde kaldırılır. Yani, almak squeue -u davidmh -o %.18i %.9P %.25j %.8u %.8T %.10M %.9l %.6D %R yerinesqueue -u davidmh -o "%.18i %.9P %.25j %.8u %.8T %.10M %.9l %.6D %R "
Davidmh

10

Kesin konuşursak doğru cevap BASH_ALIASES dizisini kullanıyor, örneğin:

$ echo ${BASH_ALIASES[ls]}
ls -F --color=auto --show-control-chars

2
Bunu, insanın yararına kullanılabilecek şeyler olmadan takma isimlendirilen fiili ifadeye programlı bir şekilde erişmek istediğim bir durumda buldum.
M. Justin,

Bu zsh çalışmıyor
ProGrammar

1
@ProGrammar soru bash ile ilgiliydi - zsh için zsh ile ilgili sorulara bakmalısın
noonex

1
Bingo. Tam olarak ihtiyacım olanı, @ M.Justin'le aynı - lsOrada olanı değiştirmeden mevcut takma adı üzerine daha fazla anahtar istiflemek istiyorum . Bu yüzden davam için gidiyorum alias ls="${BASH_ALIASES[ls]} --time-style=iso".
Zengin

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.