দাভেরজার উত্তর অনুসারে , এখানে একটি বাশ স্ক্রিপ্ট রয়েছে যা উদ্দেশ্যটি সমাধান করবে।
আপনি যদি সি-শেল ব্যবহার করে থাকেন এবং সি-শেল প্রসঙ্গে / উইন্ডোটি নীচে না রেখে কোনও কমান্ড কার্যকর করতে চান এমন পরিস্থিতিতে বিবেচনা করুন ,
মৃত্যুদন্ড কার্যকর করার নির্দেশ : কেবলমাত্র * .h, * .c ফাইলগুলিতে চলমান ডিরেক্টরিটিতে 'টেস্টিং' শব্দটির সন্ধান করুন
grep -nrs --color -w --include="*.{h,c}" Testing ./
সমাধান 1 : সি-শেল থেকে ব্যাশে প্রবেশ করুন এবং কমান্ডটি কার্যকর করুন
bash
grep -nrs --color -w --include="*.{h,c}" Testing ./
exit
সমাধান 2 : একটি পাঠ্য ফাইলে উদ্দেশ্যযুক্ত আদেশটি লিখুন এবং ব্যাশ ব্যবহার করে এটি সম্পাদন করুন
echo 'grep -nrs --color -w --include="*.{h,c}" Testing ./' > tmp_file.txt
bash tmp_file.txt
সমাধান 3 : ব্যাশ ব্যবহার করে একই লাইনে কমান্ড চালান
bash -c 'grep -nrs --color -w --include="*.{h,c}" Testing ./'
সমাধান 4 : একটি স্ক্রিপ্ট তৈরি করুন (এককালীন) এবং ভবিষ্যতের সমস্ত আদেশের জন্য এটি ব্যবহার করুন
alias ebash './execute_command_on_bash.sh'
ebash grep -nrs --color -w --include="*.{h,c}" Testing ./
স্ক্রিপ্টটি নিম্নরূপ:
#!/bin/bash
E_BADARGS=85
if [ ! -n "$1" ]
then
echo "Usage: `basename $0` grep -nrs --color -w --include=\"*.{h,c}\" Testing ."
echo "Usage: `basename $0` find . -name \"*.txt\""
exit $E_BADARGS
fi
TMPFILE=$(mktemp)
argList=""
for arg in "$@"
do
if echo $arg | grep -q " "; then
argList="$argList \"$arg\""
else
argList="$argList $arg"
fi
done
argList=$(echo $argList | sed 's/^ *//')
echo "$argList" >> $TMPFILE
last_command="rm -f $TMPFILE"
echo "$last_command" >> $TMPFILE
check_for_last_line=$(tail -n 1 $TMPFILE | grep -o "$last_command")
if [ "$check_for_last_line" == "$last_command" ]
then
bash $TMPFILE
exit 0
else
echo "Something is wrong"
echo "Last command in your tmp file should be removing itself"
echo "Aborting the process"
exit 1
fi