h + 검색 모드를 입력하여 터미널 기록을 빠르게 검색할 수 있는 별칭이 있습니다.
alias h='history | /usr/bin/grep '
이것이 작동하는 방식이지만 grep 인스턴스를 더 추가하지 않으면 더 많은 검색 패턴을 추가할 수 없습니다. 예를 들어h pacman | grep wine
다른 가능한 매개변수를 검색 패턴으로 변환하도록 조정하고 싶습니다. 예를 들어h pacman wine
관찰: 이를 달성하기 위한 기성 솔루션이 있다는 것을 알고 있지만 어떻게 해야 할지 모르기 때문에 배우고 싶습니다.
답변1
이렇게 하려면 쉘 별칭 대신 쉘 함수가 필요합니다.
function h() {
code="cat ~/.bash_history"
for arg in $@ ; do
code="$code | grep $arg"
done
eval "$code"
}
.bashrc
이 함수를 별칭 지시문이나 일반적으로 별칭 지시문을 작성하는 모든 위치에 배치할 수 있습니다 .
답변2
여기서 핵심은 여러 모드의 경우 일반적으로 옵션을 사용하여 각 모드를 지정 grep
해야 한다는 것입니다( 단지 ). 두 가지 옵션:-e
grep -e pacman -e wine
grep pacman wine
별칭은 매개변수를 지원하지 않으므로 다음과 같은 함수가 사용됩니다.
h () { local args=() # local array to store argument with -e for grep for i do args+=(-e "$i") # tack on the -e for each argument done history | grep "${args[@]}" }
이는 모든 매개변수가 모드라고 가정합니다
grep
.별칭을 계속 사용하고
-e
자신만의 별칭을 추가하세요.h -e pacman -e wine
grep
이 방법으로 원하는 다른 옵션을 추가할 수도 있습니다 (예:-C 3
결과 주위에 일부 컨텍스트 표시).