터미널에서 텍스트 파일 목록을 찾기 위해 디렉터리를 검색하고 싶습니다. 지나치게 생각하지 않기 위해 몇 단어를 검색할 수 있고 싶습니다. 예를 들어 search one two three
이름에 해당 단어가 두 개 이상 포함된 파일이 있는 경우 해당 단어를 반환합니다. 이것은 내 if 문입니다.
snip-list() {
for filename in ~/notes/*; do
file=`basename "$filename"`
fs=${file%.*}
if [[ $fs =~ $1 ]] && [[ $fs =~ $2 ]] && [[ $fs =~ $3 ]] && [[ $fs =~ $4 ]] && [[ $fs =~ $5 ]]; then
echo $fs
# exit
elif [[ $fs =~ $1 ]] && [[ $fs =~ $2 ]] && [[ $fs =~ $3 ]] && [[ $fs =~ $4 ]]; then
echo $fs
# exit
elif [[ $fs =~ $1 ]] && [[ $fs =~ $2 ]] && [[ $fs =~ $3 ]]; then
echo $fs
# exit
elif [[ $fs =~ $1 ]] && [[ $fs =~ $2 ]]; then
echo $fs
# exit
elif [[ $fs =~ $1 ]]; then
echo $fs
fi
done
}
이 디렉토리에 파일을 추가할 것이므로 명령문을 있는 그대로 실행하면 너무 많은 결과가 반환되어 쓸모가 없게 됩니다(적어도 첫 번째 결과를 보려면 맨 위로 스크롤해야 합니다).
"사용자가 5개의 검색어를 검색하여 무언가를 반환한 경우"를 수행하는 방법이 있다면 어떨까요?다른 4가지 조건을 실행하지 마세요.
나는 각 문장 다음에 실행을 시도했고 exit
이것이 내가 원하는 것입니다열린 상태를 유지하려면 터미널 창이 필요합니다.
답변1
쉘 함수에서 복귀하는 return
대신 사용하십시오 .exit
쉘 bash
이나 내장된 도움말이 있는 다른 쉘을 사용하는 경우 help return
자세한 내용을 입력하십시오. 그렇지 않으면 쉘의 매뉴얼 페이지를 참조하십시오.