hash
হ'ল বাশ অন্তর্নির্মিত কমান্ড। হ্যাশ টেবিলটি এমন একটি বৈশিষ্ট্য bash
যা $PATH
আপনি মেমরিতে ফলাফলগুলি ক্যাশে করে প্রতিবার কোনও কমান্ড টাইপ করার সময় এটি অনুসন্ধান করতে বাধা দেয় । ফলাফলগুলি স্পষ্টতই অকার্যকর করে এমন ইভেন্টগুলিতে সারণী সাফ হয়ে গেছে (যেমন সংশোধন করা $PATH
)
hash
কমান্ড শুধু আপনি যে সিস্টেম (যেটা কারণ আপনি মনে করেন করার জন্য আপনাকে করতে হবে) কিভাবে আচরণ করা হয়।
কিছু ব্যবহারের ক্ষেত্রে:
আপনি দেখেছেন যে আপনি কোনও আর্গুমেন্ট না দিয়ে টাইপ করলে কোন আদেশটি আপনি কতবার আঘাত করেছেন তা মুদ্রণ করেছে। এটি আপনাকে বলতে পারে আপনি কোন আদেশগুলি বেশিরভাগ ক্ষেত্রে ব্যবহার করেন।
আপনি এটি অ-মানক স্থানে এক্সিকিউটেবলের মনে রাখতে ব্যবহার করতে পারেন।
উদাহরণ:
[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 ~]#
ডিরেক্টরিতে থাকা $PATH
সমস্ত কিছু অন্তর্ভুক্ত করার পরিবর্তে কেবলমাত্র নামটি টাইপ করে চালাতে চান তার বাইরে যে কোনও ডিরেক্টরিতে আপনার কেবলমাত্র একক এক্সিকিউটেবল থাকলে এটি কার্যকর হতে পারে (এটি যদি আপনি যুক্ত করেন তবে এটি কার্যকর হবে $PATH
)।
একটি উপাধি সাধারণত এটিও করতে পারে, যদিও এবং যেহেতু আপনি বর্তমান শেলটির আচরণটি পরিবর্তন করছেন, তাই আপনি যে প্রোগ্রামগুলিকে সরিয়ে ফেলেন সেটি ম্যাপ করা যায় না। একাকী এক্সিকিউটেবলের কাছে একটি সিমিলিংক সম্ভবত এখানে পছন্দনীয় বিকল্প। hash
এটি করার একটি উপায়।
- আপনি এটি ফাইলের পাথগুলি স্মরণে না রাখতে ব্যবহার করতে পারেন। এটি কার্যকর যদি কোনও নতুন এক্সিকিউটেবল আগের
PATH
ডিরেক্টরিতে পপ আপ করে বা mv
অন্য কোথাও গিয়ে পৌঁছে এবং আপনি বাশকে বাইরে বেরিয়ে যেতে বাধ্য করতে চান এবং এটি খুঁজে পাওয়ার মনে রাখার শেষ স্থানের পরিবর্তে এটি আবার খুঁজে পেতে চান।
উদাহরণ:
[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
কমান্ড এর একটি নতুন সংস্করণ সৃষ্ট ls
এক্সিকিউটেবল আমার আগের প্রদর্শিত করতে $PATH
কিন্তু হ্যাশ টেবিল একটি রেচক পদার্থ চাপেনি। আমি hash -d
নির্বাচনের জন্য ls
হ্যাশ টেবিল থেকে প্রবেশ এন্ট্রি শুদ্ধ করতে ব্যবহৃত । এরপরে বাশকে $PATH
আবারও সন্ধান করতে বাধ্য করা হয়েছিল এবং এটি যখন ঘটেছিল তখন এটি এটি নতুন অবস্থানে খুঁজে পেয়েছিল (আগের তুলনায় AT পাথের আগে)।
আপনি বেছে বেছে এই $PATH
আচরণ থেকে "কার্যকর করার নতুন জায়গা সন্ধান করুন " আচরণ করতে পারেন, যদিও:
[root@policyServer ~]# hash
hits command
1 /bin/ls
[root@policyServer ~]# hash ls
[root@policyServer ~]# hash
hits command
0 /lol-wut/ls
[root@policyServer ~]#
আপনি বেশিরভাগই কেবল এটি করতে চাইতেন যদি আপনি হ্যাশ টেবিলের বাইরে কিছু চান এবং 100% না হন যা আপনি লগ আউট করতে পারেন এবং সফলভাবে ফিরে আসতে পারেন, বা আপনি নিজের শেলটিতে কিছু পরিবর্তন সংরক্ষণ করতে চেয়েছিলেন।
বাসি ম্যাপিং থেকে পরিত্রাণ পেতে, আপনি এটিও করতে পারেন hash -r
(বা export PATH=$PATH
) যা কার্যকরভাবে কেবল বাশের পুরো হ্যাশ টেবিলকে বিশুদ্ধ করে।
এর মতো ছোট্ট অনেকগুলি পরিস্থিতি রয়েছে। আমি এটিকে "সবচেয়ে দরকারী" কমান্ডগুলির মধ্যে একটি বলি কিনা জানি না তবে এতে কিছু ব্যবহারের ঘটনা রয়েছে cases