আমি ভাবছি হিস্ট্রি কমান্ড ব্যবহারের উপায় আছে কিনা তবে কেবল সফলভাবে চালিত কমান্ডগুলির তালিকা তৈরি করুন। তেমনি, ত্রুটি তৈরি করে এমনগুলির তালিকা তৈরি করার কোনও উপায় থাকবে?
আমি জানি প্রতিটি কমান্ডের একটি প্রস্থান স্থিতি রয়েছে:
0
- কমান্ডের সফল সম্পাদন
1
- প্রসারণ বা পুনঃনির্দেশের সময় ত্রুটির কারণে কমান্ড ব্যর্থ হয়, প্রস্থান পরিস্থিতি শূন্যের চেয়ে বেশি।
2
- কমান্ডের ভুল ব্যবহার
12
- কমান্ড পাওয়া গেলেও কার্যকর হয়নি
127
- কমান্ড পাওয়া যায় নি
এবং কমান্ডটি প্রেরণ করে এখানে echo $?
থেকে পরীক্ষা করা যায়: http://www.linuxnix.com/2011/03/find-exit-status-script-command-linux.html
উদাহরণ:
এই 4 টি কমান্ড চালানোর পরে:
ls
help
lss
ls nonexistentfile
আমি কেবল সফল কমান্ড (0 এর প্রস্থান স্থিতি) মুদ্রণের জন্য পরীক্ষার চেষ্টা করেছি, যা কেবল 'ls' এবং 'সহায়তা' হওয়া উচিত:
for j in `history | tail -5 | head -4 | cut -d ' ' -f5-`; do $j > cmd_out; if [[ `echo $?` != 0 ]]; then :; else echo $j | grep -v 'bash'; fi; done; rm cmd_out
এই ফলাফলগুলি:
ls
help
bash: lss: command not found
ls
bash: nonexistentfile.txt: command not found
এটি কিছুটা কাজ করে তবে দুটি সমস্যা রয়েছে:
- কোনও কারণে,
grep -v 'bash'
'বাশ' সম্বলিত লাইনগুলি বাদ দিচ্ছে নাgrep 'bash'
, তবে আমি যদি এটি করি তবে এটিতে 'বাশ' যুক্ত রেখাগুলি অন্তর্ভুক্ত থাকবে, আমি নিশ্চিত না কেন কেন একটি কাজ করে এবং অন্যটি নয় not - এটি স্ট্রিং দ্বারা প্রতিটি লাইন / কমান্ডকে পৃথক করছে। শেষ
ls
কমান্ডটি হওয়া উচিত
ls nonexistentfile
, তবে এটি চলমানls
এবংnonexistentfile
পৃথক কমান্ড হিসাবে।
কমান্ডটিতে আমার কী সামঞ্জস্য করা উচিত সে সম্পর্কে কোনও ধারণা, বা কীভাবে এটি করা যায়?
ls #$CODE, ll #$CODE
ইতিহাসের ফলাফল পেয়েছি । এটি আপনার পক্ষে কাজ করে কিনা আমি নিশ্চিত নই, তবে আমাকে পরিবর্তনsed -i '\$s/\$/ \#\$CODE/' $HISTFILE'
করতে হয়েছিলsed -i '\$s/\$/ \#$CODE/' $HISTFILE
। আমি