Articulo de referencia

Comparación de shells de comandos

Bash , el shell predeterminado en muchos sistemas GNU/Linux. Un shell de comandos es una interfaz de línea de comandos para interactuar con el sistema operativo de una computado...

Bash , el shell predeterminado en muchos sistemas GNU/Linux.

Un shell de comandos es una interfaz de línea de comandos para interactuar con el sistema operativo de una computadora y manipularlo .

Características generales

Funciones interactivas

Ejecución en segundo plano

La ejecución en segundo plano permite que un shell ejecute un comando sin interacción del usuario en la terminal, lo que libera la línea de comandos para realizar trabajo adicional con el shell. Los shells POSIX y otros shells Unix permiten la ejecución en segundo plano mediante el uso del carácter & al final del comando. En PowerShell , se pueden utilizar los cmdlets Start-Process[43] o Start-Job[44] .

Terminaciones

Completado de línea de comandos en Bash .

Las funciones de finalización ayudan al usuario a escribir comandos en la línea de comandos, buscando y sugiriendo palabras que coincidan con las que están incompletas. La finalización generalmente se solicita presionando la tecla de finalización (a menudo la Tab ↹tecla ).

La finalización del nombre del comando es la finalización del nombre de un comando. En la mayoría de los shells, un comando puede ser un programa en la ruta de comandos (normalmente $PATH), un comando integrado, una función o un alias.

La finalización de ruta es la finalización de la ruta a un archivo, relativa o absoluta.

La finalización con comodines es una generalización de la finalización de rutas, donde una expresión coincide con cualquier número de archivos, utilizando cualquier sintaxis compatible para la coincidencia de archivos.

La finalización de variables es la finalización del nombre de una variable ( variable de entorno o variable de shell). Bash, zsh y fish tienen finalización para todos los nombres de variables. PowerShell tiene finalización para nombres de variables de entorno, nombres de variables de shell y, desde dentro de las funciones definidas por el usuario, nombres de parámetros.

La finalización de argumentos de comandos es la finalización de los argumentos de un comando específico. Hay dos tipos de argumentos, nombrados y posicionales: Los argumentos nombrados, a menudo llamados opciones , se identifican por su nombre o letra que precede a un valor, mientras que los argumentos posicionales consisten solo en el valor. Algunos shells permiten completar los nombres de los argumentos, pero pocos admiten la finalización de valores.

Bash, zsh y fish ofrecen la finalización de nombres de parámetros a través de una definición externa al comando, distribuida en un archivo de definición de finalización independiente. Para las finalizaciones de nombres/valores de parámetros de comandos, estos shells asumen la finalización de rutas/nombres de archivo si no se define ninguna finalización para el comando. La finalización se puede configurar para sugerir finalizaciones llamando a una función de shell. [45] El shell fish también admite el análisis de páginas de manual para extraer información de parámetros que se puede utilizar para mejorar las finalizaciones/sugerencias. En PowerShell, todos los tipos de comandos (cmdlets, funciones, archivos de script) exponen inherentemente datos sobre los nombres, tipos y rangos/listas de valores válidos para cada argumento. PowerShell utiliza estos metadatos para admitir automáticamente la finalización de nombres y valores de argumentos para comandos/funciones integrados, comandos/funciones definidos por el usuario, así como para archivos de script. Los cmdlets individuales también pueden definir la finalización dinámica de valores de argumentos donde los valores de finalización se calculan dinámicamente en el sistema en ejecución.

Historial de comandos

Los usuarios de un shell pueden encontrarse escribiendo algo similar a lo que escribieron antes. La compatibilidad con el historial de comandos significa que un usuario puede recuperar un comando anterior en el editor de línea de comandos y editarlo antes de emitir el comando potencialmente modificado.

Los shells que admiten la finalización también pueden completar directamente el comando desde el historial de comandos dada una parte parcial/inicial del comando anterior.

La mayoría de los shells modernos admiten el historial de comandos. Los shells que admiten el historial de comandos en general también admiten la finalización desde el historial en lugar de simplemente recuperar comandos desde el historial. Además del texto del comando simple, PowerShell también registra la hora de inicio y finalización de la ejecución y el estado de la ejecución en el historial de comandos.

Indicación obligatoria del argumento

Los argumentos/parámetros obligatorios son aquellos a los que se les debe asignar un valor al invocar el comando, la función o el archivo de script. Un shell que pueda determinar antes de la invocación que faltan valores obligatorios puede ayudar al usuario interactivo solicitando esos valores en lugar de dejar que el comando falle. Si el shell solicita valores faltantes, el autor de un script, un comando o una función podrá marcar un parámetro como obligatorio en lugar de crear un código de script para solicitar los valores faltantes (después de determinar que se está ejecutando de forma interactiva) o para que falle con un mensaje.

PowerShell permite que los comandos, funciones y scripts definan argumentos o parámetros como obligatorios . El shell determina antes de la invocación si hay algún argumento o parámetro obligatorio que no haya sido vinculado y luego le solicitará al usuario el valor o los valores antes de la invocación real. [46]

Sugerencias automáticas

Completar línea de comandos en PowerShell .

Los shells con sugerencias automáticas muestran opciones de finalización de línea de comandos a medida que el usuario escribe. Los shells de PowerShell y Fish admiten esta función de forma nativa; al presionar la tecla se inserta la opción de finalización. Tab ↹

Las implementaciones de esta característica pueden diferir entre shells; por ejemplo, PowerShell [47] y zsh [48] usan un módulo externo para proporcionar finalizaciones, y fish deriva sus finalizaciones del historial de comandos del usuario. [49]

Historial de directorios, pila o funciones similares

Los shells pueden registrar un historial de directorios en los que ha estado el usuario y permitir un cambio rápido a cualquier ubicación registrada. Esto se conoce como "pila de directorios". El concepto se hizo realidad en 1978 [50] con el lanzamiento del shell C (csh).

PowerShell permite utilizar múltiples pilas con nombre. Las ubicaciones (directorios) se pueden insertar en la pila actual o en una pila con nombre o extraerlas de ella. Cualquier pila puede convertirse en la pila actual (predeterminada). A diferencia de la mayoría de los demás shells, el concepto de ubicación de PowerShell permite que las pilas de ubicación contengan ubicaciones del sistema de archivos, así como otros tipos de ubicación, como por ejemplo unidades/grupos organizativos de Active Directory , bases de datos/tablas/objetos de SQL Server , aplicaciones/sitios/directorios virtuales de Internet Information Server .

Los intérpretes de línea de comandos 4DOS y su sucesor gráfico Take Command Console también cuentan con una pila de directorios.

Cambio de directorio implícito

Un nombre de directorio se puede utilizar directamente como un comando que cambia implícitamente la ubicación actual del directorio.

Esto debe distinguirse de una característica de unidad de carga no relacionada compatible con Concurrent DOS , Multiuser DOS , System Manager y REAL/32 , donde la letra de unidad L: se actualizará implícitamente para apuntar a la ruta de carga de una aplicación cargada, lo que permite que las aplicaciones hagan referencia a los archivos que residen en su directorio de carga bajo una letra de unidad estandarizada en lugar de bajo una ruta absoluta. [51]

Autocorrección

Demostración de autocorrección y autocompletado de Zsh para un programa telnet .

Cuando una línea de comandos no coincide directamente con un comando o argumentos, la corrección ortográfica puede corregir automáticamente errores de tipeo comunes (como distinción entre mayúsculas y minúsculas , letras faltantes). Hay dos enfoques para esto: el shell puede sugerir correcciones probables al invocar el comando, o esto puede suceder antes como parte de una finalización o autosugestión.

Los shells tcsh y zsh cuentan con revisión/corrección ortográfica opcional, al invocar el comando.

Fish realiza la corrección automática al finalizar y la sugerencia automática. Por lo tanto, la función no interfiere cuando se escribe el comando completo y se presiona Enter, mientras que el uso extensivo de las teclas de tabulación y flecha derecha hace que el shell no distinga entre mayúsculas y minúsculas.

El módulo PSReadLine [31] de PowerShell (que se incluye con la versión 5.0) ofrece la opción de especificar un ScriptBlock CommandValidationHandler que se ejecuta antes de enviar el comando. Esto permite la corrección personalizada de comandos que se escriben mal con frecuencia y la verificación antes de ejecutar el comando.

Indicador de progreso

Un script (o trabajo) de shell puede informar el progreso de tareas de larga ejecución al usuario interactivo.

Los sistemas Unix/Linux pueden ofrecer otras herramientas de soporte que utilizan indicadores de progreso desde scripts o como comandos independientes, como el programa "pv". [52] Sin embargo, estas no son características integradas de los shells.

PowerShell tiene un comando integrado y funciones API (que se utilizan al crear comandos) para escribir o actualizar una barra de progreso. Los mensajes de la barra de progreso se envían por separado de la salida de comando normal y la barra de progreso siempre se muestra en la consola de usuario interactiva definitiva, independientemente de si los mensajes de progreso se originan en un script interactivo, en un trabajo en segundo plano o en una sesión remota.

Listados de directorios en color

Los procesadores de línea de comandos de JP Software%COLORDIR% proporcionan una coloración configurable por el usuario de los nombres de archivos y directorios en los listados de directorios en función de su extensión de archivo y/o atributos a través de una variable de entorno definida opcionalmente.

Para los shells de Unix/Linux, esta es una característica del comando ls y de la terminal.

Resaltado de texto

Los procesadores de línea de comandos en DOS Plus , Multiuser DOS , REAL/32 y en todas las versiones de DR-DOS admiten una serie de variables de entorno opcionales para definir secuencias de escape que permiten controlar el resaltado, la reversión o la coloración del texto para fines de visualización o impresión en comandos como TYPE . Todos los procesadores de línea de comandos mencionados admiten %$ON%y %$OFF%. Si se definen, estas secuencias se emitirán antes y después de los nombres de archivo. Una secuencia típica para %$ON%sería \033[1men conjunción con ANSI.SYS , \033ppara un terminal ASCII o para una impresora \016IBM o ESC/P%$OFF% . Del mismo modo, las secuencias típicas para serían \033[0m, \033q, \024, respectivamente. Las variables %$HEADER%y %$FOOTER%solo son compatibles con COMMAND.COM en DR-DOS 7.02 y superiores para definir secuencias emitidas antes y después de bloques de texto para controlar el resaltado de texto, la paginación u otras opciones de formato.

Para los shells de Unix/Linux, esta es una característica de la terminal.

Resaltado de sintaxis

Una característica definitoria del shell fish es el resaltado de sintaxis incorporado. A medida que el usuario escribe, el texto se colorea para representar si la entrada es un comando válido o no (el ejecutable existe y el usuario tiene permisos para ejecutarlo) y las rutas de archivo válidas se subrayan. [53]

Un proyecto independiente ofrece resaltado de sintaxis como complemento del Z Shell (zsh). [54] Sin embargo, esto no es parte del shell.

PowerShell proporciona resaltado de sintaxis personalizable en la línea de comandos a través del módulo PSReadLine [31] . Este módulo se puede utilizar con PowerShell v3.0+ y se incluye con la versión 5.0 en adelante. Se carga de forma predeterminada en el host de línea de comandos "powershell.exe" desde la versión 5.0. [55]

Take Command Console (TCC) ofrece resaltado de sintaxis en el entorno integrado.

Ayuda sensible al contexto

4DOS, 4OS2, 4NT / Take Command Console y PowerShell (en PowerShell ISE) buscan información de ayuda sensible al contexto cuando se presiona. F1

Zsh proporciona varias formas de ayuda contextual configurable como parte de su widget de ayuda de ejecución , el comando _complete_help o en la finalización de opciones para algunos comandos.

El shell de pescado proporciona breves descripciones de los indicadores de un comando durante la finalización de la tabulación.

Funciones de programación

Procesamiento de cadenas y coincidencia de nombres de archivos

Comunicación entre procesos

Apilamiento de pulsaciones de teclas

En previsión de lo que una aplicación en ejecución puede aceptar como entrada de teclado, el usuario del shell le ordena que genere una secuencia de pulsaciones de teclas simuladas , que la aplicación interpretará como una entrada de teclado de un usuario interactivo. Al enviar secuencias de pulsaciones de teclas, el usuario puede ordenar a la aplicación que realice acciones que serían imposibles de lograr mediante la redirección de la entrada o que, de otro modo, requerirían un usuario interactivo. Por ejemplo, si una aplicación actúa sobre pulsaciones de teclas que no se pueden redirigir, distingue entre teclas normales y extendidas, vacía la cola antes de aceptar una nueva entrada al iniciarse o en determinadas condiciones, o porque no lee la entrada estándar en absoluto. El apilamiento de pulsaciones de teclas normalmente también proporciona medios para controlar el momento en que se envían las teclas simuladas o para retrasar las nuevas teclas hasta que se vacía la cola, etc. También permite simular teclas que no están presentes en un teclado (porque las teclas correspondientes no existen físicamente o porque se está utilizando una distribución de teclado diferente) y, por lo tanto, serían imposibles de escribir para un usuario.

Características de seguridad

Aviso seguro

Algunos scripts de shell necesitan solicitar al usuario información confidencial, como contraseñas , claves digitales privadas, códigos PIN u otra información confidencial. La información confidencial no debe enviarse a la pantalla o al dispositivo de entrada, donde podría ser obtenida por personas no autorizadas. También debe evitarse la representación de información confidencial en texto simple, ya que podría permitir que la información se vea comprometida, por ejemplo, a través de archivos de intercambio, volcados de memoria, etc. [71]

Los shells bash, zsh y PowerShell ofrecen esto como una característica específica. [72] [73] Los shells que no ofrecen esto como una característica específica aún pueden desactivar el eco a través de otros medios. Los shells que se ejecutan en un sistema operativo Unix/Linux pueden usar el comando externo stty para activar o desactivar el eco de los caracteres de entrada. [74] Además de no devolver el eco de los caracteres, la opción de PowerShell también cifra la entrada carácter por carácter durante el proceso de entrada, lo que garantiza que la cadena nunca se represente sin cifrar en la memoria donde podría verse comprometida a través de volcados de memoria, escaneo, transcripción, etc. -AsSecureString

Permiso de ejecución

Algunos sistemas operativos definen un permiso de ejecución que se puede otorgar a usuarios/grupos para un archivo cuando el propio sistema de archivos lo admite.

En los sistemas Unix, el permiso de ejecución controla el acceso para invocar el archivo como un programa, y ​​se aplica tanto a ejecutables como a scripts. Como el permiso se aplica en el cargador de programas , no se necesita ninguna obligación por parte del programa que invoca, ni del programa invocado, de aplicar el permiso de ejecución; esto también se aplica a los shells y otros programas intérpretes. El comportamiento está determinado por la biblioteca POSIX C que se utiliza para interactuar con el núcleo. POSIX especifica que la execfamilia de funciones debe fallar con EACCESS (permiso denegado) si el archivo deniega el permiso de ejecución (consulte execve Referencia de interfaces del sistema, La especificación única de UNIX , versión 4 de The Open Group ).

El permiso de ejecución solo se aplica cuando el script se ejecuta directamente. Si se invoca un script como argumento del shell de interpretación, se ejecutará independientemente de si el usuario tiene permiso de ejecución para ese script.

Aunque Windows también especifica un permiso de ejecución , ninguno de los shells específicos de Windows bloquea la ejecución del script si no se ha otorgado el permiso.

Subconjunto de shell restringido

Se pueden iniciar varios shells o configurarlos para que se inicien en un modo en el que solo un conjunto limitado de comandos y acciones esté disponible para el usuario. Si bien no es un límite de seguridad (se bloquea el comando que accede a un recurso, no el recurso en sí), se suele utilizar para restringir las acciones de los usuarios antes de iniciar sesión.

Un modo restringido es parte de la especificación POSIX para shells, y la mayoría de los shells de Linux/Unix admiten dicho modo donde varios de los comandos integrados están deshabilitados y solo se pueden invocar comandos externos de un directorio determinado. [75] [76]

PowerShell admite modos restringidos a través de archivos de configuración de sesión o configuraciones de sesión. Un archivo de configuración de sesión puede definir cmdlets, alias, funciones, proveedores de rutas y más visibles (disponibles). [77]

Subconjunto de datos seguros

Los scripts que invocan otros scripts pueden ser un riesgo de seguridad, ya que pueden ejecutar código externo en el contexto del usuario que ejecutó el script inicial. Los scripts generalmente se diseñarán para incluir exclusivamente scripts de ubicaciones seguras conocidas; pero en algunos casos, por ejemplo, cuando se ofrece al usuario una forma de configurar el entorno o cargar mensajes localizados, el script puede necesitar incluir otros scripts/archivos. [78] Una forma de abordar este riesgo es que el shell ofrezca un subconjunto seguro de comandos que puedan ser ejecutados por un script incluido.

Las secciones de datos de PowerShell pueden contener constantes y expresiones utilizando un subconjunto restringido de operadores y comandos. [79] Las secciones de datos de PowerShell se utilizan cuando, por ejemplo, es necesario leer cadenas localizadas desde una fuente externa mientras se protege contra efectos secundarios no deseados.

Notas

  1. ^ Desde mediados de la década de 1990.
  2. ^ si se compila con -DACCT.
  3. ^ Componente MS-DOS y Windows: cubierto por una licencia válida para MS-DOS o Microsoft Windows.
  4. ^ Componente OS/2: cubierto por una licencia válida para OS/2.
  5. ^ Extensiones de comando habilitadas, o "CMD /X".
  6. ^ Componente de Windows: cubierto por una licencia válida para Microsoft Windows.
  7. ^ Microsoft PowerShell se instala de forma predeterminada en Windows 7 y versiones posteriores. Es una descarga opcional para los usuarios de Windows Vista o Windows XP.
  8. ^ abc versiones actuales de Jörg Schilling.
  9. ^ Alt-Shift-8 o Alt-* expandirá la lista completa de nombres de archivos coincidentes.
  10. ^ Disponible a través del complemento DOSKEY .
  11. ^ Disponible en DR-DOS a través de HISTORY .
  12. ^ Alternativamente también disponible a través del complemento DOSKEY .
  13. ^ Alternativamente también disponible en DR-DOS a través de HISTORY .
  14. ^ TCC tiene funciones de solicitud especiales para Sí, No, Cancelar, Cerrar, Reintentar.
  15. ^ abc Manejado por rio , GNU readline , editline o vrl.
  16. ^ La carcasa de pescado es una superficie de entrada/salida interactiva basada en caracteres.
  17. ^ No está disponible como comando integrado del shell. El comando externo FINDSTR /R está disponible en la mayoría de las versiones de Windows.
  18. ^ PowerShell aprovecha el motor de expresiones regulares .NET completo que incluye capturas con nombre, búsqueda hacia adelante/atrás de ancho cero, codicioso/no codicioso, clases de caracteres, conteo de niveles, etc.
  19. ^ abcdefghijk xautomation y xdotool se pueden usar para generar pulsaciones de teclas en el sistema X Window ; o se puede ejecutar un programa en una pseudoterminal para poder controlarlo (como con la herramienta expect ).
  20. ^ abcdefghi El shell puede usar la utilidad stty para suprimir el eco de los caracteres tipeados en la pantalla. Esto requiere varios pasos: 1. leer el estado actual del eco, 2. desactivar el eco, 3. leer la entrada, 4. volver a cambiar el estado del eco al estado original.
  21. ^ abcdefghijkl El permiso de ejecución lo aplica un programa independiente, el cargador de programas, al negarse a invocar al intérprete (posiblemente un shell) especificado por el hashbang del script . El intérprete no aplica el permiso de ejecución si se lo invoca directamente como lo haría el cargador de programas, con el archivo como argumento; esto solo requiere permiso de lectura, al igual que enviar el archivo como entrada al intérprete, en cuyo caso el intérprete no puede ver el permiso de ejecución.
  22. ^ ab Los shells zsh y fish también respetan el permiso de ejecución para completar el comando.
  23. ^ ab En DR-DOS, el separador de contraseñas para las contraseñas de archivos y directorios es un punto y coma. Esto también es compatible con 4DOS siempre que el comando no admita listas de inclusión. En 4DOS, el separador de contraseñas debe duplicarse para todos los comandos que admitan listas de inclusión para distinguir las contraseñas de las listas de inclusión. Los comandos que no admiten listas de inclusión aceptan ambas formas. DR-DOS 7.02 y versiones posteriores también aceptan opcionalmente un punto y coma doble, de modo que los puntos y coma dobles funcionan tanto en COMMAND.COM como en 4DOS independientemente del comando ejecutado.
  24. ^ ab DR-DOS admite contraseñas de archivos para permisos de lectura, escritura y eliminación y, opcionalmente, permisos de ejecución. Los archivos no están protegidos de forma predeterminada, pero el sistema se puede configurar para que algunos scripts por lotes requieran una contraseña para poder leerlos.
  25. ^ ab INPUT /P y INKEY /P devuelven asteriscos para cada carácter escrito.
  26. ^ Read-Host -AsSecureString lee una cadena de caracteres desde el dispositivo de entrada en una cadena cifrada, un carácter a la vez, garantizando así que no haya una imagen de memoria del texto claro que pueda obtenerse al escanear la memoria o a partir de volcados de memoria, volcados de memoria, archivos de paginación, archivos de registro o similares.
  27. ^ Los archivos de script de PowerShell ( archivos .ps1 ) están asociados de manera predeterminada con el editor del Bloc de notas, no con el motor de ejecución de PowerShell. Al invocar un archivo .ps1, se iniciará el Bloc de notas en lugar de ejecutar el script.
  28. ^ Los scripts de inicio por computadora/usuario pueden importar módulos y exponer un subconjunto de los comandos/funciones disponibles en los módulos.

Referencias

  1. ^ Geoff Collyer ofrece una versión independiente de la plataforma basada en el código fuente original histórico de UNIX V7.
  2. ^ La versión histórica de UNIX V7 está disponible bajo una licencia de estilo BSD a través de The Unix Heritage Society y otros.
  3. ^ Jörg Schilling ofrece una versión independiente de la plataforma basada en el código fuente de SVr4/Solaris.
  4. ^ Ferrell, John, "Capítulo 2. Shell predeterminado", Guía de inicio rápido de FreeBSD para usuarios de Linux, The FreeBSD Documentation Project , consultado el 24 de julio de 2015
  5. ^ "SchilliX-ON / SchilliX-ON Mercurial / [b1d9a2] /usr/src/cmd/sh". Sourceforge.net . Consultado el 2 de julio de 2015 .
  6. ^ IEEE y The Open Group (2008). Estándar IEEE 1003.1 para tecnología de la información: Interfaz de sistema operativo portátil (POSIX): Shell y utilidades, número 7 .
  7. ^ Como parte de IEEE Std.1003.2-1992 (POSIX.2); integrado en IEEE Std.1003.1 con la revisión de 2001.
  8. ^ Fox, Brian (7 de junio de 1989). Tower Jr., Leonard H. (ed.). "¡Bash está en versión beta!". Grupo de noticias : gnu.announce. Usenet:  8906080235.AA01983@wheat-chex.ai.mit.edu . Consultado el 28 de octubre de 2010 .
  9. ^ Cooper, Mendel, "Capítulo 37.3.2. Bash, versión 4.2", Guía avanzada de scripts en Bash , The Linux Documentation Project , consultado el 30 de abril de 2015"Bash ahora admite los escapes Unicode \u y \U".
  10. ^ Greer, Ken (3 de octubre de 1983). "C shell con reconocimiento y finalización de comandos y nombres de archivo". Grupo de noticias : net.sources . Consultado el 29 de diciembre de 2010 .
  11. ^ "Guía de inicio rápido de FreeBSD para usuarios de Linux®". Portal de documentación de FreeBSD . Consultado el 4 de febrero de 2024 .
  12. ^ Sussman, Ann (26 de diciembre de 1988). "Hamilton C Shell acelera el desarrollo de aplicaciones OS/2" (PDF) . PC Week (26 de diciembre de 1988 - 2 de enero de 1989): 37. Consultado el 22 de noviembre de 2010 .
  13. ^ Gomes, Ron (9 de junio de 1983). "Programa de la conferencia USENIX de Toronto (tentativo)". Grupo de noticias : net.usenix . Consultado el 29 de diciembre de 2010 .
  14. ^ Harris, Guy (1983-10-10). "csh question". Grupo de noticias : net.flame . Consultado el 29 de diciembre de 2010 .
  15. ^ ab ksh93(1) página del manual
  16. ^ ab El shell predeterminado en OpenBSD es ksh (pdksh).
  17. ^ El editor de línea de comandos zsh es totalmente configurable y puede permitir la compatibilidad con el mouse de varias maneras, como con mouse.zsh de Stéphane Chazelas.
  18. ^ Página de manual y subpáginas de zsh(1)
  19. ^ Página del manual zshbuiltins(1)
  20. ^ Lefevre, Vincent (11 de febrero de 2015). «Descriptores de archivos de varios dígitos». zsh-users (Lista de correo) . Consultado el 23 de diciembre de 2021 .
  21. ^ "#782228 - busybox sh no admite caracteres multibyte en el manejo de cadenas - Registros de informes de errores de Debian". Bugs.debian.org. 2015-04-09 . Consultado el 2015-07-02 .
  22. ^ "Diccionario DCL de HP OpenVMS". Archivado desde el original el 25 de marzo de 2007. Consultado el 23 de marzo de 2009 .
  23. ^ Larabel, Michael (23 de marzo de 2021). "Los derechos de autor de Plan 9 se transfirieron a la Fundación, se publicó el código con licencia del MIT". Phoronix . Consultado el 28 de marzo de 2021 .
  24. ^ Liljencrantz, Axel (17 de mayo de 2005). "Fish - El shell interactivo amigable" . Consultado el 8 de abril de 2013 .
  25. ^ Soller, Jeremy (15 de noviembre de 2015). «d79c8f511573fb7710abc63b4236a40022914520» . Consultado el 3 de agosto de 2019 .
  26. ^ "[Z Shell] Sistema de finalización". Zsh.sourceforge.io . Consultado el 24 de febrero de 2015 .
  27. ^ Esto se aplica únicamente a palabras reservadas y otras características sintácticas.
  28. ^ por ejemplo a través de terceros como zsh-autosuggestions
  29. ^ zsh no cuenta con resaltado de sintaxis, pero existe un proyecto de terceros que ofrece esta capacidad como complemento: zsh-syntax-highlighting
  30. ^ Paul, Matthias R. (1997-10-02) [1997-09-29]. "Caldera OpenDOS 7.01/7.02 Update Alpha 3 IBMBIO.COM - README.TXT y BOOT.TXT - Una breve descripción de cómo se inicia OpenDOS". Archivado desde el original el 2003-10-04 . Consultado el 29-03-2009 .[1]
  31. ^ abcde Shirk, Jason (15 de febrero de 2018). "PSReadLine: una implementación de readline inspirada en bash para PowerShell" – vía GitHub.
  32. ^ "Windows PowerShell 5.0". Archivado desde el original el 17 de septiembre de 2016 . Consultado el 8 de septiembre de 2016 .
  33. ^ abcde "Entorno de scripting integrado (ISE) de Windows PowerShell". Microsoft Technet . Consultado el 12 de septiembre de 2015 .
  34. ^ "Obtener-ChildItemColor". GitHub . 18 de marzo de 2022.
  35. ^ sdwheeler. "Write-Host (Microsoft.PowerShell.Utility) - PowerShell". docs.microsoft.com . Consultado el 18 de enero de 2022 .
  36. ^ Push-Location (con alias pushd) y Pop-Location (con alias popd) permiten que varios tipos de ubicaciones (directorios de sistemas de archivos, unidades organizativas de Active Directory , nodos del Registro de Windows , etc.) se inserten y extraigan de las pilas de ubicaciones.
  37. ^ La función $host.ui.PromptForChoice permite que aparezca un mensaje de estilo menú para las opciones. El mensaje funciona tanto desde trabajos en segundo plano como desde sesiones remotas, mostrando el mensaje de menú en la consola de la sesión de control.
  38. ^ El cmdlet Write-Progress escribe una barra de progreso que puede indicar porcentaje, segundos restantes, etc. Los mensajes de la barra de progreso funcionan desde trabajos en segundo plano o sesiones remotas, además de scripts interactivos, es decir, la barra de progreso se muestra en la consola de la sesión de control, no como parte de la salida normal.
  39. ^ El cmdlet Show-Command inspecciona la definición del comando y abre una ventana interactiva con un campo de entrada con nombre para cada parámetro/interruptor
  40. ^ ab "fish: Documentation". Sección Completar tabulaciones . Consultado el 10 de enero de 2016 .
  41. ^ "set_color - establece el color de la terminal — documentación de fish-shell 3.1.2". fishshell.com . Archivado desde el original el 2020-02-17 . Consultado el 2021-02-23 .
  42. ^ "abbr - administrar abreviaturas de peces — documentación de fish-shell 3.1.2". fishshell.com . Consultado el 23 de febrero de 2021 .
  43. ^ sdwheeler. "Start-Process (Microsoft.PowerShell.Management) - PowerShell". learn.microsoft.com . Consultado el 21 de octubre de 2022 .
  44. ^ sdwheeler. "Start-Job (Microsoft.PowerShell.Core) - PowerShell". learn.microsoft.com . Consultado el 21 de octubre de 2022 .
  45. ^ "zsh: 20. Sistema de finalización". Zsh.sourceforge.io. 2013-03-06 . Consultado el 2013-08-18 .
  46. ^ "Usar PowerShell para crear parámetros obligatorios". Blogs.technet.com. 22 de mayo de 2011. Consultado el 24 de febrero de 2015 .
  47. ^ sdwheeler. "Novedades de PowerShell 5.0 ISE - PowerShell". docs.microsoft.com . Consultado el 25 de julio de 2021 .
  48. ^ "GitHub - marlonrichert/zsh-autocomplete: 🤖 Autocompletado de escritura anticipada en tiempo real para Zsh. Autocompletado asincrónico de búsqueda mientras se escribe". GitHub . Consultado el 25 de julio de 2021 .
  49. ^ "Uso interactivo: documentación de fish-shell 3.3.1". fishshell.com . Consultado el 25 de julio de 2021 .
  50. ^ Hahn, Harley (2009). Guía de Harley Hahn para Unix y Linux. Boston: McGraw-Hill Higher Education. ISBN 978-0-07-313361-4.OCLC 184828059  .
  51. ^ Concurrent DOS 386 - Sistema operativo multiusuario/multitarea - Guía del usuario (PDF) . Investigación digital .
  52. ^ "pv(1): monitorizar el progreso de los datos a través de una tubería - Página del manual de Linux". Linux.die.net . Consultado el 24 de febrero de 2015 .
  53. ^ "fish: Tutorial". fishshell.com . Consultado el 21 de octubre de 2022 .
  54. ^ "zsh-users/zsh-syntax-highlighting: resaltado de sintaxis similar al shell Fish para Zsh". GitHub . Consultado el 18 de agosto de 2013 .
  55. ^ sdwheeler. "Módulo PSReadLine - PowerShell". learn.microsoft.com . Consultado el 26 de abril de 2023 .
  56. ^ Introducir 'función' incorporada por Matheus Garcia
  57. ^ "Variantes de ceniza". Archivado desde el original el 10 de marzo de 2010. Consultado el 15 de diciembre de 2014 .
  58. ^ "Establecer - Variable de entorno - CMD de Windows". SS64.com . Consultado el 24 de febrero de 2015 .
  59. ^ "¿Cómo recorrer una matriz en lote?". Stack Overflow . Consultado el 24 de febrero de 2015 .
  60. ^ La clase .NET System.Math define funciones matemáticas que se pueden utilizar a través del acceso directo [Math] , por ejemplo [Math]::Sin para la función seno .[2]
  61. ^ "Obtenga un cierre con GetNewClosure". devblogs.microsoft.com . 2009-03-27 . Consultado el 2022-09-12 .
  62. ^ "string - manipular cadenas — documentación de fish-shell 3.1.2". fishshell.com . Consultado el 23 de febrero de 2021 .
  63. ^ Referencia del lenguaje de Hamilton C shell: Wildcarding y coincidencia de patrones, Hamilton Laboratories , recuperado el 29 de octubre de 2013 , ... Directorio indefinido: coincide con cualquier número de niveles de directorio (cero o más), lo que sea necesario para que el resto del patrón coincida.
  64. ^ ab Seebach, Peter (2008-11-21). Introducción a la programación de scripts de shell portables: de principiante a profesional. La voz de un experto en código abierto. Apress (publicado en 2008). p. 149. ISBN 9781430210436. Recuperado el 17 de septiembre de 2014. La expansión de llaves está disponible en ksh93, pdksh, bash y zsh.
  65. ^ Zsh ofrece una variedad de opciones de globbing.
  66. ^ sdwheeler. "Acerca de los operadores: PowerShell". docs.microsoft.com . Consultado el 18 de enero de 2022 .
  67. ^ Hermanos, Hardin; Rawson, Tom ; Conn, Rex C .; Paul, Matthias R.; Dye, Charles E.; Georgiev, Luchezar I. (27 de febrero de 2002). Ayuda en línea de 4DOS 8.00 .
  68. ^ "encuentre una forma de hacer que 'psub --fifo' sea seguro frente a bloqueos · Problema n.° 1040 · fish-shell/fish-shell". GitHub .
  69. ^ "Acerca de las secciones de datos". Technet.microsoft.com . Consultado el 24 de febrero de 2015 .
  70. ^ "Página de manual de Ubuntu: rc - shell". Manpages.ubuntu.com. 17 de julio de 2003. Consultado el 24 de febrero de 2015 .
  71. ^ Provos, Niels. "Encrypting Virtual Memory". Centro para la Integración de Tecnologías de la Información, Universidad de Michigan . Consultado el 20 de diciembre de 2012 .
  72. ^ "bash - GNU Bourne-Again SHell". read -s Modo silencioso. Si la entrada proviene de una terminal, los caracteres no se repiten.
  73. ^ "Uso del cmdlet Read-Host". Si agrega el parámetro -assecurestring, puede enmascarar los datos ingresados ​​en el indicador
  74. ^ "Comando Linux/Unix: stty". Linux.about.com. Archivado desde el original el 25 de febrero de 2015. Consultado el 24 de febrero de 2015 .
  75. ^ "man sh - shell, el intérprete estándar del lenguaje de comandos / posix" (en francés). Pwet.fr. Archivado desde el original el 21 de diciembre de 2014. Consultado el 18 de agosto de 2013 .
  76. ^ "Bash Reference Manual: The Restricted Shell". Gnu.org. 28 de diciembre de 2010. Consultado el 18 de agosto de 2013 .
  77. ^ "New-PSSessionConfigurationFile". Technet.microsoft.com . Consultado el 18 de agosto de 2013 .
  78. ^ Albing, Carl; Vossen, JP; Newham, Cameron (2007). Libro de cocina Bash (1.ª ed.). Sebastopol, California, EE. UU.: O'Reilly Media . ISBN 978-0-596-52678-8. [...] no es lo que uno considera una lista pasiva de variables configuradas. Puede ejecutar otros comandos (por ejemplo, cat) y usar sentencias if para variar sus opciones. Incluso termina haciendo eco de un mensaje. Tenga cuidado cuando obtenga algo como fuente, ya que es una puerta abierta a su script.
  79. ^ "Acerca de las secciones de datos". Microsoft . Consultado el 18 de diciembre de 2012 .
  • Nasarek, Marcus (mayo de 2007). "Artículo" (PDF) . Comparación de Bash con el shell de Windows Vista: Shell Games. Linux Magazine . Archivado (PDF) del original el 10 de octubre de 2014.
  • "Shell y utilidades". Estándar IEEE para tecnología de la información 1003.1™-2024: interfaz de sistema operativo portátil POSIX™.1-2024 — Especificaciones básicas de The Open Group, edición 8 (edición de 2024). IEEE y The Open Group. 8 de agosto de 2024.
Retrieved from "https://en.wikipedia.org/w/index.php?title=Comparison_of_command_shells&oldid=1246083882"