Trabalhamos no console com rapidez e eficiência

Na rede, você pode encontrar muitas dicas para trabalhar com eficiência no console. Na maioria desses artigos, os autores falam sobre banalidades como "aprender teclas de atalho" ou " sudo !! executará o último comando no sudo". Vou lhe dizer o que fazer quando você já aprendeu as teclas de atalho e sabe sobre o sudo !! .


O terminal deve iniciar instantaneamente


Quanto tempo você precisa para iniciar o terminal? E mais um? Por um longo tempo, meu terminal foi lançado pelo Ctrl + Alt + T e eu pensei que era rápido. Mas quando mudei do Openbox para o i3, comecei a rodar o terminal através do Win + Enter, essa combinação estava na configuração padrão. E você sabe o que? Não acho mais que Ctrl + Alt + T seja rápido.


Obviamente, a piada não está no ganho de milissegundos, mas no fato de você abrir o terminal no nível dos reflexos, sem perceber.


Se você trabalha frequentemente no terminal, mas procura o mouse para iniciá-lo, tente configurar uma tecla de atalho conveniente. Tenho certeza que você vai gostar.


Zsh em vez de bash


Este é um tema de Hollywood, eu sei. O Zsh deve ser instalado pelo menos para três recursos: autopreenchimento avançado, correção de erros de digitação e conclusão de vários nomes de caminhos: quando uma guia transforma /u/s/d em /usr/share/doc . O Arch Linux mudou há muito tempo para o zsh em seu disco de instalação. Espero que um dia o zsh se torne o shell padrão no Ubuntu. Este será um momento histórico.


Começar com o zsh não é nada difícil. Instale-o através do gerenciador de pacotes e faça algumas configurações prontas. Eu recomendo a configuração usada pelo Arch Linux:


 wget -O ~/.zshrc https://git.grml.org/f/grml-etc-core/etc/zsh/zshrc 

Resta apenas alterar o "shell padrão" para zsh e efetuar login.


 chsh -s $(which zsh) 

Tudo, continue trabalhando como se nada tivesse acontecido.


O que deve ser um prompt de shell


O prompt do shell é o pequeno texto que aparece no terminal antes do seu comando. Ele precisa ser personalizado para o seu caráter de trabalho. Pense nisso como um painel de carro. Coloque informações úteis lá, deixe-o ajudá-lo a navegar. Torne-o conveniente, especialmente se você o vê todos os dias!


O prompt do shell deve mostrar o diretório atual do shell. Se o diretório atual não for exibido no prompt do shell, você deverá mantê-lo na cabeça e verificar periodicamente com o pwd . Não faça isso. Lembre-se de coisas mais importantes e não perca tempo com o pwd .


Se você mudar periodicamente do usuário para o root, precisará de uma indicação do usuário atual. Geralmente, é importante não o nome de usuário específico, mas seu status (regular ou raiz). A maneira mais fácil de fazer isso é a cor: prompt de shell vermelho na raiz, verde no usuário. Portanto, você nunca confundirá o shell raiz com o habitual.


Se você se conectar aos servidores via ssh, precisará distinguir o shell local do servidor. Para fazer isso, o prompt do shell deve conter o nome do host ou, melhor ainda, um indicador da conexão ssh.


O prompt do shell pode mostrar o código de retorno do último comando. Deixe-me lembrá-lo de que um código de retorno nulo significa que o comando foi concluído com êxito, diferente de zero - o comando falhou. O código de retorno para o último comando pode ser encontrado com echo $? , mas digitar tudo no teclado é muito longo. Melhor, o prompt do shell informará se o comando falhou.


Se você trabalha com repositórios git, será útil exibir o status do repositório no prompt do shell: a ramificação atual e o estado do diretório de trabalho. Dessa forma, você economizará tempo com os comandos git status e git branch e não se enganará na ramificação ao confirmar.


Alguém adiciona um relógio ou nome de terminal virtual (tty) ou alguns rabiscos arbitrários ao prompt do shell. Tudo isso é supérfluo. Melhor deixar mais espaço para as equipes.


Meu prompt de shell em diferentes condições se parece com isso:



A captura de tela mostra que o título da janela do terminal executa uma tarefa semelhante. Este também é um pedaço do painel e também pode ser personalizado.


Como implementar tudo isso no seu .zshrc ? A variável PROMPT é responsável pelo prompt da esquerda e RPROMPT pelo RPROMPT da direita. A variável EUID ajudará a determinar o status do usuário (regular ou EUID e a presença de uma conexão ssh - SSH_CLIENT ou SSH2_CLIENT . Temos a seguinte peça de trabalho:


 if [[ -n "$SSH_CLIENT" || -n "$SSH2_CLIENT" ]]; then if [[ $EUID == 0 ]]; then PROMPT=... else PROMPT=... fi else # not SSH if [[ $EUID == 0 ]]; then PROMPT=... else PROMPT=... fi fi 

Não indico especificamente o código pronto para copiar e colar, porque uma implementação específica é uma questão de gosto. Se você não quer se incomodar e minha captura de tela não lhe dá nojo, você pode fazer a configuração no github .


Resumo:


  • O mínimo necessário é o diretório atual.
  • A concha bucal deve estar claramente visível.
  • Um nome de usuário não carrega uma carga útil se você estiver sempre sentado sob o mesmo usuário.
  • Nome do host é útil se você se conectar aos servidores via SSH. Não é necessário se você sempre trabalha na mesma máquina.
  • A conclusão sem êxito do último comando é útil para ver imediatamente.
  • O status do repositório git economiza tempo nos comandos git status e git branch e é uma proteção adicional contra o tolo.

Uso ativo do histórico de comandos


Na maioria dos comandos da sua vida, você digita mais de uma vez, o que significa que seria conveniente retirá-los da história em vez de digitar novamente. Todas as conchas modernas são capazes de lembrar a história das equipes e fornecer várias maneiras de pesquisar essa história.


Talvez você já saiba como mergulhar na história com Ctrl + R. Tem duas desvantagens significativas:


  1. Para iniciar a pesquisa, o campo de entrada deve estar vazio. I.e. no caso "Comecei a digitar um comando - lembrei-me da pesquisa", você deve apagar o que foi iniciado, pressione Ctrl + R e repita a entrada. Este é um tempo muito longo.
  2. A pesquisa direta não funciona por padrão, porque Ctrl + S para o terminal.

Como a pesquisa mais rápida e conveniente funciona:


  1. você começa a digitar uma equipe
  2. Você se lembra da pesquisa?
  3. você pressiona uma tecla de atalho e o shell oferece equipes do histórico que começaram exatamente da mesma maneira.

Por exemplo, você deseja sincronizar um diretório local com um diretório remoto usando o rsync . Você já fez isso algumas horas atrás e deseja tirar o time da história. Digite rsync , pressione uma certa combinação uma ou duas vezes e o comando estimado está pronto para ser executado. Você não precisa ativar o modo de pesquisa de histórico primeiro, o prompt do shell não muda para (reverse-i-search)': , nada salta em qualquer lugar. Você apenas repete os comandos da história. Assim como as setas ↑ ↓, você repete os comandos inseridos anteriormente, apenas com um filtro no início do comando. É extremamente conveniente e economiza muito tempo.


Nos reservatórios fish e ipython, essa pesquisa já está atribuída às setas. Eu acho que muitos passaram a pescar apenas por causa desse comportamento de flecha.


No bash e zsh, por padrão, esta pesquisa não funciona, você deve habilitá-la manualmente. Eu configurei o PgUp para pesquisar para trás e o PgDown para procurar para a frente. Está longe de alcançá-los, mas eu já estou acostumado. Talvez no futuro eu reatribua algo mais próximo, por exemplo, Ctrl + P e Ctrl + N.


Para o bash, você precisa adicionar algumas linhas em /etc/inputrc ou ~/.inputrc :


 "\e[5~": history-search-backward "\e[6~": history-search-forward 

Se você preparou o zshrc , é provável que a pesquisa já esteja atribuída ao PgUp e PgDown. Caso contrário, adicione a ~/.zshrc


 bindkey "^[[5~" history-beginning-search-backward # pg up bindkey "^[[6~" history-beginning-search-forward # pg down 

É curioso que, com o tempo, comecei a escrever equipes com base no pressuposto de que mais tarde eu as pegaria na história. Aqui estão alguns truques:


Combinando equipes que sempre executam uma após a outra


 ip link set eth1 up && dhclient eth1 mkdir /tmp/t && mount /dev/sdb1 /tmp/t 

Os caminhos absolutos, em vez dos relativos, permitem executar um comando a partir de qualquer diretório:
vim ~/.ssh/config vez de vim .ssh/config , systemd-nspawn /home/chroot/stretch vez de systemd-nspawn stretch , etc.


O mascaramento curinga torna as equipes mais versáteis. Geralmente use com chmod e chown .


 chown root:root /var/www/*.sq && chmod 644 /var/www/*.sq 

Teclas de atalho


Vou listar o mínimo necessário.


Alt +. - substitui o último argumento do comando anterior. Você também pode digitar a sequência !$ .
Ctrl + A, Ctrl + E - vão para o início e o fim do comando editado, respectivamente.
Ctrl + U, Ctrl + Y - recorta tudo na área de transferência e cole na área de transferência. Ajuda quando você imprime um comando complexo e depois entende que precisa executar outro na frente dele. Hmm, onde esconder a entrada atual? Aqui e se esconda.
Ctrl + W - apaga uma palavra à esquerda do cursor. Se preso e mantido, limpa rapidamente a linha de comando. Por padrão, o texto não é excluído, mas é colocado no buffer (que é para Ctrl + Y).
Ctrl + K - exclui do cursor até o final da linha. Ctrl + A, Ctrl + K limpa rapidamente a linha de comando.
PgUp, PgDown, Ctrl + R - pesquisa por histórico.
Ctrl + L - limpe o terminal.


Capacidade de resposta do teclado


Vou falar sobre uma configuração pequena, que permite rolar mais rápido, mover-se pelo texto ou apagar. O que fazemos quando queremos apagar algo por muito tempo? Segure Backspace e observe como o cursor recua, captando letras extras. O que acontece com isso? Quando o Backspace é pressionado, um caractere é apagado, ocorre um pequeno atraso e a repetição automática é acionada: O Backspace remove os caracteres um por um, como se eles constantemente o batessem.


Eu recomendo ajustar o atraso e a taxa de repetição automática à velocidade do seu dedo. O atraso antes da nova tentativa automática é necessário quando você deseja excluir apenas um caractere - ele oferece tempo para liberar a tecla. Um atraso muito longo torna a espera pela nova tentativa automática. Não é o suficiente para incomodar, mas o suficiente para retardar a transferência de pensamentos da cabeça para o computador. Quanto maior a frequência de repetição, mais rápido o texto é apagado e mais difícil é interromper esse processo a tempo. A essência da configuração é encontrar um meio termo.


Então o comando mágico:


 xset r rate 190 20 

190 - a duração do atraso em milissegundos,
20 - frequência no número de repetições por segundo.


Eu recomendo começar com esses valores e reduzir gradualmente o atraso até que falsos positivos apareçam, depois levemente para trás. Se você definir um atraso muito curto, o teclado ficará impossível de usar. Você precisa reiniciar o servidor X ou o computador inteiro. Então tenha cuidado.


Para salvar os parâmetros, adicione este comando em algum lugar ao início automático do X.


Barra de progresso


Frequentemente, tenho que iniciar processos longos: algum tipo de backup ousado, copiar pela rede, descompactar / empacotar arquivos, criar pacotes etc. Normalmente, inicio esse processo, alterno para outra tarefa e periodicamente procuro verificar se meu longo processo terminou. Acontece que eu me imergo no trabalho e esqueço disso. A solução é adicionar uma notificação da conclusão do processo, o que me levará ao transe.


Você pode usar ferramentas diferentes para isso: notificar-enviar, dzen2, bipe, aplay. Todos eles são bons à sua maneira, mas não funcionam no ssh. Portanto, eu uso o bipe do terminal:


 long-running-command; echo $'\a' 

Na codificação ASCII, há um caractere 0x7 chamado bell . Ele foi projetado para emitir um bipe com um alto-falante do PC. Um alto-falante do PC não está atualizado, não está em todo lugar e ainda não é ouvido nos fones de ouvido. Portanto, alguns terminais usam a chamada campainha visual. Eu uso o urxvt e faz com que a campainha visual acenda a bandeira de urgência. É quando uma janela diz que precisa de atenção.


Você pode verificar agora como o seu terminal reage ao símbolo da campainha:


 sleep 3; echo $'\a' 

São dados três segundos para você alternar para outra janela, caso contrário, pode não funcionar.


Infelizmente, a campainha visual por urgência não está disponível em todos os terminais. Eu verifiquei o mais popular.


terminalcampainha visual por urgência
konsoleincluído nas configurações
urxvtestá ai
xfce4-terminalincluído nas configurações
xtermnão
termo retro legalnão
lxterminalnão
gnome-terminalnão

Demorou muito para escrever echo $'\a' , então fiz um pseudônimo.


Aliases


Os comandos cp , scp e rm devem sempre funcionar recursivamente. O argumento -r é apenas um legado ruim! Ainda há uma desculpa para o cp :


 cp * foodir 

ele copia apenas arquivos para o foodir e, com a opção -r , ele pensa que você decidiu copiar o foodir para si mesmo. Mas com que frequência você precisa desse recurso?


rm e scp não têm desculpas, são apenas chatos! O comando mkdir tem uma situação semelhante com a opção -p . Portanto, sinta-se à vontade para adicionar ao ~/.zshrc


 alias cp='cp -r' alias scp='scp -r' alias rm='rm -r' alias mkdir='mkdir -p' 

Uau, como eu vivi sem isso antes! Você pode ir ainda mais longe e adicionar -f à rm , mas por seu próprio risco e risco. Eu me contenho por enquanto.


Você provavelmente já usa diferentes variações de ls , porque esses são os aliases mais populares.


 alias ls='ls -F --color=auto' alias la='ls -A --color=auto' alias ll='ls -l --color=auto -h' alias lla='ll -A --color=auto -h' 

Bem, a cor grep é muito melhor do que incolor:


 alias grep='grep --colour=auto' 

Não esqueça que os aliases não funcionam em scripts! Todas as chaves devem ser especificadas lá.


Método de Impressão Cega


Não importa o quão banal seja, mas o método cego de impressão com dez dedos permite que você imprima mais rapidamente. No começo, será difícil, mas com o tempo você acelerará para velocidades sem precedentes.


O domínio do método de impressão às cegas é melhor nas férias ou nas férias em que ninguém está apressando você. No processo de aprendizagem, em nenhum caso não pode se apressar. Sua tarefa é lembrar onde está localizada a letra. E não tanto com o cérebro como com os músculos. É melhor digitar lentamente, mas sem erros, do que rapidamente com erros. Lembre-se: os mestres atingem altas velocidades não à custa de dedos rápidos, mas porque não cometem erros.


Não se empolgue a princípio com tecladistas. É psicologicamente difícil manter a calma durante a competição. Aprenda em simuladores. É bom quando o simulador oferece palavras que podem ser pronunciadas mentalmente. Estudei no vse10 e datilografei simuladores online de estudos . O famoso simulador "Solo no teclado" me pareceu estúpido.


Vale a pena começar com a linha central de Fyvaprolge. Somente depois de lembrar onde está localizada a chave, vale a pena seguir em frente. Somente depois disso.


Faça pausas. Descanse seu cérebro e dedos. Sinta que os erros surgiram - é hora de fazer uma pausa.


No começo, dominei o método de impressão às cegas em russo e comecei com a aceleração. Agora estou melhorando minhas habilidades no layout em inglês.

Source: https://habr.com/ru/post/pt425137/


All Articles