daveraja 의 답변에 따라 목적을 해결할 bash 스크립트가 있습니다.
C-shell을 사용 중이고 다음과 같이 C-shell 컨텍스트 / 창을 벗어나지 않고 명령을 실행하려는 경우 상황을 고려하십시오.
실행할 명령어 : * .h, * .c 파일에서만 재귀 적으로 현재 디렉토리의 'Testing'단어를 정확히 검색
grep -nrs --color -w --include="*.{h,c}" Testing ./
해결 방법 1 : C-shell에서 bash로 들어가서 명령을 실행하십시오.
bash
grep -nrs --color -w --include="*.{h,c}" Testing ./
exit
해결 방법 2 : 의도 한 명령을 텍스트 파일에 작성하고 bash를 사용하여 실행합니다.
echo 'grep -nrs --color -w --include="*.{h,c}" Testing ./' > tmp_file.txt
bash tmp_file.txt
해결 방법 3 : bash를 사용하여 같은 줄에서 명령 실행
bash -c 'grep -nrs --color -w --include="*.{h,c}" Testing ./'
해결 방법 4 : sciprt (한 번)를 만들고 이후의 모든 명령에 사용
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