J'utilise un terminal quotidiennement depuis de nombreuses années maintenant. J'utilise un shell fortement personnalisé et non par défaut. Je fais un usage intensif de la complétion par tabulation et j'ai mémorisé les drapeaux pour de nombreuses commandes. Jusqu'à il y a environ un an, je pensais avoir atteint le pic de productivité du terminal. Ensuite, j'ai découvert une vague d'utilitaires shell qui, bien qu'obscurs, ont fondamentalement modifié la façon dont j'interagis avec mon environnement de terminal pour le mieux.
Cet article est le premier d'une série sur ces nouveaux utilitaires (plus quelques outils que je connais depuis plus longtemps et que j'adore). Aujourd'hui, nous examinerons des outils spécifiques pour se déplacer dans votre système de fichiers.
Sauter :z
Vous savez comment vous pouvez taper les premières lettres d'un site Web couramment utilisé dans votre navigateur et appuyer sur Entrée avec la certitude que vous serez redirigé vers le bon endroit ? Et si nous apportions cette même expérience dans votre coquille ? Imaginez que vous puissiez vous téléporter vers un répertoire couramment utilisé en tapant simplement une petite partie de son nom. C'est ce que z
fait.
Le z
Le script shell garde une trace des répertoires que vous visitez et du moment où vous les avez visités. Il combine la fréquence de votre accès à un annuaire avec la récence de votre accès pour déterminer la "fréquence" de votre accès. Lorsque vous fournissez quelques lettres pour le nom d'un répertoire, z
choisit le candidat contenant la sous-chaîne fournie avec la fréquence la plus élevée. Le résultat est correct une quantité étrange de fois.
Le voici en action :
Faits en bref :
bash
/zsh
implémentation :GitHubfish
implémentation :GitHub- Licence (
bash
/zsh
) :WTFPLv2 - Licence (
fish
):MIT - Langage :script shell
Il existe un certain nombre d'outils similaires, comme autojump
et fasd
. Essayez-les tous !
Trouve floue :fzf
Parfois, rechercher des choses avec des expressions régulières est exagéré. Il y a des moments où il devrait suffire que les bonnes lettres apparaissent dans le bon ordre. Le fzf
L'utilitaire vous permet de rechercher des correspondances floues sans douleur. Quel est le lien entre cet outil et le déplacement dans votre système de fichiers ? Attendez et vous verrez.
Par défaut, fzf
fonctionne sur stdin, vous pouvez donc l'utiliser comme grep
:
$ fzf < long-log-file.txt
Exemple en direct :
Parce que fzf
fonctionne pour filtrer stdin et envoie la sortie sur stdout, vous pouvez faire bien plus que rechercher des fichiers avec cet outil. Voulez-vous rechercher un répertoire sous le répertoire actuel ?
$ fzf
C'est exact. Si stdin n'est pas un tube, fzf
recherche tous les fichiers en dessous et émet votre choix sur stdout, ce qui facilite la combinaison des résultats avec d'autres commandes comme un éditeur.
Si vous souhaitez obtenir la même chose avec plus de contrôle, vous pouvez exécuter :
$ find . -type d | fzf
Vous pouvez utiliser fzf
se déplacer en courant :
$ cd $(find . -type d | fzf) #bash/zsh
$ cd (find . -type d | fzf) #fish
Maintenant, il existe d'autres applications amusantes. Vous pouvez :
- Rappelez les commandes de votre historique avec :
$ eval $(history | fzf) #bash/zsh $ eval (history | fzf) #fish
- Éditez un fichier sous le répertoire courant avec :
$ $EDITOR $(find . | fzf) #bash/zsh $ $EDITOR (find . | fzf) #fish
- Choisissez les packages à installer avec :
$ sudo apt install $(apt search <word> 2>/dev/null | tail -n+3 | grep '^\w' | sed 's|([^/]+)/.*|\1|' | fzf) #bash/zsh $ sudo apt install (apt search <word> 2>/dev/null | tail -n+3 | grep '^\w' | string split / | fzf) #fish
- Faites des choix, en général, basés sur n'importe quel texte délimité par des lignes. Le ciel est la limite !
Le fzf
l'utilitaire a des intégrations existantes avec bash
, zsh
, et fish
. Si vous installez ces shells, fzf
augmente et étend naturellement les flux de travail tels que la "recherche d'index inversé" et l'achèvement des onglets. Je suis un gros utilisateur du fish
intégration, moi-même.
Faits en bref :
- Obtenir
fzf
:GitHub - Licence :MIT
- Langue :Go
Vous en voulez plus ?
Si ces outils vous semblent utiles, restez à l'écoute pour plus d'articles. Si vous ne pouvez pas attendre, cette série est basée sur cette conférence que j'ai donnée à All Things Open 2019. Vous pouvez y trouver plus d'outils et d'astuces.