Editando linha de comando Bash [fechado]

2

Eu tenho duas perguntas.

Q1. Eu li um artigo link neste cntrl + / funciona perfeitamente bom para refazer a última edição desfeita, mas Ctrl +? doenot. Os detalhes do meu sistema são

[mike@localhost rshare]$ lsb_release -a
LSB Version:    :core-3.1-amd64:core-3.1-ia32:core-3.1-noarch:graphics-3.1-amd64:graphics-3.1-ia32:graphics-3.1-noarch
Distributor ID: RedHatEnterpriseServer
Description:    Red Hat Enterprise Linux Server release 5.4 (Tikanga)
Release:        5.4
Codename:       Tikanga

e configuração do terminal

[mike@localhost rshare]$ stty
speed 9600 baud; line = 0;
erase = ^H;
-brkint ixoff -imaxbel

Por favor, forneça uma boa referência para o atalho de teclado bash.

Q2. $ echo * imprime todos os arquivos no diretório atual, enquanto $ echo . simplesmente imprime "." (sem aspas) .Minha pergunta é por que não imprime todos os arquivos, incluindo arquivos ocultos no diretório atual?

    
por mike 22.05.2014 / 14:13

1 resposta

2

1. Atalhos de teclas

Como sugerido nesse artigo, bind -p lista associações de teclas.

$ bind -p | egrep 'redo|undo'
"\C-x\C-u": undo
"\C-_": undo
# vi-redo (not bound)

Note que o bash tem o modo vi e o modo emacs. As teclas se comportam de maneira diferente, dependendo de quais modos você selecionou.

2. expansão do curinga do shell

. não é um caractere curinga do shell (embora seja um metacaractere em expressões regulares). Em vez disso eu usaria

echo .*

ou

echo .??*

porque geralmente não estou interessado em . e .. e não tenho arquivos ocultos com nomes pequenos.

Michael Kjörling apontou um padrão superior:

echo .[^.]*

que é apenas mais um par de caracteres para digitar.

    
por 22.05.2014 / 14:42