La concha de pescado

Una introducción para el usuario a la concha de pescado

He estado usando elConcha de pescadodurante meses, y creo que es el mejor caparazón que he usado. Por muchas razones.

La gente parece quedarse conIntentoque es el predeterminado en muchos sistemas (actualización: ahora el valor predeterminado de macOS es Zsh) o use Zsh, con una gran herramienta comoOh mi Zshpara hacerlo aún más sorprendente.

Bash, aunque excelente, es un shell muy básico, con un conjunto limitado de opciones configurables. Tiendo a usarlo principalmente para correrScripts de bash(que son otro tema) en lugar de como un shell interactivo. Zsh ofrece muchas funciones, pero requiere un poco de configuración para configurarlo, lo que podría asustar a los principiantes. Además, demasiadas opciones y libertad significan que puede entrar en una parálisis de configuración con bastante facilidad, y termina cambiando las opciones 20 veces en una semana para asegurarse de que no se lo está perdiendo.

No quiero "criticar" esos proyectos, que son increíbles y los usé durante mucho tiempo y, a veces, todavía los uso. Esta descripción es mi intento de resaltar los beneficios del pescado.

Fish Shell al rescate! Este shell proporciona un entorno increíble y una configuración completa lista para usar.

Mis características favoritas de Fish son:

  • tiene mejores funciones de autocompletado para los comandos que ya ejecutó y esto solo hace que mi día a día sea más rápido y menos estresante.
  • comienza a escribir un comando y presiona elupclave para ver todas las veces en el historial de shell en las que usó ese comando antes.
  • puede instalar Fish en cualquier sistema y funciona de la misma manera en todas partes, sin tener que personalizar demasiado para obtener las cosas elegantes.

Cuando se trata de secuencias de comandos, es bastante diferente de las secuencias de comandos Bash (de una manera mejor en mi humilde opinión), pero puede ejecutar cualquier secuencia de comandos Bash siempre que tenga el prefijo#!/bin/bash.

Inmediatamente después de la instalación, obtienes esas cosas buenas:

  • resaltado de sintaxis
  • un buen aviso
  • autocompletar
  • sugerencia de parámetro con sugerencias de página de manual
  • configuración basada en web

y en mi opinión es el caparazón más amigable para principiantes.

Una de las cosas divertidas que recuerdo que noté fue la página de inicio. Al principio no pude entender si eso era una especie de reliquia del pasado:

Para aquellos pocos afortunados con una computadora gráfica, puede configurar sus colores y ver funciones, variables e historial, todo desde una página web.

Entonces me di cuenta de que era el humor del programador y me hizo reír. La tecnología siempre debería ser divertida, ¿verdad?

Lo primero es lo primero: ¿qué es un caparazón?

Un shell es una interfaz para el sistema operativo subyacente. Le permite ejecutar operaciones utilizando texto y comandos, y proporciona a los usuarios funciones avanzadas como la posibilidad de crear scripts.

Instalación

Instale Fish ejecutandobrew install fishen macOS.

Echa un vistazo a miguía de terminal macOS

fishestá instalado en/usr/local/bin/fish.

Dado que es probable que ya esté en su camino, ejecutefishpara iniciar la concha de pescado (escribaexitpara volver a su shell predeterminado)

Configuración

Una vez que lo bueno de Fish es una configuración basada en web. Correrfish_configpara iniciar el cliente web.

configuration

Desde aqui puedes

  • elija un esquema de color de una lista de los predefinidos
  • elegir un mensaje de una lista de predefinidos
  • inspeccionar las funciones y variables de Fish configuradas
  • ver el historial de comandos

La configuración se almacena en el~/.config/fishcarpeta, y ahí es donde puede editarlo sin tener que usar la configuración basada en web (opcional).

Características de Fish: resaltado de sintaxis, autocompletado y sugerencia de parámetros con sugerencias de página de manual

Fish le permite ejecutar los comandos habituales de Unix disponibles en su sistema. Operaciones del sistema de archivos, por ejemplo:

  • lspara listar archivos
  • cdpara cambiar de carpeta
  • rmpara eliminar un archivo o carpeta
  • mvpara mover un archivo a otra carpeta o cambiar el nombre de un archivo
  • cpcopiar un archivo

Si ejecuta uno de esos comandos (oanycomando, en realidad) comenzará a ver que las palabras que escribe adquieren diferentes colores. Hace que sea realmente fácil de leer y comprender los comandos.

Fish también agrega autocompletado. Si corristecd ~/.config/fish/anteriormente, y ahora escribecd, Fish le sugerirá comandos que tal vez desee escribir, y simplemente presione la flecha derecha para aceptar la sugerencia (o puede continuar escribiendo para cambiar el comando). Esta sugerencia se basa en el historial de comandos y las rutas de archivo.

Las sugerencias basadas en autocompletar también funcionan para los comandos. Aquí escribícy presiona la pestaña:

autocomplete commands

Fish también sugiere parámetros y cómo usarlos. Escribels -y presionetab. A continuación se muestra una lista de los parámetros que puede usar y su significado:

autocomplete

Esta ayuda en línea se genera a partir depáginas man, la ayuda de shell útil (intente ejecutarman lspara la ayuda completa).

Establecer Fish como el caparazón predeterminado

Si te gusta Fish una vez que lo pruebas y quieres convertirlo en tu caparazón predeterminado, abre el archivo/etc/shells. yo suelopicopara hacer esas pequeñas ediciones de archivos, conpico /etc/shells, pero puede usar cualquier editor que prefiera, incluso VS Code concode /etc/shells.

Debe contener algo similar a:

# List of acceptable shells for chpass(1).
# Ftpd will not allow users to connect who are not using
# one of these shells.

/bin/bash /bin/csh /bin/ksh /bin/sh /bin/tcsh /bin/zsh

Agregue esta línea al final para agregar la concha de pescado:

/usr/local/bin/fish

next, run

chsh -s /usr/local/bin/fish

enter your password, and the shell will change for your user.

change shell

Plugins

You can install Fish plugins.

Fisher is a popular Fish package manager.

Install it using

curl https://git.io/fisher --create-dirs -sLo ~/.config/fish/functions/fisher.fish

and it’s available with the fisher command.

Now a package can be installed using fisher add <github-repository-path> and removed using fisher rm <github-repository-path>.

List all plugins installed using fisher ls.

Run fisher to update all the packages you installed.

Popular plugins are

Here is a list of packages you can install.

POSIX compliance

Various shells comply with the POSIX shell command standard.

POSIX means

  • Portable
  • Operating
  • System
  • Interface
  • X (for Unix)

and it’s a standard meant to unify the various Unix environment that were built over time. There is a shell command standard subset, which is meant as a way to unify how Unix shells work.

Unix is a specification/standard for a family of operating systems. Linux and macOS are based on Unix (Windows is not).

bash, ksh and others are POSIX compliant. Being POSIX compliant makes scripts written with POSIX compatibility work across POSIX compliant shells.

Fish (like sh or csh for example) is not compliant, so it’s not a POSIX shell, and this means that writing commands and scripts for Fish is different. Scripts written for Fish won’t work outside of Fish. Just like csh scripts only work on csh (and derivatives)

Why is it different? Various reasons, but I imagine having to support POSIX means the shell must adhere to a common language that might interfere with the shell philosophy and way of working. Not everyone want to have that baggage of tech to support forever.

This will very rarely be a problem with executing commands, but you need to keep it in mind when it comes to scripting and programming.

Download my free Linux Commands Handbook


More cli tutorials: