Nous travaillons dans la console rapidement et efficacement

Sur le réseau, vous pouvez trouver de nombreux conseils pour travailler efficacement dans la console. Dans la plupart de ces articles, les auteurs parlent de platitudes comme «apprendre les touches de raccourci» ou « sudo !! exécutera la dernière commande sous sudo». Je vais vous dire quoi faire quand vous avez déjà appris les touches de raccourci et que vous connaissez sudo !! .


Le terminal devrait démarrer instantanément


De combien de temps avez-vous besoin pour démarrer le terminal? Et un de plus? Pendant longtemps, mon terminal a été lancé par Ctrl + Alt + T et j'ai pensé que c'était rapide. Mais lorsque je suis passé d'Openbox à i3, j'ai commencé à exécuter le terminal via Win + Enter, cette combinaison était dans la configuration par défaut. Et tu sais quoi? Je ne pense plus que Ctrl + Alt + T soit rapide.


Bien sûr, la blague n'est pas dans le gain de millisecondes, mais dans le fait que l'on ouvre le terminal au niveau des réflexes, sans le remarquer complètement.


Si vous travaillez souvent dans le terminal, mais essayez de lancer la souris, essayez de configurer un raccourci clavier pratique. Je suis sûr que vous l'aimerez.


Zsh au lieu de bash


C'est un thème hollywoodien, je sais. Zsh doit être installé au moins pour trois fonctionnalités: saisie automatique avancée, correction de faute de frappe et achèvement de plusieurs chemins: lorsqu'un onglet transforme /u/s/d en /usr/share/doc . Arch Linux est depuis longtemps passé à zsh dans son disque d'installation. J'espère qu'un jour zsh deviendra le shell par défaut dans Ubuntu. Ce sera un moment historique.


Débuter avec zsh n'est pas du tout difficile. Installez-le via le gestionnaire de paquets et prenez une configuration prête à l'emploi. Je recommande la configuration utilisée par Arch Linux:


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

Il ne reste plus qu'à changer le "shell par défaut" en zsh et à se connecter.


 chsh -s $(which zsh) 

Tout, continuez à travailler comme si de rien n'était.


Que devrait être une invite shell


L'invite du shell est le petit texte qui apparaît dans le terminal avant votre commande. Il doit être personnalisé en fonction de votre caractère de travail. Pensez-y comme un tableau de bord de voiture. Mettez-y des informations utiles, laissez-les vous aider à naviguer. Rendez-le pratique, surtout si vous le voyez tous les jours!


L'invite du shell doit afficher le répertoire actuel du shell. Si le répertoire courant n'est pas affiché dans l'invite du shell, vous devrez le garder dans votre tête et le vérifier périodiquement avec la pwd . Ne fais pas ça. Gardez à l'esprit des choses plus importantes et ne perdez pas de temps avec la pwd .


Si vous passez périodiquement de votre utilisateur à root, vous avez besoin d'une indication de l'utilisateur actuel. Souvent, il est important non pas le nom d'utilisateur spécifique, mais son statut (normal ou root). La façon la plus simple de le faire est la couleur: invite shell rouge à la racine, verte à l'utilisateur. Vous ne confondrez donc jamais le shell racine avec celui habituel.


Si vous vous connectez aux serveurs via ssh, vous devez en quelque sorte distinguer votre shell local de celui du serveur. Pour ce faire, l'invite du shell doit contenir le nom d'hôte, ou mieux encore, un indicateur de la connexion ssh.


L'invite du shell peut afficher le code retour de la dernière commande. Permettez-moi de vous rappeler qu'un code retour nul signifie que la commande s'est terminée avec succès, différente de zéro - la commande a échoué. Le code retour de la dernière commande peut être trouvé avec echo $? , mais tout taper sur le clavier est trop long. Mieux, l'invite du shell vous indiquera si la commande a échoué.


Si vous travaillez avec des référentiels git, il sera utile d'afficher l'état du référentiel dans l'invite du shell: la branche actuelle et l'état du répertoire de travail. De cette façon, vous gagnerez du temps sur les commandes git status et git branch et ne vous tromperez pas dans la branche lors de la validation.


Quelqu'un ajoute une horloge ou un nom de terminal virtuel (tty), ou des gribouillis arbitraires à leur invite de shell. Tout cela est superflu. Mieux vaut laisser plus de place aux équipes.


Mon invite shell dans différentes conditions ressemble à ceci:



La capture d'écran montre que le titre de la fenêtre du terminal effectue une tâche similaire. Il s'agit également d'un élément du tableau de bord et peut également être personnalisé.


Comment implémenter tout cela dans votre .zshrc ? La variable PROMPT est responsable de l'invite de gauche et RPROMPT de l' RPROMPT droite. La variable EUID aidera à déterminer le statut de l'utilisateur (normal ou EUID et la présence d'une connexion ssh - SSH_CLIENT ou SSH2_CLIENT . Nous obtenons la pièce suivante:


 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 

Je n’indique pas spécifiquement le code prêt pour le copier-coller, car une implémentation spécifique est une question de goût. Si vous ne voulez pas vous embêter et que ma capture d'écran ne vous dégoûte pas, vous pouvez prendre la configuration depuis le github .


Résumé:


  • Le minimum requis est le répertoire courant.
  • La coquille buccale doit être clairement visible.
  • Un nom d'utilisateur ne porte pas de charge utile si vous êtes toujours assis sous le même utilisateur.
  • Le nom d'hôte est utile si vous vous connectez aux serveurs via SSH. Non requis si vous travaillez toujours sur la même machine.
  • L'achèvement infructueux de la dernière commande est utile à voir immédiatement.
  • Le statut du référentiel git permet de gagner du temps sur les commandes git status et git branch et constitue une protection supplémentaire contre le fou.

Utilisation active de l'historique des commandes


La plupart des commandes de votre vie que vous saisissez plus d'une fois, ce qui signifie qu'il serait pratique de les retirer de l'historique au lieu de les taper à nouveau. Tous les obus modernes sont capables de se souvenir de l'histoire des équipes et offrent plusieurs façons de rechercher cette histoire.


Peut-être que vous savez déjà comment vous plonger dans l'histoire avec Ctrl + R. Il présente deux inconvénients importants:


  1. Pour lancer la recherche, le champ de saisie doit être vide. C'est-à-dire dans le cas "J'ai commencé à taper une commande - je me suis souvenu de la recherche", vous devez effacer ce qui a été commencé, appuyez sur Ctrl + R et répétez l'entrée. C'est très long.
  2. La recherche directe ne fonctionne pas par défaut, car Ctrl + S arrête le terminal.

Comment fonctionne la recherche la plus rapide et la plus pratique:


  1. vous commencez à taper une équipe
  2. Vous souvenez-vous de la recherche?
  3. vous appuyez sur un raccourci clavier et le shell propose des équipes de l'histoire qui ont commencé exactement la même chose.

Par exemple, vous souhaitez synchroniser un répertoire local avec un répertoire distant à l'aide de rsync . Vous l'avez déjà fait il y a quelques heures et vous voulez sortir l'équipe de l'histoire. Tapez rsync , appuyez sur une certaine combinaison une ou deux fois, et la commande chérie est prête à s'exécuter. Vous n'avez pas besoin d'activer d'abord le mode de recherche d'historique, l'invite du shell ne change pas en (reverse-i-search)': , rien ne saute nulle part. Vous venez d'itérer sur les commandes de l'histoire. Tout comme les flèches ↑ ↓, vous parcourez les commandes entrées précédemment, uniquement avec un filtre au début de la commande. C'est sacrément pratique et fait gagner beaucoup de temps.


Dans les coquilles de poisson et d'ipython, une telle recherche est déjà affectée aux flèches. Je pense que beaucoup sont passés au poisson juste pour un tel comportement de flèche.


En bash et zsh, par défaut, cette recherche ne fonctionne pas, vous devez l'activer manuellement. J'ai configuré PgUp pour rechercher en arrière et PgDown pour rechercher en avant. C’est loin de les toucher, mais j’y suis déjà habitué. Peut-être qu'à l'avenir, je réaffecterai quelque chose de plus proche, par exemple, Ctrl + P et Ctrl + N.


Pour bash, vous devez ajouter quelques lignes à /etc/inputrc ou ~/.inputrc :


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

Si vous avez pris zshrc prêt, alors la recherche est probablement déjà attribuée à PgUp et PgDown. Sinon, ajoutez à ~/.zshrc


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

Il est curieux qu'au fil du temps, j'ai commencé à écrire des équipes en partant du principe que plus tard je les reprendrais dans l'histoire. Voici quelques astuces:


Combiner des équipes qui s'exécutent toujours les unes après les autres


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

Les chemins absolus au lieu de ceux relatifs vous permettent d'exécuter une commande à partir de n'importe quel répertoire:
vim ~/.ssh/config au lieu de vim .ssh/config , systemd-nspawn /home/chroot/stretch au lieu de systemd-nspawn stretch , etc.


Le masquage générique rend les équipes plus polyvalentes. Habituellement utilisé avec chmod et chown .


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

Raccourcis clavier


Je vais énumérer le minimum nécessaire.


Alt +. - remplace le dernier argument de la commande précédente. Vous pouvez également taper la séquence !$ .
Ctrl + A, Ctrl + E - aller respectivement au début et à la fin de la commande éditée.
Ctrl + U, Ctrl + Y - tout couper dans le presse-papiers, coller à partir du presse-papiers. Cela vous aide lorsque vous imprimez une commande complexe, puis vous comprenez que vous devez en exécuter une autre devant elle. Hmm, où cacher l'entrée actuelle? Ici et cache-toi.
Ctrl + W - efface un mot à gauche du curseur. S'il est serré et maintenu, efface rapidement la ligne de commande. Par défaut, le texte n'est pas supprimé, mais est placé dans le tampon (qui est pour Ctrl + Y).
Ctrl + K - supprime du curseur jusqu'à la fin de la ligne. Ctrl + A, Ctrl + K efface rapidement la ligne de commande.
PgUp, PgDown, Ctrl + R - recherche par historique.
Ctrl + L - effacez le terminal.


Réactivité du clavier


Je vais vous parler d'un petit paramètre qui vous permet de faire défiler plus rapidement, de vous déplacer dans le texte ou de l'effacer. Que faisons-nous lorsque nous voulons effacer quelque chose de long? Maintenez Backspace et regardez comment le curseur recule, ramassant des lettres supplémentaires. Que se passe-t-il avec ça? Lorsque Backspace est enfoncé, un caractère est effacé, puis il y a un léger retard, puis la répétition automatique est déclenchée: Backspace supprime les caractères un par un, comme s'ils frappaient constamment dessus.


Je recommande d'ajuster le retard et le taux de répétition automatique à la vitesse de votre doigt. Le délai avant une nouvelle tentative automatique est nécessaire lorsque vous souhaitez supprimer un seul caractère - cela vous donne le temps de relâcher la touche. Un délai trop long rend l'attente d'une nouvelle tentative automatique. Pas assez longtemps pour ennuyer, mais assez pour ralentir le transfert des pensées de la tête vers l'ordinateur. Plus la fréquence de répétition est élevée, plus le texte est effacé rapidement et plus il est difficile d'arrêter ce processus à temps. L'essence du décor est de trouver un terrain d'entente.


Donc, la commande magique:


 xset r rate 190 20 

190 - la durée du retard en millisecondes,
20 - fréquence du nombre de répétitions par seconde.


Je recommande de commencer par ces valeurs et de réduire progressivement le délai jusqu'à l'apparition de faux positifs, puis légèrement en arrière. Si vous définissez un délai très court, le clavier deviendra impossible à utiliser. Vous devez redémarrer le serveur X ou tout l'ordinateur. Soyez donc prudent.


Pour enregistrer les paramètres, ajoutez cette commande quelque part au démarrage automatique X.


Barre de progression


Je dois souvent lancer de longs processus: une sorte de sauvegarde en gras, la copie sur le réseau, le déballage / emballage des archives, la construction de packages, etc. Habituellement, je démarre un tel processus, passe à une autre tâche et regarde périodiquement pour voir si mon long processus est terminé. Il m'arrive de me plonger dans le travail et de l'oublier. La solution est d'ajouter une notification de l'achèvement du processus, ce qui me mettra hors de transe.


Vous pouvez utiliser différents outils pour cela: notify-send, dzen2, bip, aplay. Tous sont bons à leur manière, mais ne fonctionnent pas sur ssh. Par conséquent, j'utilise le bip du terminal:


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

Dans le codage ASCII, il existe un caractère 0x7 appelé bell . Il est conçu pour émettre un bip avec un haut-parleur PC. Un haut-parleur PC n'est pas à jour, il n'est pas partout et il n'est toujours pas entendu dans les écouteurs. Par conséquent, certains terminaux utilisent la soi-disant cloche visuelle. J'utilise urxvt et cela fait tourner la cloche visuelle sur le drapeau d'urgence. C'est quand une fenêtre vous indique qu'elle a besoin d'attention.


Vous pouvez vérifier dès maintenant comment votre terminal réagit au symbole de la cloche:


 sleep 3; echo $'\a' 

Trois secondes vous sont accordées pour passer à une autre fenêtre, sinon cela pourrait ne pas fonctionner.


Malheureusement, la cloche visuelle via l'urgence n'est pas disponible dans tous les terminaux. J'ai vérifié les plus populaires.


terminalcloche visuelle via l'urgence
konsoleinclus dans les paramètres
urxvtest là
xfce4-terminalinclus dans les paramètres
xtermnon
terme rétro coolnon
lxterminalnon
gnome-terminalnon

Il a fallu trop de temps pour écrire echo $'\a' , donc j'ai fait un wake alias.


Alias


Les commandes cp , scp et rm doivent toujours fonctionner récursivement. L'argument -r n'est qu'un mauvais héritage! Il y a encore une excuse pour cp :


 cp * foodir 

il copie uniquement les fichiers dans foodir, et avec le commutateur -r , il pensera que vous avez décidé de copier foodir vers lui-même. Mais à quelle fréquence avez-vous besoin de cette fonctionnalité?


rm et scp n'ont aucune excuse, ils sont juste ennuyeux! La commande mkdir a une situation similaire avec le commutateur -p . ~/.zshrc donc pas à ajouter à ~/.zshrc


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

Wow, comment ai-je pu vivre sans ça avant! Vous pouvez aller encore plus loin et ajouter -f à rm , mais à vos risques et périls. Je me retiens pour l'instant.


Vous utilisez probablement déjà différentes variantes de ls , car ce sont les alias les plus populaires.


 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' 

Eh bien, la couleur grep est beaucoup plus agréable que l'incolore:


 alias grep='grep --colour=auto' 

N'oubliez pas que les alias ne fonctionnent pas dans les scripts! Toutes les clés doivent y être spécifiées.


Méthode d'impression aveugle


Peu importe à quel point cela peut être banal, mais la méthode d'impression aveugle à dix doigts vous permet d'imprimer plus rapidement. Au début, ce sera difficile, mais avec le temps, vous accélérerez à des vitesses sans précédent.


Maîtriser la méthode d'impression en aveugle est préférable en vacances ou en vacances lorsque personne ne vous presse. Dans le processus d'apprentissage, en aucun cas ne peut se précipiter. Votre tâche consiste à vous rappelerse trouve la lettre. Et pas tant avec le cerveau qu'avec les muscles. Mieux vaut taper lentement mais sans erreurs que rapidement avec des erreurs. N'oubliez pas: les maîtres atteignent des vitesses élevées non pas au détriment des doigts rapides, mais parce qu'ils ne font pas d'erreurs.


Ne vous laissez pas emporter au début avec les claviéristes. Il est psychologiquement difficile de rester calme pendant la compétition. Apprenez sur les simulateurs. C'est bien quand le simulateur propose des mots qui peuvent être prononcés mentalement. J'ai étudié les simulateurs en ligne vse10 et typingstudy . Le célèbre simulateur "Solo au clavier" me paraissait stupide.


Cela vaut la peine de commencer par la rangée centrale de Fyvaprolge. Ce n'est qu'après vous être rappelé où se trouve la clé, que cela vaut la peine de continuer. Seulement après ça.


Faites des pauses. Reposez votre cerveau et vos doigts. Sentez-vous que les erreurs ont coulé - il est temps de faire une pause.


Au début, j'ai maîtrisé la méthode d'impression aveugle en russe et j'ai commencé par l'accélération. Maintenant, j'améliore mes compétences dans la mise en page anglaise.

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


All Articles