Takma ad ll hangi komut için?


28

Birisi bana takma adın hangi terminal komutunu verdiğini söyleyebilir llmi? Çevrimiçi bulabildiğim tek şey, ls -lya ls -lada için bir takma ad olduğunu söyleyen birçok insan ls -ltr. Ama bu sadece yanlış. Sonuç farklı görünüyor. Yerini bulup llsözdizimine bakmanın bir yolu var mı ?

Yanıtlar:


76

Belirli bir diğer adın ne anlama geldiğini kontrol etmek için aliasveya typekomutlarını kullanabilirsiniz :

$ alias ll
alias ll='ls -alF'

$ type ll
ll is aliased to `ls -alF'

Eğer söz konusu olduğunda, yinelemeli mesela bunu kontrol etmek gerekebilir böylece takma adlar, diğer adlar kullanmak olabilir ancak unutmayın llayrıca kontrol etmelidir lso çağırır komutu:

$ alias ls
alias ls='ls --color=auto'

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

Yani llaslında:

ls --color=auto -alF

10
Genel durumda, bir komutun aynı anda birkaç tanımının olabileceğini unutmayın. type -a commandnamehepsini gösterecektir - komutun PATH'nizde bir öncelik sırası, bir takma ad, işlev ya da bir ya da daha fazla çalıştırılabilir dosya olup olmadığını size söyleyecektir. Bu, örneğin bir komuta eşitsizliğin neden onu beklenen davranışa kadar geri getirmediğini anlamada yardımcı olur.
sonraki duyuruya kadar duraklatıldı.

Tavsiye ederim alias ll='ls -lh'. Kaçabilirsiniz ls -lyerine insan dostu B / KIB / SGA / GiB bayt cinsinden boyutları istiyorum.
Peter Cordes

13

llbir takma Sepetinde tanımlanır ~/.bashrc, sağlanan Ürünün var o değişmedi ls -alF:

$ grep ll= <~/.bashrc
alias ll='ls -alF'

Bu üç seçenek:

  • -a, --all - ile başlayan girdileri göz ardı etmeyin.
  • -l - Uzun bir giriş formatı kullanın
  • -F, --classify - girişlere göstergeyi (* / => @ |) ekleyin

Gibi

$ grep ls= <~/.bashrc
alias ls='ls --color=auto'

gösterir, lskendisi yine bir takma addır ls --color=auto:

İle --color=auto, lssadece standart çıktı bir terminale bağlandığında renk kodları yayar. LS_COLORSOrtam değişkeni ayarlarını değiştirebilirsiniz. dircolors Ayarlamak için komutu kullanın .


Mutlaka değil. Farklı bir kabuk kullanırsanız, bu kabuk için .rc dosyasında tanımlanacaktır -, cshrc, .tchshc, vb.
jamesqf

@jamesqf Farklı bir kabuk kullanan birinin, içinde hangi takma adların önceden tanımlandığını da bildiğini düşünüyorum - varsayılan Ubuntu kurulumuyla ilgili bir soru sordum, bashkullanıcılar için varsayılan kabuk nerede ve takma ad ll, /etc/skel/.bashrcher yeni içine kopyalandığında tanımlanır. kullanıcının ana dizini. Elbette herhangi bir dosyayı kendi takma adlarınızı saklamak için kullanabilirsiniz - tek ihtiyacınız olan kaynaktır.
tatlı

2
Dosyayı yeniden yönlendirmek gerekli değildir, dosya grepadını argüman olarak alır. Başlangıç ​​dosyalarının izini sürerken , takma adın (yeniden) tanımlandığı yeri bulmanıza yardımcı olacaktır (içinde bir dosyada olabileceğini unutmayın /etc- bunu, kullanıcı başlangıç ​​dosyasından kaldırırsanız ve hala devam ediyorsa veya davranışını değiştirir), sadece tanımın ne olduğunu hızlıca bilmek istiyorsanız , kabul edilen cevapta belirtildiği gibi takma komut, işi yapar.
sonraki duyuruya kadar duraklatıldı.

@DennisWilliamson Dosyayı açmaya gerek yok bash, ama çok daha iyi! Soru postasındaki son cümle okuyor Sözdizimini bulmak llve incelemek için herhangi bir yolu var mı ? , cevabımın cevabı budur.
tatlı

3

~ / .Bashrc dosyasına (veya takma adlarınızın bulunduğu bir dosyaya) bakabilir veya bu komutların bazılarını kabuğunuza yazabilirsiniz:

command -v ll # "command" is a shell built-in that display information about       
              # the command. Use the built-in "help command" to see the 
              # options.
type -p ll # "type" is another built-in that display information about how the 
           # command would be interpreted
grep -r "alias ll=" ~ # and don't worry about de .file that contains your 
                      # alias. This command search recursively  under  each  
                      # folder of your home. So it's something rude.
find ~ -maxdepth 1 -type f | xargs grep "alias ll" # Just look in 
                      # the files (not folders) in your home folder

Fakat neden "-*" ismi olmadan bulmalı? Çünkü bunu .bashrc içine koyabilirsiniz

source bash_hacks # where the file bash_hacks, in your home directory can 
                  # contain the alias ll='ls -la etc etc'.

"Ll" bir takma ad olduğundan, tek bir anlama sahip olması zorunlu değildir (ll = 'ls -alF --color'), "ll" adınızı başka bir komutta olduğu gibi, "bilmiyorum" gibi . Ben daha fazla bir kongre (ortak kullanımların ürünü) olduğunu düşünüyorum.

Ancak "ll" PATH'nizin herhangi bir klasöründe saklanan bir program olabilir. Örneğin, evinizde "bin" adlı bir klasör varsa, gibi bir şey içeren bir "ll" betiği hazırlayın.

#!/bin/bash
ls -lhar

Ancak, PATH'iniz yeni "ll" komutunu içeren başka bir klasör eklemek için değiştirilmişse ne olur? Daha ilginç bilgi için, ilgili bir soru için aşağıdaki linke bakabilirsiniz.


0

~ / .Bashrc veya başka bir betiği ayrıştırmaya gerek yoktur. aliasTerminaldeki tüm takma adların geçerli değerlerini terminalde kontrol edebilirsiniz . Tanımlanan tüm takma adları tanımlarıyla birlikte ekranınıza getirir.


Merhaba ve askubuntu'ya hoş geldiniz. Bu cevap kabul edilene bir şey nasıl ekliyor?
Bruni

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.