ksh93의 빈 프롬프트에서 위쪽 화살표

ksh93의 빈 프롬프트에서 위쪽 화살표

이는 설명이나 문서에 대한 포인터를 요청하는 것입니다.

저는 KornShell93( kshMac OS X 또는 ksh93다른 곳) 사용자입니다. 나는 대화형 셸로서의 상대적 단순성과 스크립팅 기능 때문에 셸을 좋아하며 2000년에 코드가 더욱 자유로워진 이후로 이 셸을 사용해 왔습니다. vi편집 모드 에서 viviraw옵션이 모두 설정된 상태로 사용합니다.

ksh93에는 명령줄에 명령을 입력하기 시작한 다음 키를 눌러 Up-arrow명령줄 기록에서 일치하는 최신 명령줄을 가져올 수 있는 깔끔한 기능이 있습니다 . 이에 대한 문서와 편집 모드 [count][A에서 의 바인딩 방법을 찾을 수 있습니다 vi. 문제 없습니다.

그러나 빈 프롬프트에서 키를 누르면 Up-arrow가장 최근에 실행된 명령이 먼저 제공되고 이전에 찾았던 명령 접두어가 무엇이든 순환하기 시작합니다. 이것은 나를 끝없이 짜증나게 합니다.

예:

다음 세 가지 명령을 실행합니다.

$ ls -l
$ ls -ld test
$ ls -ld testdir

입력 ls한 다음 Up-arrow세 번 누르면 반대 순서로 순환됩니다.

나중에 더 많은 명령이 실행되었지만 기록 검색 및 호출이 없습니다 ls.

$ cc -o testrun mytest.c
$ man strncmp

이제 Up-arrow한 번 누르면 가 표시됩니다 man strncmp. 다시 누르면 명령 대신 및 그 이전의 이전 명령이 Up-arrow표시됩니다 .ls -ld testdirls -ld testcc -o testrun mytest.c

Up-arrow나는 명령줄에 아무 것도 입력하지 않고 이전에 사용한 접두사를 검색하지 않고 가장 최근 기록을 미리 순환하도록 이 문제를 "수정"하는 방법에 대한 포인터를 찾고 있습니다 . 위의 동작이 문서화된 어딘가에 대한 포인터라도 좋을 것입니다.

편집하다:

설명서 ksh93에 따르면

[count]k 이전 명령을 가져옵니다. 입력될 때마다 k과거의 이전 명령이 액세스됩니다.

/string 가 포함된 이전 명령에 대한 기록을 뒤로 검색합니다 string. 또는 String로 종료됩니다 . 앞에 가 있으면 일치하는 줄은 로 시작해야 합니다 . null인 경우 이전 항목이 사용됩니다.RETURNNEW LINEstring^stringstringstring

[count][A 커서가 줄의 끝에 있으면 현재 줄의 내용으로 설정된 / 것과 동일합니다. string그렇지 않으면 와 동일합니다 k.

이것은~ 아니다내가 왜 그런지 설명해주세요첫 번째man strncmp(를 누르는 것처럼 k) 및그 다음에ls -ld testdir위의 예를 들어 보세요 . 매뉴얼의 텍스트를 염두에 두고, 나는 ls -ld testdir첫 번째 프레스를 시작할 것으로 예상합니다 Up-arrow(그런데 훨씬 더 짜증나는 일이 될 것입니다).

답변1

그것은 문서화 된 행동으로 밝혀졌습니다. ksh93 매뉴얼 페이지에서:

검색 편집 명령 이 명령은 명령 기록에 액세스합니다.

[count]k 이전 명령을 가져옵니다. k가 입력될 때마다 이전 명령에 다시 액세스됩니다.

[count]- k와 동일합니다.

[count][A커서가 줄 끝에 있으면 다음과 같습니다. / with 와 동일합니다.현재 줄의 내용으로 설정됩니다. 그렇지 않으면 와 동일합니다 k.

[count]j 다음 명령을 가져옵니다. 입력될 때마다 j시간상 다음 명령이 액세스됩니다.

/ 다음을 포함하는 이전 명령에 대한 기록을 뒤로 검색합니다.. NEW LINE' 으로 종료됩니다 RETURN' or. 만약에앞에는 가 ^있고 일치하는 줄은 다음으로 시작해야 합니다.. 만약에null인 경우 이전 문자열이 사용됩니다.

참고: 문자열을 입력한 후 위쪽 화살표를 사용하면 검색 문자열이고정된^마치 앞에 입력된 것처럼 줄의 시작 부분으로 이동합니다 .

예:

$ ls[Up-Arrow]

은 다음과 같습니다

$ [ESC]/^ls

관련 정보