Ctrlbash 기록을 검색하기 위해 +를 사용할 R때 인접하지 않은 두 단어를 일치시키는 방법이 있습니까 ? 예를 들어, 을 포함 httpd
하지만 인접하지 않은 awk
마지막 명령을 찾고 싶다고 가정해 보겠습니다 . bash 기록을 greping하여 둘 다 일치시키거나 Ctrl+를 눌러 원하는 명령을 찾을 때까지 키워드와 일치하는 항목을 순환하는 것보다 R더 나은 옵션이 있습니까?
답변1
답변2
이 작업을 수행하는 내장된 방법은 모르지만 grep을 수행하고 기록 파일을 편집하여 결과가 마지막에 표시되도록 하는 작은 함수를 작성할 수 있습니다. 그런 다음 쉽게 일치하는 항목을 선택하고 새로운 역사에 추가하세요. 계속해서 전진하세요. (이렇게 하면 기록의 명령 순서가 변경됩니다.)
이런 기능이군요. 나는 당신이 나타나는 순서에 관계없이 2개 이상의 단어를 찾고 싶다고 가정합니다. 허용되는 최대 일치 수는 10개입니다. 또한 초기 grep이 큰 문자열을 반환하지 않거나 bash 문자열 대신 임시 파일을 사용해야 한다고 가정합니다.
hist(){
local maxmatches=10 word=$1 matches new nummatches
shift
history -w # write out history to HISTFILE
matches=$(grep -e "$word" $HISTFILE)
for word
do new=$(echo "$matches" | grep -e "$word") || return # if str too big
matches=$new
done
nummatches=$(echo "$matches" | wc -l)
echo "$nummatches matches"
if [ $nummatches -gt 0 -a $nummatches -le $maxmatches ]
then echo "$matches" >>$HISTFILE # add matches to end of file
history -c # clear history
history -r # read history from file
history $nummatches # show last few lines
else echo "zero or too many matches. (max $maxmatches)"
fi
}
단어에 대해 정규식 패턴 일치를 수행하지 않으려면 grep 대신 fgrep을 사용하십시오. 특정 시퀀스만 필요한 경우 "httpd.*awk"와 같은 단일 단어를 사용하세요. 이 방법으로 한 단어만 사용되는 경우 for 루프를 제거할 수도 있습니다.