콘솔에서 기록과 유사한 쉘 스크립트 작성 [닫기]

콘솔에서 기록과 유사한 쉘 스크립트 작성 [닫기]

나는 간단한 스크립트를 작성하고 grep, find, sed와 같이 내가 가장 좋아하는 명령을 모두 저장하려고 합니다.

셸에서 기록 명령을 사용할 때 (history)를 사용하여 모든 기록 명령을 표시할 수 있습니다. "!"(느낌표) 기호를 재사용하여 이전 명령을 가져올 수 있습니다.

2099 -> ls -lah(내 기록에서)를 가정해 보겠습니다.

>!2099 <- ENTER

>ls -la[CURSOR]

다음 줄에 를 입력하면 '!2099 <- ENTER'.'ls -la[CURSOR]'

쉘 스크립트에서 이것을 구현하는 방법을 아는 사람이 있습니까?

입력 문자열에서 제거를 시도했지만 '\r'지금까지는 작동하지 않습니다.

답변1

fc명령을 사용하면 기록에서 명령을 편집하고 나열할 수 있습니다. 이는 역사와 관련된 모든 것을 스크립팅할 때 매우 유용합니다. 목록 항목:

fc -ln [first] [last]

-l-n기록 번호 표시를 방지하는 목록 플래그이며 [first]기록 [last]명령의 번호입니다. 단일 명령을 나열하려면 해당 번호를 반복하십시오. 따라서 귀하의 예를 사용하여 :

cmd=$(fc -ln 2099 2099)
echo "$cmd"

ls -la출력에는 시작 부분에 탭이 있으므로 fc파이프 또는sed 's/^\t//'tr -d '\t'

관련 정보