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.