Como voltar para o primeiro caractere na linha de comando * nix?

14

Ao escrever um longo comando na linha de comando * nix e ter que voltar ao primeiro caractere, para adicionar algo no começo (por exemplo, um nohup , quando você perceber que o processo será longo , ou um sudo , quando você percebe que precisa de permissões de root) pode levar muito tempo para o cursor retornar ao primeiro caractere ...

Existe um atalho que permite que você pule direto para lá?

Estou usando um mac, então Início não é uma opção

    
por clami219 30.05.2014 / 15:50

5 respostas

25

Ctrl + A deve funcionar. Ctrl + E corresponde ao final da linha de comando.

    
por 30.05.2014 / 15:57
10

Isso depende do shell em questão.

Algumas conchas (como AT & T ksh88) praticamente não oferecem edição de linha de entrada.

Em shells implementando a edição do modo vi (você pode ter que habilitar isso com set -o vi ), isso é feito pressionando Esc (para mudar do modo de inserção) seguido por 0 para pular para o início da linha ou $ para pular para o final da linha. Em seguida, entre novamente no modo de inserção pressionando i - o cursor permanecerá onde está - ou a - o cursor moverá um para a direita para acrescentar texto.

A edição do modo

vi foi recentemente solicitada pelo padrão POSIX.

A edição do muito mais comum emacs (graças a Deus, não tem nada a ver com o sistema operacional-slash editor-slash) usa Ctrl-A para pular para o início da linha e Ctrl-E para pular para o final da linha. Este modo requer que você execute set -o emacs em muitos shells (mais proeminentemente AT & T ksh93), mas está ativado por padrão em mksh e bash do GNU.

A maioria dos shells modernos suportam os modos emacs e vi . (Ambos os modos requerem um tty para trabalhar.)

Em muitos shells, você pode personalizar atalhos de teclado; geralmente para o modo emacs , embora alguns shells também permitam personalizar o atalho para o modo vi . Se você tem uma chave que você preferiria ter este limite, primeiro você precisa descobrir as seqüências de teclas que produz (por exemplo, no meu sistema, Alt-CursorLeft produz Esc + [+ 1 +; + 3 + D ( ^[[1;3D ; ^X é Ctrl-X e ^[ é Esc ), então eu posso digitar algo como

bind '^[[1;3D=beginning-of-line'
bind '"\e[1;3D":beginning-of-line'

e terá essa ligação de teclas alterada, dependendo do shell. Geralmente, você pode persistir no arquivo de inicialização ( ~/.mkshrc , ~/.kshrc ) ou, para o GNU bash, em ~/.inputrc . Note que nem todos os shells suportam bindind todas as chaves em todas as versões.

Geralmente, você pode descobrir quais caracteres uma chave gera apenas executando cat no shell, digitando a tecla e assistindo. Em seguida, pressione ^C ( Ctrl-C ) para abortar cat .

    
por 30.05.2014 / 18:38
2

Se você tiver mudado para o modo vi , usando set -o vi , você pode pressionar Esc e I ou A para insira texto no início ou no final da linha. Ou se você está apenas olhando para mover o cursor, é ^ e $ .

    
por 30.05.2014 / 17:06
2

No modo emacs (alterado por: set -o emacs ) é pressionando:

  • Ctrl + A e Ctrl + E
  • Início e Fim
  • Esc + b e Esc + f (move o cursor para trás e para frente da palavra atual)

No modo vi (comutado por: set -o vi ) quando no modo de comando ( Esc ) é pressionando:

  • 0 / ^ e $ (ele ficará no modo de comando)
  • I e A (mudará para o modo de edição)

Veja também:

por 02.06.2014 / 10:51
1

Você já tentou a tecla Home? Eu uso o MobXterm para conectar a caixa Linux e usar as teclas Home e End no teclado para ir para o primeiro ou último caractere do comando.

    
por 30.05.2014 / 15:53