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
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:
- 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.
- A pesquisa direta não funciona por padrão, porque Ctrl + S para o terminal.
Como a pesquisa mais rápida e conveniente funciona:
- você começa a digitar uma equipe
- Você se lembra da pesquisa?
- 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
É 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.
terminal | campainha visual por urgência |
---|
konsole | incluído nas configurações |
urxvt | está ai |
xfce4-terminal | incluído nas configurações |
xterm | não |
termo retro legal | não |
lxterminal | não |
gnome-terminal | nã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.