डावराजा के जवाब के अनुसार , यहां एक बैश स्क्रिप्ट है जो उद्देश्य को हल करेगी।
एक स्थिति पर विचार करें यदि आप सी-शेल का उपयोग कर रहे हैं और आप सी-शेल संदर्भ / विंडो को छोड़कर एक कमांड निष्पादित करना चाहते हैं,
निष्पादित किया जाने वाला कमांड : वर्तमान निर्देशिका में सटीक शब्द 'परीक्षण' को केवल * .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