Por que o Korn Shell não faz ctrl-r?

3

Se eu usar o PC-BSD com o shell padrão (Korn), então Ctrl + r não funciona. Por que não funciona?

Ctrl - r foi introduzido para pesquisar sua história no final dos anos 70 ou início dos anos 80 e meu BSD ainda não pode fazê-lo (enquanto o Ubuntu pode).

Ctrl - r é originado com o Emacs, não é? Quando? 1975? 1983?

    
por Niklas Rosencrantz 20.04.2016 / 14:24

3 respostas

10

Ctrl + R funciona com ksh no modo emacs ( ksh -o emacs ou set -o emacs dentro de ksh ), e provavelmente foi o primeiro shell a suportá-lo. Apenas não é tão interativo quanto no widget zsh ou bash ou tcsh i-search-back .

Em ksh (ambos ksh88 e ksh93 ), você digita Ctrl + R text Retornar . E Ctrl + R Retorna para pesquisar novamente com o mesmo texto.

No modo vi , você pode usar ? para pesquisar para trás e n para a próxima pesquisa.

Esse recurso emacs pesquisa incremental foi adicionado a:

  • bash / readline pelo menos desde julho de 1989, pois o recurso era já mencionado na usenet nesse momento mas provavelmente não desde o início, já que a versão de readline enviada com zsh-1.0 não a tinha.
  • zsh desde 2.0 em 1991 depois que o editor de linha foi reescrito e não mais usado readline .
  • tcsh em V6.00.03, 10/21/91, mas não ligado por padrão ( tcsh tinha outro mecanismo de pesquisa em Meta-P por um tempo antes disso).
  • ksh : ksh foi provavelmente o primeiro shell Unix a ter um modo de edição emacs , escrito em 1982 por Mike Veach (assim como o modo vi por Pat Sullivan, reutilizando o código que os dois já haviam aplicado independentemente da casca de Bourne) em AT & T. O ksh foi introduzido pela primeira vez fora da AT & T na conferência USENIX de 1983 onde esses recursos foram descritos , mas não estava disponível comercialmente até algum tempo depois disso ( 1 , 2 ). É difícil dizer se ^R já estava lá no momento (em qualquer caso, já estava lá em 1986 ), mas é difícil imaginar que não seja como um recurso essencial, especialmente para um shell, e eu esperaria vi ? modo % também teria estado lá no momento.
por 20.04.2016 / 15:05
7

O shell Korn suporta pesquisas de histórico usando Ctrl R , pelo menos desde ksh93 (e talvez até ksh88 ), mas elas não funcionam como bash . Primeiro você precisa ativar o modo Emacs:

set -o emacs

(Isso habilita outras amenidades, como teclas de seta que funcionam por padrão).

Agora, se você pressionar Ctrl R , o shell exibirá ^R ; digite sua pesquisa, tecle Enter , e o shell mostrará a entrada do histórico correspondente mais próxima. Você pode pressionar Enter novamente para executá-lo como está ou editá-lo.

    
por 20.04.2016 / 15:03
-1

Nos anos 70, não havia nenhum histórico editável de cursor para shells.

O primeiro shell com histórico de edição de cursor integrado foi meu bsh em 1984 (baseado em um protótipo de 1982). Esta implementação de histórico usa o crontrol-r para reexibir a linha de comando atual.

Em 1986, o Korn Shell tornou-se membro do grupo de shells que implementam um histórico de edição de cursor totalmente integrado.

Uma versão tcsh com editor integrado apareceu pela primeira vez em 1987.

Bash apareceu em 1989.

O Ksh, por padrão, não é executado no modo emacs , mas sim no modo gmacs .

Note que o ksh93 suporta a pesquisa com control-r mesmo no modo padrão, ele simplesmente não diz que está nesse modo. Se eu digitar:

^R

Eu obtenho esse eco e, em seguida, posso inserir uma string de pesquisa:

^Rali
alias a=b

encontra o comando alias no histórico.

    
por 20.04.2016 / 14:53