hash
bir 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
).
hash
Eğ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 $PATH
istediğ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. hash
Bunu yapmanın bir yolu.
- Dosya yollarını hatırlamak için kullanabilirsiniz. Bu, yeni bir çalıştırılabilir dosya daha önceki bir
PATH
dizinde açılırsa veya mv
baş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 ~]#
cp
Komut yeni bir sürümü neden ls
yürütülebilir önceki skinTenimde göstermek $PATH
ancak karma tablosunun bir tasfiye tetiklemek yoktu. Kullandığım hash -d
seçici olarak giriş temizlemek için ls
karma tablosundan. Bash, daha sonra $PATH
tekrar bakmak zorunda kaldı ve bunu yaptığında, daha yeni bir yerde buldu ($ PATH'ta daha önce çalışmakta olduğundan daha önce).
$PATH
Bununla 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.