나는 종종 다음과 같이 소스 코드 저장소에서 검색을 수행합니다.
ack -l "foo bar" .
검색에는 10~60초가 소요될 수 있으며 다음과 같은 출력이 생성됩니다.
path/to/file1
path/to/file2
path/to/file3
나는 종종 vim에 있는 모든 파일을 열 때 이 별칭을 사용합니다.
alias go='gvim `fc -s` -p'
이는 정상적으로 작동하지만 fc -s
이전 명령을 다시 실행하므로 몇 초 또는 몇 분이 걸릴 수 있습니다.
대화형으로 실행하는 모든 명령에 다음과 같은 내용을 추가하면 매우 유용합니다.
| tee /tmp/lastCommand to all commands.
이렇게 하면 출력이 유용하다고 표시되면 다른 작업을 수행할 수 있습니다.
사용 예:
유형:
find . -type f
다음을 수행합니다.
find . -type f | tee $lastOutLocation # Where lastOutputLocation=/tmp/lastOutput
그런 다음 다음과 같이 이전 명령을 필터링할 수 있습니다.
lastOut | grep "SomeString" # Where lastOut is an alias to cat $lastOutputLocation
이와 같은 작업을 수행하는 데 사용할 수 있는 메커니즘이 있습니까? 별칭이 이러한 동작을 노출한다고 생각하지 않습니다.
잠재적인 장애물:
- 복합 명령과 함께 사용할 수 있는 항목을 얻으세요.
echo 'baz' ; echo 'bar'
- 사용자가 입력한 명령을 실행하기 전에 수정하는 방법 파악
- 대화형 입력과 같은 것을 무시하십시오. 비밀번호 프롬프트를 캡처하고 싶지 않음
현재 탐색 중인 가능한 솔루션은 다음과 같습니다.
- TRAP과 shopt를 다음과 같이 사용하세요이 답변
답변1
대화형으로 실행하는 모든 명령에 다음과 같은 내용을 추가하면 매우 유용합니다.
| tee /tmp/lastCommand to all commands.
~/.inputrc
가능한 시작 중 하나는 바인딩 키를 사용하는 것입니다 . (이것은 GNU Readline 라이브러리의 구성 파일입니다.) 예를 들어 문자 o를 니모닉으로 사용하십시오.오산출...
Control-o: " | tee /tmp/lastCommand"
Return/ 키 에 바인딩할 수 있지만 Enter의도하지 않은 효과가 발생할 수 있습니다.
답변2
명령 출력을 파일로 리디렉션하려는 경우 다음과 같은 방법으로 수행할 수 있습니다.
#command > output_file
Or also #command | output_file
첫 번째는 출력 채널을 변경하여 터미널에 쓰는 모든 내용이 output_file에 기록되도록 하고, 두 번째는 두 프로그램을 모두 파이프합니다...