pescado (caparazón Unix)


De Wikipedia, la enciclopedia libre
Saltar a navegación Saltar a búsqueda

fish es un caparazón de Unix con un enfoque en la interactividad y la usabilidad. Fish está diseñado para ofrecer al usuario funciones por defecto, en lugar de por configuración. [4] El pescado se considera un caparazón exótico ya que no se adhiere rigurosamente a los estándares de caparazón POSIX , a discreción de los mantenedores. [5]

Reflejos

Fish tiene sugerencias automáticas de " búsqueda mientras escribe " basadas en el historial y el directorio actual. Esto es esencialmente como la búsqueda de historial de Bash + , pero debido a que siempre está activado en lugar de ser un modo separado, el usuario recibe comentarios continuos mientras escribe la línea de comando y puede seleccionar sugerencias con las teclas de flecha, o como en Bash, presione para un en su lugar, completar la pestaña. La finalización con tabulación tiene muchas funciones, rutas de archivo en expansión (con comodines y expansión de llaves ), variables y muchas finalizaciones específicas de comandos. Las finalizaciones específicas de los comandos, incluidas las opciones con descripciones, pueden generarse hasta cierto punto a partir de las páginas de manual de los comandos.CtrlRTab ↹

Fish tiene pocas reglas sintácticas, prefiriendo características como comandos en lugar de sintaxis. Esto hace que ofrece detectable en términos de comandos con opciones y textos de ayuda. Las funciones también pueden llevar una descripción legible por humanos. Un comando de ayuda especial da acceso a toda la documentación de peces en el navegador web del usuario . [6]

Sintaxis

La sintaxis se asemeja a un shell compatible con POSIX (como Bash), pero se desvía de manera importante cuando los creadores creen que el shell POSIX estaba mal diseñado. [7]

# Asignación de variable, establezca la variable 'foo' en el # valor 'barra'. Fish no usa el operador =, ya que # es inherentemente sensible a los espacios en blanco. Además, el comando set # se extiende fácilmente para trabajar con matrices, alcance, etc. >  set foo bar >  echo  $ foobar # Sustitución de comando, asigne la salida del comando # 'pwd' en la variable 'wd'. Fish no usa `` # ya que no se pueden anidar y se parecen mucho a ''. # No use $ () ya que $ solo se usa para la expansión de # variable en fish. >  establecer wd ( pwd ) >  echo  $ wd~# Variables de matriz. 'A' se convierte en una matriz con 5 valores: >  set A 3  5  7  9 12 # Rebanada de matriz. 'B' se convierte en los dos primeros elementos de 'A': >  set B $ A [ 1 2 ] >  echo  $ B 3 5 # Puede indexar con otras matrices e incluso el comando # salida de sustitución: >  echo  $ A [( seq 3 )] 3  5 7 # Borra el tercer y quinto elemento de 'A' >  set --erase A [ $ B ] > echo  $ A 3  5 9# for-loop, convierte jpegs a pngs >  for i en * .jpg convertir $ i  ( nombre base $ i .jpg ) .png end # Los puntos y comas funcionan como líneas nuevas: >  para i en * .jpg ; convertir $ i  ( nombre base $ i .jpg ) .png ;  end # pero el formulario de varias líneas es cómodo de usar porque # fish admite el historial y la edición de varias líneas.# while-loop, lee las líneas / etc / passwd y genera el quinto campo # separado por dos puntos del archivo. Esta debe ser # la descripción del usuario. >  while  read line set arr ( echo  $ line | tr: \ n )  echo  $ arr [ 5 ]  end  < / etc / passwd# Reemplazo de cadena (reemplazando todo i por I) > reemplazo de cadena -a "i"  "I"  "Wikipedia"WIkIpedIa

Sin subcapa implícita

Algunas construcciones de lenguaje, como pipelines , funciones y bucles , se han implementado utilizando las denominadas subcapas en otros lenguajes de shell . Los subshells son simplemente programas secundarios que ejecutan algunos comandos para el shell y luego salen. Desafortunadamente, este detalle de implementación generalmente tiene el efecto secundario de que cualquier cambio de estado realizado en la subcapa, como las asignaciones de variables, no se propaga al shell principal, lo que puede sorprender al usuario. Los peces nunca se bifurcan de las llamadas subcapas; todas las funciones integradas son siempre completamente funcionales.

# Esto no funcionará en muchos otros shells, ya que el builtin # 'read' se ejecutará en su propio subshell. En Bash, el lado derecho de la tubería # no puede tener efectos secundarios. En ksh, el siguiente comando funciona, pero # el lado izquierdo no puede tener efectos secundarios. En fish y zsh, ambos lados # pueden tener efectos secundarios. > gato * .txt |  leer línea

Ejemplo de asignación de variable

Este ejemplo de Bash no hace lo que parece: debido a que el cuerpo del bucle es una subcapa, la actualización a $foundno es persistente.

encontrado = ''
cat / etc / fstab |  mientras  lee dev mnt resto ;  hacer  si  prueba  " $ mnt "  =  "/" ;  luego  encontrado = " $ dev "  fi listo

Solución alterna:

found = '' while  read dev mnt rest ;  hacer  si  prueba  " $ mnt "  =  "/" ;  luego  encontrado = " $ dev "  fi hecho </ etc / fstab

Fish no necesita una solución alternativa:

conjunto encontrado ''
cat / etc / fstab |  while  read dev mnt rest si  prueba  " $ mnt "  =  "/"  conjunto encontrado $ dev  end end

Mensajes de error útiles

Los mensajes de error en peces están diseñados para decirle al usuario qué salió mal y qué se puede hacer al respecto. [8]

> foo = bar fish: comando desconocido "foo = bar". ¿Quiso decir "establecer VALOR VARIABLE"? Para obtener información sobre cómo configurar los valores de las variables, consulte la sección de ayuda sobre el comando set escribiendo "help set".> echo $ {foo} bar fish: ¿Quisiste decir {$ VARIABLE}? El carácter '$' comienza con un nombre de variable . Un corchete, que sigue directamente a '$', no está permitido como parte de un nombre de variable, y los nombres de variable no pueden tener cero caracteres . Para obtener más información sobre la expansión variable en peces, escriba "ayudar a expandir la variable".> echo $ (pwd) fish: ¿Quiso decir (COMMAND)? En fish, el carácter '$' solo se usa para acceder a las variables. Para obtener más información sobre la sustitución de comandos en peces, escriba "help expand-command-substitution".

Variables universales

Fish tiene una función conocida como variables universales, que permiten a un usuario asignar permanentemente un valor a una variable en todas las conchas de pescado en ejecución del usuario. El valor de la variable se recuerda a través de cierres de sesión y reinicios, y las actualizaciones se propagan inmediatamente a todos los shells en ejecución.

# Esto hará que emacs sea el editor de texto predeterminado. El '--universal' (o '-U') le dice a Fish que # haga de esto una variable universal. >  set - EDITOR universal emacs# Este comando hará que el directorio de trabajo actual sea parte del indicador # fish y se vuelva azul en todas las instancias de fish en ejecución. >  conjunto --universal fish_color_cwd blue

Otras características

  • Finalización de pestaña avanzada.
  • Resaltado de sintaxis con una amplia comprobación de errores.
  • El apoyo a la X portapapeles .
  • Manejo inteligente de terminales basado en terminfo .
  • Historial de comandos con capacidad de búsqueda .

La versión 2 agrega:

  • Autosugestiones
  • 256 colores de terminales
  • Configuración basada en web
  • Rendimiento mejorado (al tener más incorporaciones).

Tabla de traducción Bash / Fish

Ver también

  • Comparación de proyectiles de comando

Referencias

  1. ^ "miembros del equipo de concha de pescado" . GitHub.com . Consultado el 28 de julio de 2021 .
  2. ^ "Liberar pescado 3.3.1" .
  3. ^ fishshell.com Licencia para peces
  4. Liljencrantz, Axel (17 de mayo de 2005). "Pescado: una concha fácil de usar" . Noticias semanales de Linux . Consultado el 24 de marzo de 2010 .
  5. ^ "Fish docs: design" . Consultado el 9 de abril de 2021 .
  6. ^ Linux.com . CLI Magic: Realza la concha con pescado. Consultado el 24 de marzo de 2010.
  7. ^ Paul, Ryan. "Una mirada en profundidad a los peces: la amigable concha interactiva" . Ars Technica . Consultado el 10 de marzo de 2015 . la sintaxis de Posix tiene varias características faltantes o mal implementadas, incluyendo alcance de variables, matrices y funciones. Por esta razón, los peces se desvían de la sintaxis de Posix en varios lugares importantes.
  8. ^ Manejar con Linux . ¿Miedo a la línea de comandos? Prueba el pescado. Archivado desde el original el 19 de julio de 2012.
  9. ^ "Bash trampas" . Consultado el 10 de julio de 2016 . Esta página muestra errores comunes que cometen los programadores de Bash. (…) ¡Te salvarás de muchas de estas trampas si simplemente siempre usas comillas y nunca usas la división de palabras por ningún motivo! La división de palabras es un error heredado roto heredado del shell Bourne que se atasca de forma predeterminada si no cita las expansiones. La gran mayoría de las trampas están relacionadas de alguna manera con expansiones no citadas, y la consiguiente división de palabras y globbing como resultado.
  10. ^ "RFC: agregar enlace para expandir / evaluar tokens en la línea de comandos" . 2013-05-16 . Consultado el 9 de abril de 2021 .
  11. ^ "printf no admite \ e" . problemas de pescado . 11 de julio de 2013 . Consultado el 24 de marzo de 2016 .

enlaces externos

  • Sitio web oficial : contiene documentación y descargas
  • pescado en GitHub (activo)
  • peces en Gitorious (obsoleto)
  • pescado en SourceForge (obsoleto)
  • Usuarios de peces: lista de discusión general para usuarios de peces
  • Diccionario de traducción de Shell : otra tabla de traducción de Bash / Fish
Obtenido de " https://en.wikipedia.org/w/index.php?title=Fish_(Unix_shell)&oldid=1046785499 "