hashbir bash yerleşik komutudur. Karma tablo, sonuçları bellekte önbelleğe alarak her komut yazışında bash arama yapmak zorunda kalmamasını sağlayan bir özelliktir $PATH. Tablo, sonuçları açıkça geçersiz kılan olaylarda silinir (değiştirme gibi $PATH).
hashEğer bu sistemin (hangisi hissettiğini nedenle yapmanız gerekenler) nasıl etkileşimde komut adildir.
Bazı kullanım durumları:
Gördüğünüz gibi, herhangi bir argüman olmadan yazarsanız, hangi komutlara kaç defa basıldığını gösterir. Bu, hangi komutları en sık kullandığınızı söyleyebilir.
Standart olmayan konumlardaki yürütülebilir dosyaları hatırlamak için de kullanabilirsiniz.
Örnek:
[root@policyServer ~]# hash -p /lol-wut/whoami whoami
[root@policyServer ~]# whoami
Not what you're thinking
[root@policyServer ~]# which whoami
/usr/bin/whoami
[root@policyServer ~]# /usr/bin/whoami
root
[root@policyServer ~]#
Çalıştırmak $PATHistediğiniz dizindeki tek bir çalıştırılabilir dosya varsa, bu dizindeki her şeyi dahil etmek yerine sadece adı yazmanız yararlı olabilir (eğer eklerseniz etki olur $PATH).
Bir takma ad genellikle bunu da yapabilir, ancak mevcut kabuğun davranışını değiştirdiğiniz için başlattığınız programlarda eşlenmez. Yalnız çalıştırılabilir bir link, muhtemelen burada tercih edilen seçenektir. hashBunu yapmanın bir yolu.
- Dosya yollarını hatırlamak için kullanabilirsiniz. Bu, yeni bir çalıştırılabilir dosya daha önceki bir
PATHdizinde açılırsa veya mvbaşka bir yere giderse ve bash'ı bulup en son bulduğu yer yerine tekrar bulmaya zorlamak istiyorsanız kullanışlıdır .
Örnek:
[root@policyServer ~]# hash
hits command
1 /bin/ls
[root@policyServer ~]# cp /bin/ls /lol-wut
[root@policyServer ~]# hash
hits command
1 /bin/cp
1 /bin/ls
[root@policyServer ~]# hash -d ls
[root@policyServer ~]# ls
default.ldif newDIT.ldif notes.txt users.ldif
[root@policyServer ~]# hash
hits command
1 /bin/cp
1 /lol-wut/ls
[root@policyServer ~]#
cpKomut yeni bir sürümü neden lsyürütülebilir önceki skinTenimde göstermek $PATHancak karma tablosunun bir tasfiye tetiklemek yoktu. Kullandığım hash -dseçici olarak giriş temizlemek için lskarma tablosundan. Bash, daha sonra $PATHtekrar bakmak zorunda kaldı ve bunu yaptığında, daha yeni bir yerde buldu ($ PATH'ta daha önce çalışmakta olduğundan daha önce).
$PATHBununla birlikte, bu "çalıştırılabilir yeni konumu bul " davranışını seçmeli olarak çağırabilirsiniz :
[root@policyServer ~]# hash
hits command
1 /bin/ls
[root@policyServer ~]# hash ls
[root@policyServer ~]# hash
hits command
0 /lol-wut/ls
[root@policyServer ~]#
Bunu karmaşa tablosundan bir şey yapmak istiyorsan ve başarılı bir şekilde giriş yapıp yapamayacağın% 100 olmasaydı ya da kabuğuna yaptığın bazı değişiklikleri korumak istiyorsan, bunu yapmak isterdin.
Eski haritalardan kurtulmak için, bash'ın bütün karma tablosunu etkin bir şekilde temizleyen hash -r(veya export PATH=$PATH) de yapabilirsiniz .
Bunun gibi birçok küçük durum var. Buna "en faydalı" komutlardan biri diyebilir miyim bilmiyorum ama bazı kullanım durumları var.