나는 간단한 스크립트를 작성하고 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'