He usado una terminal a diario durante muchos años. Utilizo un shell no predeterminado muy personalizado. Hago un uso extensivo de la finalización de pestañas y he memorizado las banderas para muchos comandos. Hasta hace aproximadamente un año, pensé que había alcanzado el pico de productividad de la terminal. Luego, descubrí una ola de utilidades de shell que, aunque oscuras, alteraron fundamentalmente la forma en que interactúo con el entorno de mi terminal para mejor.
Este artículo es el primero de una serie sobre estas nuevas utilidades (además de algunas herramientas que conozco desde hace más tiempo y me encantan). Hoy veremos herramientas específicas para moverse por su sistema de archivos.
Saltar alrededor:z
¿Sabe cómo puede escribir las primeras letras de un sitio web de uso común en su navegador y presionar Enter con la confianza de que lo llevarán al lugar correcto? ¿Qué pasaría si lleváramos esa misma experiencia a tu caparazón? Imagina que pudieras teletransportarte a un directorio de uso común simplemente escribiendo una pequeña parte de su nombre. Eso es lo que z
lo hace.
El z
shell script realiza un seguimiento de los directorios que visita y cuándo los visitó. Combina la frecuencia de su acceso a un directorio con la antigüedad de su acceso para determinar la "frecuencia" de su acceso. Cuando proporciona un par de letras para el nombre de un directorio, z
elige el candidato que contiene la subcadena proporcionada con la frecuencia más alta. El resultado es correcto una inquietante cantidad de veces.
Aquí está en acción:
Datos breves:
bash
/zsh
implementación:GitHubfish
implementación:GitHub- Licencia (
bash
/zsh
):WTFPLv2 - Licencia (
fish
):MIT - Idioma:script de shell
Hay varias herramientas similares, como autojump
y fasd
. ¡Pruébalos todos!
Búsqueda aproximada:fzf
A veces, buscar cosas con expresiones regulares es excesivo. Hay momentos en los que debería ser suficiente que aparezcan las letras correctas en el orden correcto. El fzf
La utilidad le permite buscar coincidencias aproximadas sin problemas. ¿Cómo se relaciona esta herramienta con moverse por su sistema de archivos? Solo espera y verás.
Por defecto, fzf
funciona en stdin, por lo que puede usarlo como grep
:
$ fzf < long-log-file.txt
Ejemplo en vivo:
Porque fzf
funciona para filtrar stdin y envía la salida en stdout, puede hacer mucho más que buscar archivos con esta herramienta. ¿Quiere buscar un directorio debajo del actual?
$ fzf
Así es. Si stdin no es una canalización, fzf
busca todos los archivos debajo de él y emite su elección en stdout, lo que facilita combinar los resultados con otros comandos como un editor.
Si desea lograr lo mismo con más control, puede ejecutar:
$ find . -type d | fzf
Puedes usar fzf
para moverse ejecutando:
$ cd $(find . -type d | fzf) #bash/zsh
$ cd (find . -type d | fzf) #fish
Ahora, también hay otras aplicaciones divertidas. Puedes:
- Recupere comandos de su historial con:
$ eval $(history | fzf) #bash/zsh $ eval (history | fzf) #fish
- Edite un archivo debajo del directorio actual con:
$ $EDITOR $(find . | fzf) #bash/zsh $ $EDITOR (find . | fzf) #fish
- Elija paquetes para instalar con:
$ 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
- Realice elecciones, en general, en función de cualquier texto delimitado por líneas. ¡El cielo es el límite!
El fzf
La utilidad tiene integraciones existentes con bash
, zsh
y fish
. Si instala esos shells, fzf
aumenta y amplía de forma natural los flujos de trabajo como la "búsqueda de índice inversa" y la finalización de pestañas. Soy un gran usuario del fish
integración, yo mismo.
Datos breves:
- Obtener
fzf
:GitHub - Licencia:MIT
- Idioma:Ir
¿Quieres más?
Si estas herramientas le parecen útiles, esté atento a más artículos. Si no puede esperar, esta serie se basa en esta charla que di en All Things Open 2019. Puede encontrar más herramientas y trucos allí.