Bourne Shell의 TAB 자동 완성

Bourne Shell의 TAB 자동 완성

파일 이름, 명령 등을 자동 완성하기 위해 Tab 키를 사용하는 방법을 모르겠습니다.

나는 Unix 계열 시스템(OS/390)을 사용하고 있으며 sh(BASH가 아닌 Bourne 쉘)에서는 작동하지만 다른 쉘(예: tcsh)에서는 작동하지 않는 여러 스크립트에 의존하므로 쉘을 전환할 수 없습니다. 나는 일반적으로 bash를 로컬로 실행하는 Ubuntu GNOME 터미널에서 ssh 또는 telnet을 통해 시스템에 연결합니다. 다른 사람들은 Windows XP 명령 프롬프트에서 텔넷을 통해 OS/390 시스템에 연결했으며 "set -o emacs"를 실행한 후 TAB 키를 사용하여 자동 완성할 수 있었습니다. "set -o emacs"를 실행하면 일부 적절한 기능(예: Ctrl-p를 눌러 기록을 뒤로 탐색)이 표시되지만 자동 완성 기능은 제공되지 않습니다.

나는 "set -o vi" 옵션을 알고 있지만 "ESC-*" 등을 사용하는 것은 나에게 매력적이지 않습니다. 왜냐하면 다른 사람들에게는 간단한 TAB 키가 작동한다는 것을 알기 때문입니다.

Ubuntu, GNOME Terminal, bash 또는 ssh는 텔넷을 실행하는 Windows XP 명령 프롬프트와 다른 탭 문자를 보냅니까?

자동 완성 탭을 얻을 수 없지만 동일한 원격 시스템에서 동일한 셸을 실행하는 누군가는 얻을 수 있는 이유를 아는 사람이 있습니까?

활성화하려면 어떻게 해야 합니까?탭 자동완성?

답변1

(정확한 질문에 대답하지는 않지만 해결 방법이 많이 있습니다.)

스크립트 셸을 대화형 셸과 일치시킬 필요는 없습니다. (예를 들어 대부분의 (t)csh 또는 zsh 사용자는 sh 스크립트를 작성합니다). Bourne 쉘(zsh, bash, tcsh)보다 더 나은 대화형 쉘이 있거나 설치할 수 있는 경우 이를 사용하십시오. 그렇지 않더라도 Bourne 셸보다 대화형 기능이 약간 더 나은 ksh가 있는지 확인하세요.

echo ' CtrlEnter+Tab 키로 전송된 문자를 확인할 수 있습니다 V Tab ' | od -t x1 Enter. 0000000 09 0a(즉, 위치 0, 두 문자, 탭 및 개행)이 예상되는 출력입니다. 나는 이것이 문제가 되는 것을 원하지 않습니다.

편안한 환경을 얻을 수 없다면 가능할 때마다 로컬 컴퓨터를 사용하여 상호 작용하여 원격으로 더 많은 작업을 수행해 볼 수 있습니다. 여기에는 장점과 단점이 있습니다.

  • Linux(또는 Windows가 아닌 OSX를 포함한 대부분의 다른 유닉스)에서 다음을 사용할 수 있습니다.sshfs원격 파일 시스템에 액세스합니다.
  • Emacs에서는 다음을 통해 원격 파일을 쉽게 찾아볼 수 있습니다.도보 여행가(열면 /os390hostname:/path/on/remote/machine완료됩니다.) 당신은 또한 사용할 수 있습니다에셔원격 쉘 인터페이스(Emacs 내장 쉘)를 가져옵니다. 원격 디렉토리( cd /os390hostname:/path/on/remote/machine)로 변경하면 시작하는 외부 명령이 원격 시스템에서 실행됩니다. 루트로 명령을 실행해야 하는 경우 Tramp(및 이를 기반으로 하는 Eshell)는 다음을 수행할 수 있습니다.su 또는 sudo와 함께 ssh 사용.

답변2

문제가 발생 하고 오류 메시지가 표시되지 않으면 ksh 파생 제품을 set -o emacs사용하지 않을 가능성이 높습니다 .bourne shell

Korn 쉘은 ESC를 사용하여 자동 완성합니다. 시도해 보셨나요?

참고: 기록 편집기 및 파일 이름 완성 기능이 있는 Bourne Shell을 사용하고 싶다면 다음에서 휴대용 Bourne Shell을 사용해 볼 수 있습니다.

http://sourceforge.net/projects/schilytools/files/

이는 sbrk()에서 malloc()으로 변환된 Bourne Shell이므로 UNIX가 아닌 환경에서도 실행될 수 있습니다.

이식 과정 중에 여전히 몇 가지 문제가 있을 수 있습니다.

  • OS/390 환경에서 EBCDIC를 사용하는 경우 ctype* 파일에 몇 가지 작업이 필요합니다.

  • 귀하의 환경이 fork() 또는 OpenVMS와 유사한 vfork() 에뮬레이션을 지원하지 않는 경우 며칠의 노력 없이는 컴파일하고 실행하지 못할 수도 있습니다.

바라보다http://schillix.sourceforge.net/man/man1/bosh.1.html빠른 확인 기능.

관련 정보