Un shell de comandos es un programa informático de interfaz de línea de comandos para un sistema operativo .
Características generales
Cáscara | Entorno habitual | Usualmente invocado | Introducido | Plataforma independiente | Shell de inicio de sesión predeterminado en | Shell de script predeterminado en | Licencia | Disponibilidad del código fuente | Interfaz de usuario | Soporte de mouse | Soporte Unicode | Soporte ISO 8601 | Redirección de la consola | flujo de redirección | Configurabilidad | Scripts de inicio / apagado | Scripts por lotes | Inicio sesión | disponible como ejecutable de un solo archivo independiente, vinculado estáticamente |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Concha de Thompson | UNIX | sh | 1971 | N / A | UNIX | UNIX | N / A | sí | CLI basada en texto | No | No | N / A | sí | N / A | N / A | N / A | N / A | N / A | N / A |
Bourne shell versión 1977 | 7ª Ed. UNIX | sh | 1977 | Sí [1] | 7ª Ed. UNIX | 7ª Ed. UNIX , | Propietario [2] | sí | CLI basada en texto | No | No | N / A | sí | Sí ( fds arbitrarios ) | Sí (a través de variables y opciones) | Sí ( .perfil ) | Sí (función Unix) | No | sí |
Versión actual de Bourne Shell | Varios UNIX | sh | 1977 | Sí [3] | SunOS-5.x, FreeBSD (usuario no root) [4] | SunOS-5.x | CDDL [5] [se necesita una mejor fuente ] | sí | CLI basada en texto | No | Sí [nb 1] [se necesita una mejor fuente ] | N / A | sí | Si (arbitrario fds ) | Sí (a través de variables y opciones) | Sí ( .perfil ) | Sí (función Unix) | Sí [nb 2] | sí |
Cáscara POSIX [6] | POSIX | sh | 1992 [7] | N / A | N / A | POSIX | N / A | N / A | CLI basada en texto | No | Sí, si lo usa la configuración regional | N / A | sí | Si (arbitrario fds ) | Sí (a través de variables y opciones) | Sin especificar ( .profile dado como ejemplo) | Sí (función Unix) | sí | N / A |
bash (v4) | POSIX | bash, sh | 1989 [8] | sí | GNU , Linux (predeterminado para root), macOS 10.3–10.14 | GNU , Linux , Haiku , macOS 10.3–10.14 | GPL | sí | CLI basada en texto | No | Sí [9] [se necesita una mejor fuente ] | Sí ( printf incorporado) | sí | Si (arbitrario fds ) | Sí (a través de variables y opciones) | Sí ( / etc / profile , .bash_profile , .bash_login , .perfil , .bashrc ) | Sí (función Unix) | sí | sí |
csh | POSIX | csh | 1978 | sí | SunOS | ? | BSD | sí | CLI basada en texto | No | No | ? | sí | Sí ( stdin , la salida estándar , stdout + stderr ) | Sí (a través de variables y opciones) | Sí ( ~ / .cshrc , ~ / .login , ~ / .logout ) | Sí (función Unix) | sí | sí |
tcsh | POSIX | tcsh, csh | 1983 [10] | sí | FreeBSD (predeterminado para root), anteriormente Mac OS X | ? | BSD | sí | CLI basada en texto | No | sí | ? | sí | Sí ( stdin , la salida estándar , stdout + stderr ) | Sí (a través de variables y opciones) | Sí ( /etc/csh.cshrc , /etc/csh.login , ~ / .tcshrc , ~ / .cshrc , ~ / .historia , ~ / .login , ~ / .cshdirs ) | Sí (función Unix) | sí | sí |
Cáscara de Hamilton C | Win32 , OS / 2 | csh | 1988 [11] | Sí (ya no se mantiene la versión OS / 2) | Opcional | Opcional | Propiedad | No | CLI basada en texto | No | No | Sí (-t operador de marca de tiempo) | sí | Sí ( stdin , la salida estándar , stdout + stderr ) | Sí (a través de variables y opciones) | Sí (a través de login.csh, startup.csh y logout.csh) | Sí (opción de línea de comando) | sí | sí |
Scsh | POSIX | scsh | 1994 | sí | ? | ? | Estilo BSD | sí | ? | ? | ? | ? | ? | sí | ? | ? | ? | ? | sí |
ksh (ksh93t +) | POSIX | ksh | 1983 [12] [13] | sí | AIX , HP-UX | OpenSolaris | Licencia pública común | sí | CLI basada en texto | No | sí | Sí ( printf incorporado con % (% F) T [14] ) | sí | Si (arbitrario fds ) | Sí (a través de variables y opciones) | Sí (sistema y usuario perfil y kshrc ) | Sí (función Unix) | sí | sí |
pdksh | POSIX | ksh, sh | 1989? | sí | OpenBSD [15] | OpenBSD [15] | Dominio publico | sí | CLI basada en texto | No | No | N / A | sí | Si (arbitrario fds ) | Sí (a través de variables y opciones) | Sí ( / etc / profile , .perfil ) | Sí (función Unix) | sí | sí |
zsh | POSIX | zsh | 1990 | sí | Deepin , GoboLinux , Grml , macOS 10.15+ | Grml , macOS 10.15+ | Estilo MIT | sí | CLI basada en texto | mediante código adicional [16] | sí | Sí (varias funciones internas relacionadas con la fecha, utilizando el %Fformato strftime [17] y el -i opción para la fc incorporado [18] ) | sí | Si (arbitrario fds ) | Sí (a través de variables, opciones, funciones, estilos, etc.) | Sí (sistema y usuario zshenv , zprofile , zshrc , zlogin , zlogout ) | Sí (función Unix) | sí | sí |
ceniza | POSIX | sh | 1989 | sí | Sistemas basados en Minix , BusyBox | Sistemas basados en NetBSD , Minix , BusyBox | Estilo BSD | sí | CLI basada en texto | No | Parcial (para BusyBox, admitido en la edición de la línea de comandos, pero no en el manejo de cadenas [19] ) | N / A | sí | Si (arbitrario fds ) | Sí (a través de variables y opciones) | Sí ( / etc / profile , .perfil ) | Sí (función Unix) | sí | sí |
PCCh | CP / M , MP / M | (PCC) | 1976 (1974) | No | CP / M (sin inicio de sesión), MP / M | CP / M , MP / M | Freeware (originalmente propietario) | Sí (originalmente de código cerrado) | CLI basada en texto | No | No | No | No | No | No | Sí (automático vía $$$. SUB ) | Parcial (solo vía externa ENVIAR comando para actualizar $$$. SUB ) | No | sí |
COMMAND.COM | DOS | MANDO | 1980 | No (implementaciones de terceros, no vinculadas a un proveedor o versión específicos de DOS, disponibles) | DOS , Windows 95 , 98 , SE , ME | DOS , Windows 95 , 98 , SE , ME | proveedor específico, fe MS - EULA , [nb 3] o BSD / GPL (clones libres) | No (excepto para OpenDOS, DR-DOS, PTS / DOS y FreeDOS) | CLI basada en texto | No | No | No (excepto DR-DOS) | Sí (a través de COMMAND con: o CTTY con: ) | Sí ( stdin , stdout ) | Sí (a través de parámetros de inicio y variables de entorno, DR-DOS también admite Comando de conmutación predeterminado del usuario DIR / C / R ) | Sí (automático \ AUTOEXEC.BAT para el shell primario, o explícitamente a través de / P , /P:filename.bat o / K opciones de inicio) | Sí (a través de Comando LLAMAR o / C y / K opciones de inicio) | No | sí |
OS / 2 CMD.EXE | OS / 2 , eComStation , ArcaOS | CMD | 1987 | No | OS / 2 , eComStation , ArcaOS | OS / 2 , eComStation , ArcaOS | IBM - EULA [nb 4] | No | CLI basada en texto | No | No | No | No | Sí ( stdin , la salida estándar , stderr ) | ? | Parcial (solo a través de / K opción de inicio) | Sí (a través de Comando LLAMAR o / C y / K opciones de inicio) | No | sí |
Windows CMD.EXE [nb 5] | Win32 | CMD | 1993 | No | Windows NT, 2000, XP, servidor 2003, Vista | Windows NT, 2000, XP, servidor 2003, Vista | MS : EULA [nb 6] | No | CLI basada en texto | No | Parcial ( CHCP 65001 para UTF-8 , pero los argumentos del programa todavía están codificados en la página de códigos local) | No | No | sí | Sí (a través del registro, parámetros de inicio y variables de entorno) | Sí (automático a través del registro o explícitamente a través de / K opción de inicio) | Sí (a través de Comando LLAMAR o / C y / K opciones de inicio) | No | sí |
4DOS , NDOS | DOS , Windows 95 , 98 , SE , ME | 4DOS , NDOS | 1989 (1986) | No (no está vinculado a un proveedor o versión de sistema operativo específico) | Opcional | Opcional | Licencia MIT , con restricciones | sí | CLI basada en texto con extensiones TUI | Sí (ventanas emergentes, sistema de ayuda, Variable interna % _MOUSE , Comando INKEY / M ) | No | sí | Sí (a través de CTTY con:, excepto para CAJA DE DIBUJOS , DIBUJAR , DRAWVLINE , LISTA , PANTALLA , SCRPUT , SELECCIONAR , Comandos VSCRPUT y coloración de archivos / directorios) | Sí ( stdin , la salida estándar , stderr , stdout + stderr ) | Sí (a través de 4DOS.INI / Archivo NDOS.INI , parámetros de inicio, variables de entorno, Comando SETDOS ) | Sí (automático \ AUTOEXEC.BAT para shell primario y 4START.BTM / 4START.BAT así como 4EXIT.BTM / 4EXIT.BAT para cualquier shell, o explícitamente a través de / P , /P:dir\filename.ext o / K opciones de inicio) | Sí (a través de Comando LLAMAR o / C y / K opciones de inicio) | sí | sí |
4OS2 | OS / 2 , eComStation , ArcaOS | 4OS2 | 1992 | No (no vinculado a versiones específicas de OS / 2) | Opcional (pero incluido con ArcaOS) | Opcional | Freeware | sí | CLI basada en texto | No | No | No | No | Sí ( stdin , la salida estándar , stderr , stdout + stderr ) | Sí (a través de Archivo 4OS2.INI , parámetros de inicio, variables de entorno, Comando SETDOS ) | Sí (automático vía 4START.CMD / 4START.BTM así como 4EXIT.CMD / 4EXIT.BTM archivos, o explícitamente a través de / K startup.cmd opción) | Sí (a través de Comando LLAMAR o / C y / K opciones de inicio) | sí | ? |
TCC (anteriormente 4NT) | Win32 | TCC | 1993 | No (no vinculado a versiones específicas de NT) | Opcional | Opcional | Shareware | No | CLI basada en texto ( Take Command : GUI ) | Sí (mouse de consola, ventanas emergentes, sistema de ayuda, % _XMOUSE , % _Variables internas de YMOUSE , Comando INKEY / M ) | sí | sí | No | Sí ( stdin , la salida estándar , stderr , stdout + stderr ) | Sí (a través del registro, TCMD.INI / Archivo 4NT.INI , parámetros de inicio, variables de entorno, Comando SETDOS ) | Sí (automático mediante registro y TCSTART / 4START así como TCEXIT / 4EXIT , o explícitamente a través de / K opción de inicio) | Sí (a través de Comando LLAMAR o / C y / K opciones de inicio) | sí | No |
VMS DCL [20] | OpenVMS | Automáticamente para inicio de sesión / proceso interactivo | 1977? | sí | VMS | VMS | Propietario, incluido en VMS | solo con licencia especial | CLI basada en texto | con DECwindows / Motif | sí | Sí, al menos según el estándar de 1988 | sí | Sí ( sys $ entrada , sys $ asignación de salida ) | Sí (mediante símbolos, nombres lógicos y opciones) | Sí (SYS $ MANAGER: SYLOGIN.COM y LOGIN.COM definido por el usuario) | sí | sí | No |
Potencia Shell | .NET , .NET Framework | Potencia Shell | 2006 | sí | Windows 10, 8, Server 2008, 7 [nb 7] | Windows 10, 8, Server 2008, 7 | Estilo MIT | sí | CLI gráfica | sí | sí | sí | No | sí | Sí (a través de variables y opciones) | Sí (% PERFIL DE USUARIO% \ Documentos \ WindowsPowerShell \ Microsoft.PowerShell_profile.ps1) | Sí (función de PowerShell) | sí | No |
rc | Plan 9 , POSIX | rc | 1989 | sí | Plan 9 , versión 10 Unix | Plan 9 , versión 10 Unix | Licencia MIT [21] | ? | ? | ? | sí | ? | ? | sí | ? | ? | ? | ? | sí |
BeanShell | Java | ? | 2005 | sí | ? | ? | LGPL | ? | ? | ? | sí | ? | ? | sí | ? | ? | ? | ? | No |
pescado | POSIX | pescado | 2005 [22] | sí | GhostBSD | ? | GPL | sí | CLI basada en texto | ? | sí | ? | ? | Si (arbitrario fds ) | Sí (a través de variables de entorno y a través de la interfaz web a través de fish_config ) | Sí ( /etc/fish/config.fish y ~ / .config / fish / config.fish ) | Sí (función Unix) | Sí ( ~ / .config / fish / fish_history * ) | ? |
Ion | Redox , Linux | ion | 2015 [23] | sí | Redox | Redox | MIT | sí | CLI basada en texto | ? | sí | sí | ? | Si (arbitrario fds ) | Sí (sigue las especificaciones del directorio base de XDG) | Sí ( ~ / .config / ion / initrc ) | sí | Sí ( ~ / .local / share / ion / history ) | Parcial (no distribuido como un ejecutable independiente, pero se puede construir como uno) |
Cáscara | Entorno habitual | Usualmente invocado | Introducido | Plataforma independiente | Shell de inicio de sesión predeterminado en | Shell de script predeterminado en | Licencia | Disponibilidad del código fuente | Interfaz de usuario | Soporte de mouse | Soporte Unicode | Soporte ISO 8601 | Redirección de la consola | flujo de redirección | Configurabilidad | Scripts de inicio / apagado | Scripts por lotes | Inicio sesión | disponible como ejecutable de un solo archivo independiente, vinculado estáticamente |
Funciones interactivas
Cáscara | Comando nombre de finalización | ruta de finalización | Comando argumento de finalización | comodín finalización | Historial de comandos | Obligatoria argumento pronta | Sugerencias automáticas | Colores de directorios listados | El texto resaltado | sintaxis resaltado | Historial de directorio, pila o características similares | Cambio de directorio implícito | Auto-corrección | integrado entorno | Fragmentos | Solicitud de valor | Menú / Opciones pronta | progreso indicador | Ayuda sensible al contexto | Constructor de comandos |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Concha de Thompson | No | No | No | No | No | No | No | ? | ? | No | No | No | No | No | No | No | No | No | No | No |
Bourne shell versión 1977 | No | No | No | No | No | No | No | ? | ? | No | No | No | No | No | No | sí | No | Externo | No | No |
Versión actual de Bourne Shell | No | Sí [nb 8] | No | No | Sí [nb 8] | No | No | sí | sí | No | Sí (CDPATH, pushd, popd, dirs), CDPATH desde SVr4 | No | No | No | No | sí | No | Externo | No | No |
Cáscara POSIX | No | No | No | No | sí | No | No | sí | sí | No | Sí ( CDPATH ) | No | No | No | No | sí | No | Externo | No | No |
bash (v4.0) | sí | sí | cuando se define | Sí [nb 9] | sí | No | No | sí | sí | No | Sí ( CDPATH , pushd , popd ) | Opcional | No | No | No | sí | sí | Externo | No | No |
csh | sí | sí | No | No | sí | No | No | sí | sí | No | Sí ( cdpath , pushd , popd ) | Opcional | No | No | No | sí | No | Externo | No | No |
tcsh | sí | sí | cuando se define | No | sí | No | No | sí | sí | No | Sí ( cdpath , pushd , popd ) | Opcional | sí | No | No | sí | No | Externo | No | No |
Cáscara de Hamilton C | sí | sí | No | sí | sí | No | No | ? | ? | No | Sí ( cdpath , pushd , popd ) | No | No | No | No | sí | No | Externo | No | No |
Scsh | No | No | No | No | No | No | No | ? | ? | No | No | No | No | No | No | sí | No | Externo | No | No |
ksh (ksh93t +) | Sí (ampliable) | Sí (ampliable) | No | No | sí | No | No | sí | sí | No | Sí ( cdpath incorporado, pushd , popd implementado como funciones) | No | No | No | No | sí | sí | Externo | No | No |
pdksh | sí | sí | No | No | sí | No | No | sí | sí | No | No | No | No | No | No | sí | sí | Externo | No | No |
zsh | sí | sí | cuando se define | Sí [24] | sí | No | Sí (a través de predecible o definido por el usuario [25] ) | sí | sí | Extensión de terceros [26] | sí | Opcional | sí | No | cuando se define (como widgets ZLE) | sí | sí | Externo | sí | No |
ceniza | No | No | No | No | sí | No | No | sí | sí | No | No | No | No | No | No | sí | sí | Externo | No | No |
PCCh | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No |
COMMAND.COM | No | No | No | No | No [nb 10] [nb 11] | No | No | No | No (solo en DR-DOS hasta % $ ON% , % $ OFF% , % $ HEADER% , % $ FOOTER% ) | No | No | No | No | No (solo paso a paso con COMMAND / Y [27] ) | No | No | No (solo vía externa Comando CHOICE , en DR-DOS también a través de INTERRUPTOR / Comandos internos DRSWITCH ) | No | No | No |
OS / 2 CMD.EXE | sí | sí | No | No | sí | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No |
Windows CMD.EXE | parcial | parcial | No | No | Sí ( F8 ) | No | No | No | No | No | Sí ( PUSHD , POPD ) | No | No | No | No | Sí (a través de Comando SET / P ) | No | No | No | No |
4DOS | sí | sí | sí | sí | Sí [nb 12] [nb 13] | No | No | sí | No | No | (a través de una ventana emergente, búsquedas de directorio extendidas, CDPATH , PUSHD , POPD , DIRHISTORY , DIRS , CDD , CD - comandos y % @ DIRSTACK [] función) | sí | No | sí | No | Sí (a través de ENTRADA , INKEY y Comandos de ESET ) | Sí (a través de @SELECT [] función, e indirectamente a través de una combinación de INKEY , ENTRADA , Comandos SWITCH ) | No | sí | No (excepto por Comando OPCIÓN para directivas de archivo INI) |
4OS2 | ? | ? | ? | ? | sí | No | No | sí | No | No | sí | sí | No | ? | No | ? | ? | No | sí | No |
TCC (anteriormente 4NT) | sí | sí | sí | sí | sí | No | No | sí | No | sí | (a través de una ventana emergente, búsquedas de directorio extendidas, CDPATH , PUSHD , POPD , DIRHISTORY , DIRS , CDD , CD - comandos y % @ DIRSTACK [] función) | sí | No | sí | No | Sí (a través de ENTRADA , INKEY , ESET y Comandos SET / P ) | Sí (a través de @SELECT [] función, e indirectamente a través de una combinación de INKEY , ENTRADA , Comandos SWITCH ) [nb 14] | No | sí | No |
Potencia Shell | sí | sí | sí | sí | Sí ( F8 ) | sí | Sí, en ISE [28] | ? | ? | Sí, en el módulo ISE [28] y PSReadLine [29] (incluido en v5.0 [30] ) | Sí; múltiples pilas; varios tipos de ubicación [31] | No | Sí, en PSReadLine [29] módulo | Sí, en ISE [28] | Sí, en ISE [28] | sí | Sí [32] | Sí [33] | Sí, en ISE [28] | ventana emergente [34] |
rc | Sí [nb 15] | Sí [nb 15] | No | No | Sí [nb 15] | No | No | ? | ? | No | No | No | No | No | No | ? | No | No | No | No |
BeanShell | sí | sí | No | No | No | No | No | ? | ? | No | No | No | No | No | No | No | No | No | No | No |
VMS DCL | Esquema de unicidad mínima | No | No | No | sí | sí | No | ? | ? | No | No | No | No | No | No | sí | No | No | No | No |
pescado | sí | sí | cuando se define o se puede analizar en las páginas de manual [35] | Sí [35] | sí | No | sí | sí | Sí (ayuda incorporada disponible [36] ) | sí | sí | sí | sí | Sí [nb 16] | Si, usando comando abbr | sí | (vía comando fish_config [37] ) | No | No | No |
Cáscara | Comando nombre de finalización | ruta de finalización | Comando argumento de finalización | comodín finalización | Historial de comandos | Obligatoria argumento pronta | Sugerencias automáticas | Colores de directorios listados | El texto resaltado | sintaxis resaltado | Historial de directorio, pila o características similares | Cambio de directorio implícito | Auto-corrección | integrado entorno | Fragmentos | Solicitud de valor | Menú / Opciones pronta | progreso indicador | Ayuda sensible al contexto | Constructor de comandos |
Ejecución en segundo plano
La ejecución en segundo plano permite que un shell ejecute un comando en segundo plano. Los shells POSIX y otros shells de Unix permiten la ejecución en segundo plano usando el carácter & al final del comando, y en PowerShell puede usar los comandos Start-Process
o Start-Job
.
Terminaciones
Las funciones de finalización ayudan al usuario a escribir comandos en la línea de comandos, buscando y sugiriendo palabras coincidentes para las incompletas. La finalización generalmente se solicita presionando la tecla de finalización (a menudo la Tab ↹tecla).
Nombre del comando finalización es la realización del nombre de un comando. En la mayoría de los shells, un comando puede ser un programa en la ruta del comando (generalmente $PATH
), un comando incorporado, una función o un alias.
Finalización 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 la ruta, donde una expresión coincide con cualquier número de archivos, utilizando cualquier sintaxis compatible para la coincidencia de archivos .
La finalización de variable es la finalización del nombre de un nombre de variable ( variable de entorno o variable de shell). Bash, zsh y fish tienen finalización para todos los nombres de variable. PowerShell tiene complementos para nombres de variables de entorno, nombres de variables de shell y, desde funciones definidas por el usuario, nombres de parámetros.
La finalización del argumento de un comando 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. Algunas shells permiten completar nombres de argumentos, pero pocas admiten completar valores.
Bash, zsh y fish ofrecen la finalización del nombre del parámetro a través de una definición externa al comando, distribuida en un archivo de definición de finalización separado. Para completaciones de nombre / valor de parámetro de comando, estos shells asumen la finalización de ruta / nombre 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. [38] La concha de pescado 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 nombre y valor de argumento 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 los valores de los argumentos donde los valores de finalización se calculan dinámicamente en el sistema en ejecución.
Historial de comandos
Un usuario de un shell puede encontrar que está escribiendo algo similar a lo que el usuario escribió antes. Si el shell admite el historial de comandos, el usuario puede llamar al comando anterior en el editor de línea y editarlo antes de volver a emitirlo.
Los shells que admiten la finalización también pueden completar directamente el comando desde el historial de comandos dada una parte inicial / parcial del comando anterior.
La mayoría de los proyectiles modernos admiten el historial de comandos. Los shells que admiten el historial de comandos en general también admiten la finalización del historial en lugar de solo recuperar los comandos del historial. Además del texto de comando sin formato, PowerShell también registra la hora de inicio y finalización de la ejecución y el estado de ejecución en el historial de comandos.
Solicitud de argumento obligatorio
Los argumentos / parámetros obligatorios son argumentos / parámetros a los que se les debe asignar un valor al invocar el comando, función o archivo de script. Un shell que puede 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. Tener el indicador de shell para los valores faltantes permitirá al autor de un script, comando o función 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 fallar con un mensaje.
PowerShell permite que los comandos, funciones y scripts definan argumentos / parámetros como obligatorios . El shell determina antes de la invocación si hay argumentos / parámetros obligatorios que no se hayan vinculado, y luego solicitará al usuario los valores antes de la invocación real. [39]
Sugerencias automáticas
Con sugerencias automáticas, el shell monitorea mientras el usuario interactivo está escribiendo y muestra sugerencias relevantes al contexto sin interrumpir la escritura en lugar de que el usuario solicite explícitamente que se complete .
El entorno de scripting integrado de PowerShell utiliza los metadatos detectables para proporcionar "intellisense", es decir, sugerencias que aparecen automáticamente a medida que el usuario escribe, además de cuando el usuario solicita explícitamente listas de finalización presionando, por ejemplo, Tab ↹
Historial de directorio, pila o características similares
Un shell puede registrar las ubicaciones que el usuario ha utilizado como ubicaciones actuales y permitir un cambio rápido a cualquier ubicación / directorio en el historial.
Uno de los usos de la pila de directorios zsh es registrar un historial de directorios. En particular, el Opción AUTO_PUSHD y avanzado Los argumentos cd y la finalización se utilizan para este propósito.
PowerShell permite utilizar varias pilas con nombre. Las ubicaciones (directorios) se pueden insertar o extraer de la pila actual o de una pila con nombre. Cualquier pila puede convertirse en la pila actual (predeterminada). A diferencia de la mayoría de los otros 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 .
4DOS y Take Command Console registran el historial de los directorios actuales y permiten al usuario cambiar a un directorio en el historial usando una ventana emergente.
Cambio de directorio implícito
El nombre de un directorio se puede utilizar directamente como un comando que cambia implícitamente la ubicación actual al directorio.
Esto debe distinguirse de una función de unidad de carga no relacionada compatible con DOS concurrentes , DOS multiusuario , System Manager y REAL / 32 , donde la letra de unidad L: se actualizará implícitamente para señalar la ruta de carga de una aplicación cargada, lo que permitirá que las aplicaciones se refieren a archivos que residen en su directorio de carga bajo una letra de unidad estandarizada en lugar de bajo una ruta absoluta. [40]
Auto-corrección
Cuando una línea de comando no coincide directamente con un comando o argumentos, la revisión ortográfica puede corregir automáticamente los errores comunes de escritura (como la distinción entre mayúsculas y minúsculas , letras faltantes). Hay dos enfoques para esto; el shell puede sugerir correcciones probables tras la invocación del 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 autocorrección al finalizar y la autosugestión. Por lo tanto, la característica no interfiere al escribir todo el comando y presionar 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 [29] PowerShell (que se envía con la versión 5.0) proporciona la opción de especificar un CommandValidationHandler ScriptBlock que se ejecuta antes de enviar el comando. Esto permite la corrección personalizada de comandos comúnmente mal escritos y la verificación antes de ejecutar el comando.
Entorno integrado
Un entorno integrado es la integración de la interfaz de línea de comandos con editores (normalmente varios documentos), sistema de ayuda y posiblemente depuración y otras herramientas.
Take Command Console (TCC) viene con un entorno integrado con panel de línea de comandos, explorador de archivos, editor, depurador por lotes y más. [41]
PowerShell ISE incluye un panel de línea de comando con soporte para línea de comando integrada, copiar y pegar, varios editores de documentos, depuración a nivel de fuente , panel de ayuda, panel de explorador de comandos e interfaz de scripting que permite que los scripts / módulos manipulen menús, complementos, etc. ISE (menús, ventanas, accesos directos, complementos) se pueden personalizar mediante secuencias de comandos. [42]
Fragmentos
Los fragmentos son pequeñas regiones de código de script reutilizable. Los fragmentos de código se utilizan a menudo para ahorrar pulsaciones de teclas o para ayudar al usuario con patrones de secuencias de comandos comunes. Muchos editores de texto admiten fragmentos de código para la creación de secuencias de comandos, ya sea como funcionalidad incorporada o mediante complementos.
PowerShell admite fragmentos en el entorno de scripting integrado (ISE) mediante Ctrl+ J. [43]
Solicitud de valor
Un script de shell puede solicitar al usuario interactivo un valor.
Selector de menú / opciones
Un script de shell puede presentar al usuario interactivo una lista de opciones.
Indicador de progreso
Un script de shell (o trabajo) puede informar el progreso de las tareas de larga ejecución al usuario interactivo.
Los sistemas Unix / Linux pueden ofrecer soporte para otras herramientas usando indicadores de progreso de scripts o como comandos independientes, como el programa "pv". [44] Sin embargo, estas no son características integradas de las carcasas.
PowerShell tiene un comando integrado y funciones de API (para usar al crear comandos) para escribir / 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 usuarios 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.
Mesa interactiva
La salida de la ejecución de un comando se puede mostrar en una tabla / cuadrícula que se puede clasificar y filtrar de forma interactiva y / o manipular de otro modo después de que finalice la ejecución del comando.
Potencia Shell El cmdlet Out-GridView muestra datos en una ventana interactiva con clasificación y filtrado interactivos.
Listas de directorios de colores
Los procesadores de línea de comandos de JP Software proporcionan coloración configurable por el usuario de los nombres de archivos y directorios en listas de directorios en función de su extensión de archivo y / o atributos a través de una variable de entorno% COLORDIR% definida opcionalmente.
Para los shells de Unix / Linux, esta es una característica del ls comando y el terminal.
Resaltado de texto
Los procesadores de línea de comando en DOS Plus , Multiusuario 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 con fines de visualización o impresión en comandos como TIPO . Todos los procesadores de línea de comandos mencionados admiten % $ ON% y % $ OFF% . Si se define, estas secuencias se emitirán antes y después de los nombres de archivo. Una secuencia típica para% $ ON% sería \ 033 [1m junto con ANSI.SYS , \ 033p para un terminal ASCII o \ 016 para una impresora IBM o ESC / P. Asimismo, las secuencias típicas para% $ OFF% serían \ 033 [0m, \ 033q, \ 024, respectivamente. Las variables % $ HEADER% y % $ FOOTER% solo son compatibles con COMMAND.COM en DR-DOS 7.02 y superior para definir secuencias emitidas antes y después de los 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 del terminal.
Resaltado de sintaxis
Un proyecto independiente ofrece resaltado de sintaxis como complemento de Z Shell (zsh). [45] Sin embargo, esto no es parte del caparazón.
PowerShell proporciona resaltado de sintaxis personalizable en la línea de comandos a través del módulo PSReadLine [29] . Este módulo se puede usar con PowerShell v3.0 + y se incluye con v5.0. Además, se carga de forma predeterminada en el host de línea de comandos "powershell.exe" en v5.0. PowerShell ISE también incluye resaltado de sintaxis en la línea de comandos y en el panel de secuencias de comandos. [42] 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 F1se presiona.
Zsh proporciona varias formas de ayuda contextual configurable como parte de su widget de ayuda para ejecutar , _complete_help comando, o en la finalización de opciones para algunos comandos.
Constructor de comandos
Un generador de comandos es un diálogo guiado que ayuda al usuario a completar un comando. PowerShell tiene un generador de comandos que está disponible en PowerShell ISE o que se puede mostrar por separado a través del Cmdlet Show-Command . [46]
Funciones de programación
Cáscara | Funciones | Manejo de excepciones | Buscar y reemplazar en sustituciones de variables | Aritmética | Punto flotante | Biblioteca de funciones matemáticas | Matrices o listas lineales | Matrices asociativas | Funciones lambda | función eval | Generación de números pseudoaleatorios | Bytecode |
---|---|---|---|---|---|---|---|---|---|---|---|---|
Bourne shell versión 1977 | No | Sí (a través de trampa ) | No | No | No | No | No | No | No | sí | No | No |
Versión actual de Bourne Shell | Sí desde SVR2 | Sí (a través de trampa ) | No | Sí [nb 8] | No | No | No | No | No | sí | No | No |
Cáscara POSIX | sí | Sí (a través de trampa ) | No | sí | No | No | No | No | No | sí | No | No |
bash (v4.0) | sí | Sí (a través de trampa ) | Sí (a través de $ {// } sintaxis) | sí | No | No | sí | sí | No | sí | Sí ( $ AL AZAR ) | No |
csh | No | No | Sí (a través de $ var: s /// sintaxis) | sí | No | No | sí | No | No | sí | No | No |
tcsh | No | No | Sí (a través de $ var: s /// sintaxis) | sí | No | No | sí | No | No | sí | No | No |
Cáscara de Hamilton C | sí | No | Sí (a través de $ var: s /// sintaxis) | sí | sí | sí | sí | No | No | sí | Sí (utilidad aleatoria) | No |
Scsh | sí | ? | Sí (a través de funciones de cadena y expresiones regulares) | ? | ? | ? | sí | ? | sí | sí | Sí (entero aleatorio, real aleatorio) | Sí (el compilador es una máquina virtual Scheme48, a través de scshvm ) |
ksh (ksh93t +) | sí | Sí (a través de trampa ) | Sí (a través de $ {// } sintaxis y comandos integrados) | sí | sí | sí | sí | sí | No | sí | Sí ( $ AL AZAR ) | Sí (el compilador se llama shcomp ) |
pdksh | sí | Sí (a través de trampa ) | No | sí | No | No | sí | No | No | sí | Sí ( $ AL AZAR ) | No |
zsh | sí | sí | Sí (a través de $ {: s // } y $ {// } sintaxis) | sí | sí | Sí ( módulo zsh / mathfunc ) | sí | sí | No | sí | Sí ( $ AL AZAR ) | Sí (incorporado comando zcompile ) |
ceniza | sí | Sí (a través de trampa ) | No | Sí (desde 1992) [47] | No | No | No | No | No | sí | No | No |
PCCh | No | ? | No | No | ? | ? | No | No | No | No | No | No |
COMMAND.COM | No | Parcial (solo falla automática (a través de COMANDO / F (o / N en algunas versiones de DR-DOS)) | No | No | No | No | No | No | No | No | No | No |
OS / 2 CMD.EXE | No | No | No | ? | No | No | ? | No | No | No | No | No |
Windows CMD.EXE | Sí (a través de LLAMADA: etiqueta ) | No | Sí (a través de SET% varname : sintaxis de expresión ) | Sí (a través de SET / A ) [48] | No | No | Sí (a través de AJUSTAR [49] ) | No | No | No | Sí ( % aleatorio% ) | No |
4DOS | sí | Sí (a través de Comando ON , fallo automático opcional a través de 4DOS / F ) | Sí (a través de % @ Reemplazar [...] función) | Sí (a través de SET / A ) | ? | ? | Sí (a través de rangos, incluir listas, @ listas de archivos y PARA el comando) | No | No | sí | Sí ( % @ Función [...] aleatoria ) | Sí (a través de Comando BATCOMP ) |
4OS2 | ? | ? | ? | ? | ? | ? | ? | ? | No | sí | Sí ( % @ Función [...] aleatoria ) | ? |
TCC (anteriormente 4NT) | sí | Sí (a través de ON y varios ... comandos MONITOR ) | Sí (a través de % @ Reemplazar [...] función) | Sí (a través de SET / A ) | ? | ? | Sí (a través de rangos, incluir listas, @ listas de archivos y PARA el comando) | ? | No | sí | Sí ( % @ Función [...] aleatoria ) | Sí (a través de Comando BATCOMP ) |
Potencia Shell | sí | Sí (Try-Catch-Finalmente) | Sí ( -remplazar operador) | sí | sí | [Matemáticas] clase [50] | sí | sí | sí | sí | sí | Si, automatico |
rc | sí | sí | No | ? | ? | ? | sí | ? | No | sí | No | No |
BeanShell | sí | sí | ? | sí | ? | ? | sí | sí | No | sí | sí | sí |
VMS DCL | sí | sí | No | sí | No | sí, para programas compilados | sí | No | No | No | No | No |
pescado | sí | Sí (a través de trampa ) | Si, via comando incorporado de cadena [51] | sí | sí | sí | sí | No | No | sí | Sí ( aleatorio ) | No |
Procesamiento de cadenas y coincidencia de nombres de archivos
Cáscara | Procesamiento de cadenas | Alternancia ( expansión de la abrazadera ) | Coincidencia de patrones ( expresiones regulares incorporadas) | Coincidencia de patrones ( globbing de nombre de archivo ) | Calificadores globbing (generación de nombre de archivo basada en atributos de archivo) | Globbing recursivo (generación de archivos desde cualquier nivel de subdirectorios) |
---|---|---|---|---|---|---|
Bourne shell versión 1977 | ? | No | No | Sí ( * , ? , [...] ) | No | No |
Bourne shell versión reciente | Parcial (eliminación de prefijos y sufijos en expansión variable) | No | No | Sí ( * , ? , [...] ) | No | No |
Cáscara POSIX | Parcial (eliminación de prefijos y sufijos en expansión variable) | No | No | Sí ( * , ? , [...] ) | No | No |
bash (v4.0) | Parcial (eliminación de prefijos y sufijos en expansión variable) | sí | sí | Sí ( * , ? , [...] , {... }) | No | Sí ( ** / ... ) |
csh | Sí (: sy otros operadores de edición) | sí | No | sí | No | No |
tcsh | Sí (: sy otros operadores de edición) | sí | sí | sí | No | No |
Cáscara de Hamilton C | Sí (: sy otros operadores de edición + substr, strlen, strindex, printf, reverse, upper, lower, concat y otras funciones integradas) | sí | No | sí | No | Sí (a través de directorio indefinido comodín "..." [52] ) |
Scsh | ? | ? | sí | sí | No | No |
ksh (ksh93t +) | Parcial (prefijo, eliminación de sufijo y reemplazo de cadena en expansión variable) | Sí [53] | sí | Sí ( * , ? , [...] ) | No | Si (con set -G , sin seguimiento de enlaces simbólicos) |
pdksh | ? | Sí [53] | No | sí | No | No |
zsh | Sí (mediante procesamiento de variables: p. Ej. Extracción de subcadenas, varias transformaciones mediante expansión de parámetros) | sí | sí | Sí ( * , ? , [...] , globbing extendido [54] ) | sí | Sí ( ** / ... o *** / ... para seguir enlaces simbólicos) |
ceniza | ? | ? | No | sí | No | No |
PCCh | No | No | No | No | No | No |
COMMAND.COM | No | No | No | Sí ( * , ? ) | No | No |
OS / 2 CMD.EXE | No | No | No | Sí ( * , ? ) | Parcial (solo en DIR / A: ... comando) | No |
Windows CMD.EXE | Parcial (solo a través FOR / F y SET / A ) | No | No [nb 17] | Sí ( * , ? ) | Parcial (solo en DIR / A: ... comando) | Sí (a través de Comando FOR / R o, cuando esté disponible, indirectamente a través de Opción de subdirectorio / S ) |
4DOS | Sí (a través de funciones variables % @ ... [] , procesamiento de variables de entorno extendido, varios comandos de cadena y FOR / F y SET / A ) | No | No | Sí ( * , ? , [...] , comodines extendidos , SELECCIONAR comando emergente) | Sí (a través de / A: ... atributo y / I "..." opciones de descripción y / [S ...] tamaño, / [T ...] tiempo, / [D ...] fecha, y / [! ...] rangos de exclusión de archivos) | Sí (a través de Comando FOR / R , o indirectamente a través de Comando GLOBAL o, cuando esté disponible, Opción de subdirectorio / S ) |
4OS2 | ? | No | No | ? | ? | ? |
TCC (anteriormente 4NT) | Sí (a través de funciones variables % @ ... [] , procesamiento de variables de entorno extendido, varios comandos de cadena y FOR / F y SET / A ) | No | sí | Sí ( * , ? , [...] , comodines extendidos , SELECCIONAR comando emergente) | Sí (a través de / A: ... atributo y / I "..." opciones de descripción y / [S ...] tamaño, / [T ...] tiempo, / [D ...] fecha, / [O ...] propietario, y / [! ...] rangos de exclusión de archivos) | Sí (a través de Comando FOR / R , o indirectamente a través de Comando GLOBAL o, cuando esté disponible, Opción de subdirectorio / S ) |
Potencia Shell | Sí (Concat / Substring / Insert / Remove / Replace, ToLower / ToUpper, Trim / TrimStart / TrimEnd, Compare, Contains / StartsWith / EndWith, Format, IndexOf / LastIndexOf, Pad / PadLeft / PadRight, Split / Join, funciones de expresión regular y otras funciones de cadena .NET) | No | Sí (compatibilidad completa con expresiones regulares) [nb 18] | Sí ( * , ? , [...] ) | ? | ? |
rc | ? | ? | No | sí | No | No |
BeanShell | ? | ? | sí | ? | ? | ? |
VMS DCL | sí | No | No | sí | No | Sí (a través de [SUBDIR ...] ) |
pescado | Sí (función de cadena incorporada) | sí | sí (a través de incorporado coincidencia de cuerda y funciones de reemplazo de cadenas ) | Sí ( * , ? , {... }) | No | Sí ( ** / ... ) |
Comunicación entre procesos
Cáscara | Tubería | Sustitución de mando | Sustitución de procesos | Subcapas | Conexiones TCP / UDP como transmisiones | Apilamiento de pulsaciones de teclas |
---|---|---|---|---|---|---|
Cáscara de Bourne | bytes concurrentes | sí | No | sí | No | N / A [nb 19] |
Cáscara POSIX | bytes concurrentes | sí | No | sí | No | N / A [nb 19] |
bash (v4.0) | bytes concurrentes | sí | Sí (si el sistema admite / dev / fd / ⟨n⟩ o canalizaciones con nombre) | sí | Si (solo cliente) | N / A [nb 19] |
csh | bytes concurrentes | sí | No | sí | No | N / A [nb 19] |
tcsh | bytes concurrentes | sí | No | sí | No | N / A [nb 19] |
Cáscara de Hamilton C | bytes concurrentes | sí | No | sí | No | ? |
Scsh | texto | ? | ? | ? | sí | N / A [nb 19] |
ksh (ksh93t +) | bytes (puede contener objetos serializados si print -C se usa) concurrente | Sí ( $ (...) y $ { | Sí (si el sistema admite / dev / fd / ⟨n⟩ ) | sí | Sí (y soporte SCTP, solo cliente) | N / A [nb 19] |
pdksh | bytes concurrentes | sí | No | sí | No | N / A [nb 19] |
zsh | bytes concurrentes | sí | sí | sí | Sí (cliente y servidor, pero solo TCP) | N / A [nb 19] |
ceniza | bytes concurrentes | sí | No | sí | No | N / A [nb 19] |
PCCh | No | No | No | No | No | No |
COMMAND.COM | archivos temporales secuenciales de texto | No | No | Parcial (solo en multitarea DR-DOS a través de COMMAND.COM / T ) | No | No |
OS / 2 CMD.EXE | texto concurrente | No | No | ? | No | No |
Windows CMD.EXE | texto concurrente | Sí (a través de Comando FOR / F ) | No | Sí (tilde al revés: ` en FOR / F usebackq ) | No | No |
4DOS | archivos temporales secuenciales de texto | Sí (a través de Comando FOR / F ) | ? | Parcial (a través de % @ EXECSTR [] y % @ EXEC [] , o mediante SET / M , ESET / M y UNSET / M y % @ MASTER [...] ) | No | Sí (a través de KEYSTACK y KSTACK ) [55] |
4OS2 | texto concurrente | ? | ? | ? | No | Sí (a través de KEYSTACK ) |
TCC (anteriormente 4NT) | texto concurrente | Sí (a través de Comando FOR / F ) | ? | Parcial (a través de % @ EXECSTR [] y % @ EXEC [] ) | Sí (a través de FTP , TFTP , FTPS , SFTP , HTTP , HTTPS y IFTP , solo cliente) | Sí (a través de KEYSTACK ) |
Potencia Shell | objetos concurrentes | sí | No | sí | sí | ? |
rc | texto concurrente | sí | Sí (a través de: <{cmd } si el sistema lo admite / dev / fd / ⟨n⟩ ) | sí | No | ? |
BeanShell | No soportado | ? | ? | ? | sí | ? |
VMS DCL | texto (a través de Comando PIPE ) | sí | No | Sí (spawn) | Sí (solo servidor TCP) | No |
pescado | bytes concurrentes | Sí ( ... ) | No (roto) [56] | No | No | N / A [nb 19] |
Apilamiento de pulsaciones de teclas
Anticipándose a lo que una aplicación en ejecución determinada puede aceptar como entrada de teclado, el usuario del shell le indica al shell 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 dirigir la aplicación para que realice acciones que serían imposibles de lograr mediante la redirección de entrada o que de otro modo requerirían un usuario interactivo. Por ejemplo, si una aplicación actúa sobre las 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 inicio o bajo ciertas condiciones, o porque no lee la entrada estándar en absoluto. El apilamiento de pulsaciones de teclas normalmente también proporciona un medio para controlar la sincronización de las teclas simuladas que se envían o para retrasar las teclas nuevas hasta que se vacíe 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, el usuario no podría escribirla.
Características de seguridad
Cáscara | Solicitud segura (contraseña) | Variables / parámetros encriptados | Contraseñas de archivos / directorios | Permiso de ejecución | Bloqueo de secuencias de comandos que no son de confianza | Subconjunto de caparazón restringido | Subconjunto de datos seguros |
---|---|---|---|---|---|---|---|
Cáscara de Bourne | vía stty [nb 20] | No | ? | N / A [nb 21] | No | sí | No |
Cáscara POSIX | vía stty [nb 20] | No | ? | N / A [nb 21] | No | No | No |
bash (v4.0) | lee -s | No | ? | N / A [nb 21] | No | sí | No |
csh | vía stty [nb 20] | No | ? | N / A [nb 21] | No | sí | No |
tcsh | vía stty [nb 20] | No | ? | N / A [nb 21] | No | sí | No |
Cáscara de Hamilton C | No | No | No | No | No | No | No |
Scsh | vía stty [nb 20] | No | ? | N / A [nb 21] | No | No | No |
ksh (ksh93t +) | vía stty [nb 20] | No | ? | N / A [nb 21] | No | sí | No |
pdksh | vía stty [nb 20] | No | ? | N / A [nb 21] | No | sí | No |
zsh | lee -s | No | ? | N / A [nb 21] | No | sí | No |
ceniza | vía stty [nb 20] | No | ? | N / A [nb 21] | No | sí | No |
PCCh | No | No | No | No | No | No | No |
COMMAND.COM | Parcial (solo en DR-DOS, solicita contraseña si el archivo / directorio está protegido) | No | Parcial (solo bajo DR-DOS vía \ dirname; dirpwd \ filename; sintaxis filepwd ) [nb 22] | Parcial (solo bajo DR-DOS, si los archivos están protegidos con contraseña para permisos de lectura y / o ejecución) [nb 23] | No | No | No |
OS / 2 CMD.EXE | No | No | No | No | No | No | No |
Windows CMD.EXE | No | No | No | No | No | No | No |
4DOS | Sí (a través de ENTRADA / P o INKEY / P ) [nb 24] | No | Parcial (solo bajo DR-DOS vía \ dirname ;; dirpwd \ filename ;; sintaxis filepwd ) [nb 22] | Parcial (solo bajo DR-DOS, si los archivos están protegidos con contraseña para permisos de lectura y / o ejecución) [nb 23] | No | No | No |
4OS2 | ? | No | No | No | No | No | No |
TCC (anteriormente 4NT) | Sí (a través de ENTRADA / P , INKEY / P o QUERYBOX / P ) [nb 24] | No | No | No | No | No | No |
Potencia Shell | Sí [nb 25] | sí | No | No [nb 26] | Sí [57] | Sí [nb 27] | Sí [58] |
rc | vía stty [nb 20] | No | ? | N / A [nb 21] | No | Sí [59] | No |
BeanShell | ? | ? | ? | ? | ? | ? | ? |
VMS DCL | sí | No | No | sí | No | sí | No |
pescado | lee -s | No | ? | N / A [nb 21] | No | Sí (a través de pescado -l ) | ? |
Aviso seguro
Algunos scripts de shell necesitan consultar al usuario sobre información confidencial como contraseñas , claves digitales privadas, códigos PIN u otra información confidencial. La entrada sensible no debe ser devuelta a la pantalla / dispositivo de entrada donde podría ser recogida por personas no autorizadas. También debe evitarse la representación en memoria de texto sin formato de información sensible, 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. [60]
Los shells bash, zsh y PowerShell ofrecen esto como una característica específica. [61] [62] Los proyectiles 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 apagar / encender el eco de los caracteres de entrada. [63] Además de no hacer eco de los personajes, PowerShell -La opción AsSecureString también cifra la entrada carácter por carácter durante el proceso de entrada, asegurando 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.
Variables / parámetros encriptados
Si un script lee una contraseña en una variable de entorno, está en la memoria en texto sin formato y, por lo tanto, se puede acceder a ella a través de un volcado de memoria. También se encuentra en el entorno del proceso, al que pueden acceder otros procesos iniciados por el script. [64]
PowerShell puede trabajar con variables / parámetros de cadena encriptados. [65] Las variables encriptadas aseguran que los valores no se revelen inadvertidamente a través de, por ejemplo, transcripciones, eco, archivos de registro, volcados de memoria o por caída o incluso escaneos de memoria maliciosos. PowerShell también admite el guardado de dichas cadenas cifradas en archivos de texto, protegidos por una clave propiedad del usuario actual.
Permiso de ejecución
Algunos sistemas operativos definen un permiso de ejecución que se puede otorgar a usuarios / grupos para un archivo.
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 del programa invocador, ni del programa invocado, para hacer cumplir el permiso de ejecución; esto también se aplica a los shells y otros programas de interpretación. El comportamiento es ordenado por la biblioteca POSIX C que se utiliza para interactuar con el kernel. POSIX especifica que la exec
familia de funciones fallará con EACCESS (permiso denegado) si el archivo deniega el permiso de ejecución (consulte Referencia de interfaces del sistema, Especificación única de UNIX , Número 7 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 para el intérprete de comandos, se ejecutará independientemente de si el usuario tiene el 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.
Bloqueo de secuencias de comandos que no son de confianza
Algunos shells bloquearán los scripts que se determine que no son confiables o se negarán a ejecutar scripts si así lo exige un administrador del sistema.
Restricción de ejecución del origen del script
PowerShell se puede configurar para bloquear la ejecución de scripts que se hayan marcado como obtenidos de un origen desconocido o no confiable (por ejemplo, Internet). [66] Las aplicaciones orientadas a Internet, como navegadores web, clientes de mensajería instantánea, lectores de correo, etc., marcan los archivos descargados de Internet con la zona de origen en un flujo de datos alternativo que PowerShell entiende.
Restricción de escritura firmada
Las políticas de firma de código / scripts se pueden utilizar para garantizar que un departamento de operaciones solo ejecute scripts / código aprobados que hayan sido revisados y firmados por un revisor / aprobador de confianza. Los regímenes de firma también protegen contra la manipulación. Si se envía una secuencia de comandos del proveedor a un cliente, el cliente puede usar la firma para asegurarse de que la secuencia de comandos no haya sido manipulada durante el tránsito y que la secuencia de comandos de hecho se origine en el proveedor y no en un atacante que intenta hacer ingeniería social a un operador para que ejecute un script de ataque.
PowerShell se puede configurar para permitir la ejecución de scripts que de otro modo estarían bloqueados (por ejemplo, que se originan en una zona que no es de confianza) si el script se ha firmado digitalmente con un certificado digital de confianza. [67] [68] [69]
Políticas de ejecución multinivel
Una empresa puede querer hacer cumplir la restricción de ejecución a nivel mundial dentro de la empresa y / o ciertas partes de la empresa. Es posible que desee establecer una política para ejecutar scripts firmados, pero permitir que ciertas partes de la empresa establezcan sus propias políticas para las restricciones por zonas.
PowerShell permite que las políticas de bloqueo de scripts se apliquen en varios niveles: máquina local, usuario actual, etc. Una política de nivel superior anula una política de nivel inferior, por ejemplo, si se define una política para la máquina local, se aplica a todos los usuarios de la máquina local. , solo si se deja sin definir en el nivel superior, se puede definir para los niveles inferiores.
Subconjunto de caparazón restringido
Se pueden iniciar o configurar varios shells para que se inicien en un modo en el que el usuario solo dispone de un conjunto limitado de comandos y acciones. Si bien no es un límite de seguridad (el comando que accede a un recurso está bloqueado en lugar del recurso), se usa generalmente 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 tal modo en el que varios de los comandos integrados están deshabilitados y solo se pueden invocar comandos externos de un directorio determinado. [70] [71]
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 ruta visibles (disponibles), etc. [72]
Subconjunto de datos seguros
Los scripts que invocan otros scripts pueden suponer un riesgo para la seguridad, ya que potencialmente pueden ejecutar código externo en el contexto del usuario que inició el script inicial. Las secuencias de comandos generalmente se diseñarán para incluir exclusivamente secuencias de comandos 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. [73] Una forma de abordar este riesgo es que el shell ofrezca un subconjunto seguro de comandos que se pueden ejecutar mediante un script incluido.
Las secciones de datos de PowerShell pueden contener constantes y expresiones mediante un subconjunto restringido de operadores y comandos. [74] Las secciones de datos de PowerShell se utilizan cuando, por ejemplo, las cadenas localizadas deben leerse desde una fuente externa mientras se protege contra efectos secundarios no deseados.
Notas
- ^ Desde mediados de la década de 1990.
- ^ si se compila con -DACCT.
- ^ Componente de MS-DOS y Windows: cubierto por una licencia válida para MS-DOS o Microsoft Windows.
- ^ Componente OS / 2: cubierto por una licencia válida para OS / 2.
- ^ Extensiones de comando habilitadas o "CMD / X".
- ^ Componente de Windows: cubierto por una licencia válida para Microsoft Windows.
- ^ Microsoft PowerShell se instala de forma predeterminada en Windows 7 y versiones posteriores. Es una descarga opcional para usuarios de Windows Vista o Windows XP.
- ^ a b c versiones actuales de Jörg Schilling.
- ^ Alt-Shift-8 o Alt- * se expandirá a la lista completa coincidente de nombres de archivo.
- ^ Disponible a través del Complemento DOSKEY .
- ^ Disponible en DR-DOS hasta HISTORIA .
- ^ Alternativamente disponible a través del Complemento DOSKEY también.
- ^ Alternativamente disponible en DR-DOS a través de HISTORIA también.
- ^ TCC tiene funciones especiales de aviso para Sí, No, Cancelar, Cerrar, Reintentar.
- ^ a b c Gestionado por rio , GNU readline , editline o vrl .
- ^ La concha de pescado es una superficie de entrada / salida basada en caracteres interactivos.
- ^ No disponible como carcasa incorporada. Externo El comando FINDSTR / R está disponible en la mayoría de las versiones de Windows.
- ^ PowerShell aprovecha elmotor de expresión regular .NET completoque presenta capturas con nombre, búsqueda anticipada / posterior de ancho cero, codiciosos / no codiciosos, clases de caracteres, recuento de niveles, etc.
- ^ a b c d e f g h i j k xautomation y xdotool se pueden usar para generar pulsaciones de teclas en el sistema X Window ; o se puede ejecutar un programa en un pseudoterminal para poder controlarlo (como con el esperar herramienta).
- ^ a b c d e f g h i El shell puede usar el utilidad stty para suprimir el eco de los caracteres escritos en la pantalla. Esto requiere varios pasos: 1. leer el estado actual del eco, 2. apagar el eco, 3. leer la entrada, 4. cambiar el estado del eco al estado original.
- ^ a b c d e f g h i j k l El permiso de ejecución es impuesto por un programa separado, el cargador de programas, negándose 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 invoca directamente como lo haría el cargador del programa, con el archivo como argumento; esto solo requiere permiso de lectura, al igual que la canalización del archivo como entrada al intérprete, en cuyo caso el intérprete no puede ver el permiso de ejecución.
- ^ a b En DR-DOS, el separador de contraseña 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 admiten listas de inclusión para poder 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 el punto y coma doble funciona tanto en COMMAND.COM como en 4DOS independientemente del comando ejecutado.
- ^ a b DR-DOS admite contraseñas de archivos para leer / escribir / eliminar y, opcionalmente, ejecutar permisos. Los archivos no están protegidos de forma predeterminada, pero el sistema se puede configurar para que los scripts de fe por lotes requieran una contraseña para leer.
- ^ a b INPUT / P y INKEY / P repite asteriscos por cada carácter escrito.
- ^ Read-Host -AsSecureString lee una cadena de caracteres del dispositivo de entrada en una cadena cifrada, un carácter a la vez, lo que garantiza que no haya una imagen de memoria del texto claro que pueda obtenerse de la memoria de escaneo, o de volcados de memoria, memoria volcados, archivos de paginación, archivos de registro o similares.
- ^ Archivos de secuencia de comandos de PowerShell ( .ps1 ) están asociados de forma predeterminada con el editor del Bloc de notas, no con el motor de ejecución de PowerShell. Invocar un El archivo .ps1 iniciará el Bloc de notas en lugar de ejecutar el script.
- ^ Los scripts de inicio por computadora / usuario pueden importar módulos y exponer un subconjunto de comandos / funciones disponibles en los módulos.
Referencias
- ^ Una versión independiente de la plataforma basada en el código fuente original histórico de UNIX V7 está disponible en Geoff Collyer
- ^ La histórica versión UNIX V7 está disponible bajo una licencia estilo BSD a través de Unix Heritage Society y otros.
- ^ Una versión independiente de la plataforma basada en el código fuente de SVr4 / Solaris está disponible en Jörg Schilling
- ^ Ferrell, John, "Capítulo 2. Shell predeterminado" , Guía de inicio rápido de FreeBSD para usuarios de Linux , Proyecto de documentación de FreeBSD , consultado el 24 de julio de 2015
- ^ "SchilliX-ON / SchilliX-ON Mercurial / [b1d9a2] / usr / src / cmd / sh" . Sourceforge.net . Consultado el 2 de julio de 2015 .
- ^ 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, edición 7 .
- ^ Como parte de IEEE Std.1003.2-1992 (POSIX.2); integrado en IEEE Std.1003.1 con la revisión de 2001.
- ^ Fox, Brian (7 de junio de 1989). Tower Jr., Leonard H. (ed.). "¡Bash está en versión beta!" . Grupo de noticias : gnu.announce . Usenet: [email protected] . Consultado el 28 de octubre de 2010 .
- ^ Cooper, Mendel, "Chapter 37.3.2. Bash, version 4.2", Advanced Bash-Scripting Guide , The Linux Documentation Project , consultado el 30 de abril de 2015, "Bash ahora admite el escape Unicode \ u y \ U".
- ^ Greer, Ken (3 de octubre de 1983). "C shell con comando y reconocimiento / finalización de nombre de archivo" . Grupo de noticias : net.sources . Consultado el 29 de diciembre de 2010 .
- ^ Sussman, Ann (26 de diciembre de 1988). "Hamilton C Shell acelera el desarrollo de aplicaciones OS / 2" (PDF) . Semana de la PC (1988-12-26 - 1989-01-02): 37 . Consultado el 22 de noviembre de 2010 .
- ^ Gomes, Ron (9 de junio de 1983). "Programa de conferencias de Toronto USENIX (provisional)" . Grupo de noticias : net.usenix . Consultado el 29 de diciembre de 2010 .
- ^ Harris, Guy (10 de octubre de 1983). "pregunta csh" . Grupo de noticias : net.flame . Consultado el 29 de diciembre de 2010 .
- Página de manual de ^ ksh93 (1)
- ^ a b El shell predeterminado en OpenBSD es ksh (pdksh).
- ^ El editor de línea de comandos zsh es completamente configurable y puede permitir el soporte del mouse de varias maneras, como con Stéphane Chazelas mouse.zsh .
- Página de manual y subpáginas de ^ zsh (1)
- ^ Página de manual de zshbuiltins (1)
- ^ "# 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 2 de julio de 2015 .
- ^ "Diccionario HP OpenVMS DCL" . Archivado desde el original el 25 de marzo de 2007 . Consultado el 23 de marzo de 2009 .
- ^ Larabel, Michael (23 de marzo de 2021). "Plan 9 Copyright transferido a la Fundación, código con licencia del MIT publicado" . Phoronix . Consultado el 28 de marzo de 2021 .
- ^ Liljencrantz, Axel (17 de mayo de 2005). "Fish - La concha interactiva amigable" . Consultado el 8 de abril de 2013 .
- ^ Sóller, Jeremy (15 de noviembre de 2015). "d79c8f511573fb7710abc63b4236a40022914520" . Consultado el 3 de agosto de 2019 .
- ^ "Sistema de finalización [Z Shell]" . Zsh.sourceforge.io . Consultado el 24 de febrero de 2015 .
- ^ por ejemplo, a través de un tercero, como zsh-autosuggestions
- ^ zsh no incluye resaltado de sintaxis, pero existe un proyecto de terceros que ofrece esta capacidad como complemento: zsh-syntax-highlighting
- ^ Paul, Matthias R. (2 de octubre de 1997) [29 de septiembre de 1997]. "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 4 de octubre de 2003 . Consultado el 29 de marzo de 2009 . [1]
- ^ a b c d e "Entorno de secuencias de comandos integrado (ISE) de Windows PowerShell" . Microsoft Technet . Consultado el 12 de septiembre de 2015 .
- ^ a b c d Shirk, Jason (15 de febrero de 2018). "PSReadLine: una implementación de readline inspirada en bash para PowerShell" , a través de GitHub.
- ^ "Copia archivada" . Archivado desde el original el 17 de septiembre de 2016 . Consultado el 8 de septiembre de 2016 .Mantenimiento de CS1: copia archivada como título ( enlace )
- ^ Push-Location (con alias
pushd
) y Pop-Location (con aliaspopd
) permiten que múltiples tipos de ubicación (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. - ^ Lafunción $ host.ui.PromptForChoice permite un mensaje de estilo de menú para las opciones. El indicador funciona desde trabajos en segundo plano, así como desde sesiones remotas, mostrando el indicador del menú en la consola de la sesión de control.
- ^ El El cmdlet Write-Progress escribe una barra de progreso que puede indicar el porcentaje, los 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 regular.
- ^ El 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 / conmutador
- ^ a b "pescado: Documentación" . Finalización de la pestaña de sección . Consultado el 10 de enero de 2016 .
- ^ "set_color - establece el color de la terminal - documentación de Fish-Shell 3.1.2" . fishshell.com . Consultado el 23 de febrero de 2021 .
- ^ "abbr - administrar abreviaturas de pescado - documentación de 3.1.2 de concha de pescado" . fishshell.com . Consultado el 23 de febrero de 2021 .
- ^ "zsh: 20. Sistema de finalización" . Zsh.sourceforge.io. 2013-03-06 . Consultado el 18 de agosto de 2013 .
- ^ "Utilice PowerShell para hacer parámetros obligatorios" . Blogs.technet.com . Consultado el 24 de febrero de 2015 .
- ^ DOS 386 concurrente - Sistema operativo multiusuario / multitarea - Guía del usuario (PDF) . Investigación digital .
- ^ "Reemplazo # 1 de la línea de comandos de Windows - Comandos del símbolo del sistema CMD de Windows" . JP Software . Consultado el 18 de agosto de 2013 .
- ^ a b "Entorno de secuencias de comandos integrado (ISE) de Windows PowerShell 3.0" . Technet.microsoft.com . Consultado el 18 de agosto de 2013 .
- ^ "Cambios y mejoras del modelo de scripting de PowerShell v3 ISE e ISE" . Revista PowerShell. 2011-09-28 . Consultado el 18 de agosto de 2013 .
- ^ "pv (1): supervisa el progreso de los datos a través de la tubería - página de manual de Linux" . Linux.die.net . Consultado el 24 de febrero de 2015 .
- ^ "zsh-users / zsh-syntax-highlighting: Resaltado de sintaxis similar a una concha de pescado para Zsh" . GitHub . Consultado el 18 de agosto de 2013 .
- ^ "Show-Command" . Technet.microsoft.com . Consultado el 18 de agosto de 2013 .
- ^ "Variantes de ceniza" . Archivado desde el original el 10 de marzo de 2010 . Consultado el 15 de diciembre de 2014 .
- ^ "Establecer - Variable de entorno - CMD de Windows" . SS64.com . Consultado el 24 de febrero de 2015 .
- ^ "¿Cómo recorrer la matriz por lotes?" . Desbordamiento de pila . Consultado el 24 de febrero de 2015 .
- ^ Laclase.NET System.Math define funciones matemáticas que se pueden utilizar a través del atajo [Matemáticas] , p. Ej. [Matemáticas] :: Sin para la función sinusal . [2]
- ^ "cadena - manipular cadenas - documentación de Fish-Shell 3.1.2" . fishshell.com . Consultado el 23 de febrero de 2021 .
- ^ Referencia del lenguaje de shell de Hamilton C: comodín y coincidencia de patrones , Hamilton Laboratories , consultado el 29 de octubre de 2013 ,
... Directorio indefinido: haga coincidir cualquier número de niveles de directorio, cero o más, lo que sea necesario para que el resto del patrón coincida.
- ^ a b Seebach, Peter (2008). Comienzo de la creación de secuencias de comandos en Shell portátil: de principiante a profesional . La voz del experto en código abierto. Presione. pag. 149. ISBN 9781430210436. Consultado el 17 de septiembre de 2014 .
La expansión de llaves está disponible en ksh93, pdksh, bash y zsh.
- ^ Zsh ofrece una variedad de opciones de globbing .
- ^ 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 .
- ^ "encuentre una manera de hacer que` psub --fifo` esté a salvo del punto muerto · Edición # 1040 · fish-shell / fish-shell " . GitHub .
- ^ "Acerca de las políticas de ejecución" . Technet.microsoft.com . Consultado el 24 de febrero de 2015 .
- ^ "Acerca de las secciones de datos" . Technet.microsoft.com . Consultado el 24 de febrero de 2015 .
- ^ "Página de manual de Ubuntu: rc - shell" . Manpages.ubuntu.com. 2003-07-17 . Consultado el 24 de febrero de 2015 .
- ^ Provos, Niels. "Cifrado de memoria virtual" . Centro para la Integración de Tecnologías de la Información, Universidad de Michigan . Consultado el 20 de diciembre de 2012 .
- ^ "bash - GNU Bourne-Again SHell" .
lee -s Modo silencioso. Si la entrada proviene de una terminal, los caracteres no se repiten.
- ^ "Uso del cmdlet Read-Host" .
Al agregar el parámetro -assecurestring, puede enmascarar los datos ingresados en el indicador
- ^ "Comando Linux / Unix: stty" . Linux.about.com . Consultado el 24 de febrero de 2015 .
- ^ Albing, Carl; Vossen, JP; Newham, Cameron (2007). "3.8. Solicitar una contraseña". Libro de cocina Bash (1ª ed.). Sebastopol, California: O'Reilly Media . pag. 65 . ISBN 978-0-596-52678-8.
Tenga en cuenta que si lee una contraseña en una variable de entorno, está en la memoria en texto plano y, por lo tanto, se puede acceder a ella a través de un volcado de memoria o / proc / core. También se encuentra en el entorno del proceso, al que pueden acceder otros procesos.
- ^ Holmes, Lee. "SecureStrings en PowerShell" . Consultado el 18 de diciembre de 2012 .
- ^ "PowerShell Security :: Windows OS Security :: Articles & Tutorials" . WindowSecurity.com . Consultado el 18 de agosto de 2013 .
- ^ "Firma de scripts de PowerShell" . Hanselman.com . Consultado el 24 de diciembre de 2015 .
- ^ "¡Hola, chico de scripting! ¿Cómo puedo firmar scripts de Windows PowerShell con una PKI de Windows empresarial? (Parte 2 de 2) - ¡Hola, chico de scripting! Blog - Inicio del sitio - Blogs de TechNet" . Blogs.technet.com . Consultado el 18 de agosto de 2013 .
- ^ "Ejecución de scripts de Windows PowerShell" . Technet.microsoft.com . Consultado el 18 de agosto de 2013 .
- ^ "man sh - shell, el intérprete de lenguaje de comandos estándar / posix" (en francés). Pwet.fr. Archivado desde el original el 21 de diciembre de 2014 . Consultado el 18 de agosto de 2013 .
- ^ "Manual de referencia de Bash: el caparazón restringido" . Gnu.org. 2010-12-28 . Consultado el 18 de agosto de 2013 .
- ^ "New-PSSessionConfigurationFile" . Technet.microsoft.com . Consultado el 18 de agosto de 2013 .
- ^ 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.
[...] difícilmente es lo que uno piensa como una lista pasiva de variables configuradas. Puede ejecutar otros comandos (por ejemplo, cat) y usar sentencias if para variar sus opciones. Incluso termina haciéndose eco de un mensaje. Tenga cuidado cuando obtenga algo, ya que es una puerta abierta de par en par a su guión.
- ^ "Acerca de las secciones de datos" . Microsoft . Consultado el 18 de diciembre de 2012 .
enlaces externos
- Revista Linux: Bash frente a Vista PowerShell
- IEEE. 1003.1 Estándar para tecnología de la información - Interfaz de sistema operativo portátil (POSIX): Shell y utilidades, Edición 7