배쉬 기능 Grep Mod

배쉬 기능 Grep Mod

TL:DR 다양한 수의 선택적 입력을 허용하면서 bash 함수에 grep을 추가하는 방법은 무엇입니까?

큰 출력을 반복적으로 수집하면 터미널이 데이터로 인해 막히는 것을 발견했습니다. 때로는 grep을 수행하여 모든 데이터를 캡처하면서 해당 항목의 맨 위로 빠르게 이동하고 싶을 때가 있습니다. 이를 위해 나는 "clear;clear; grep [options] [string] [file]; top"을 사용하는 데 익숙해졌습니다. 게으르기 때문에 이것을 Clear와 grep을 모두 수행하는 "cgrep"이라는 함수로 바꾸고 싶습니다. 내가 시도한 것은 다음과 같습니다.

cgrep () {
   clear
   clear
   grep "$1" "$2" "$3"
}

항상 하나의 선택적 매개변수만 사용한다면 이 방법은 작동합니다. 대부분의 경우 이는 문제가 되지 않지만 문제를 일으키지 않고(예: [문자열]을 [파일]로 읽기) 0-N 선택적 인수를 공급할 수 있는 방법이 궁금합니다.

나는 읽었다이 게시물, 유사한 구현을 시도했습니다. 그러나 이것은 내 요구 사항에 적합하지 않습니다. cgrep과 [string] 사이에 선택적 매개 변수를 추가하여 기존 grep과 더 유사하게 만들 수 있다면 더 좋을 것입니다.

답변1

bash 및 sh 에서 "$@"모든 위치 인수는 다음과 같이 확장됩니다.

cgrep () {
   clear
   clear
   grep "$@"
}

각 매개변수에 대한 단어 분할, 와일드카드, Null 삭제 등을 방지하려면 큰따옴표 로 $@묶어야 합니다.

3.4.2 특수 매개변수

관련 정보