tcsh

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anterior Revisión previa
Próxima revisión
Revisión previa
tcsh [2023/02/26 03:35] – [Edición de línea de Comandos] perontcsh [2024/02/22 16:55] (actual) – [Edición de línea de Comandos] peron
Línea 9: Línea 9:
 ==== Historia ==== ==== Historia ====
  
-En 1975 Ken Greer de la Universidad de Carnegie Mellon, modificó el C Shell original para incorporarle una funcionalidad de autocompletado de nombres de fichero similar a la del sistema operativo [[TENEX]], la cual estuvo completa (en su forma avanzada) en 1981. +En 1975 Ken Greer de la Universidad de Carnegie Mellon desarrolló una funcionalidad de autocompletado sensible al contexto de ficheros para el sistema operativo [[TENEX]]. Este le sirvió como inspiración para modificar el [[csh|C Shell]] original de [[BSD]], tarea que pudo completar (en su forma avanzada) en 1981.
  
-Mike Ellis de Fairchild incorporó el autocompletado de comandos en 1983.+Mike Ellis de Fairchild incorporó el autocompletado - ahora para los comandos en 1983.
  
 >tcsh permanece como shell del administrador en las distribuciones [[BSD]]. Su prompt tradicional es ''> ''. >tcsh permanece como shell del administrador en las distribuciones [[BSD]]. Su prompt tradicional es ''> ''.
Línea 21: Línea 21:
 Entre sus funciones contamos con historial de comandos, stack de directorios (para poder sortear entre los dos directorios recientes con ''cd -'', así como la implementación del tilde ''~'' para denotar el directorio de usuario. Entre sus funciones contamos con historial de comandos, stack de directorios (para poder sortear entre los dos directorios recientes con ''cd -'', así como la implementación del tilde ''~'' para denotar el directorio de usuario.
  
-Cuenta con control de trabajos incorporados. El comando incorporado ''where'' funciona como el comando ''which'' pero muestra todas las rutas del comando designado, en los directorios especificados en el ''$PATH'' en lugar del único que se utilizaría.+Cuenta con [[creacion_de_trabajos_en_texto-plano|control de trabajos incorporados]]. El comando incorporado ''where'' funciona como el comando ''which'' pero muestra todas las rutas del comando designado, en los directorios especificados en el ''$PATH'' en lugar del único que se utilizaría. 
 + 
 +__**Ver también**__: [[Diferencias entre tcsh y bash]]
  
 === Historial de comandos === === Historial de comandos ===
Línea 33: Línea 35:
  
 ====Usar historial en comandos nuevos ==== ====Usar historial en comandos nuevos ====
 +
 | ''!*'' | Refiere a todos los argumentos del comando previo | | ''!*'' | Refiere a todos los argumentos del comando previo |
 | ''!$'' | Refiere al último argumento del comando anterior | | ''!$'' | Refiere al último argumento del comando anterior |
 | ''!^'' | Refiere al primer argumento del comando previo | | ''!^'' | Refiere al primer argumento del comando previo |
 | ''!:n'' | Refiere al //n// argumento del comando anterior | | ''!:n'' | Refiere al //n// argumento del comando anterior |
-| ''!:m-n'' | Refiere a los argumentos de //m// a //n// del comando previo | +| ''!:m-n'' | Refiere a los argumentos desde //m// a //n// del comando previo | 
-| ''!:n-$'' | Refiere al argumento desde //n// hasta el último argumento provisto en el coamdno previo |+| ''!:n-$'' | Refiere los argumentos desde //n// hasta el último argumento provisto en el comando previo|
  
 ====Edición de línea de Comandos==== ====Edición de línea de Comandos====
 +
 ===Autocompletado=== ===Autocompletado===
 En la línea de comandos, activa el //autocompletado de nombres de ficheros o comandos// mediante **Tab** o más tradicionalmente, **Escape** o **Ctrl+d** para respetar el uso histórico en [[TENEX]]. En la línea de comandos, activa el //autocompletado de nombres de ficheros o comandos// mediante **Tab** o más tradicionalmente, **Escape** o **Ctrl+d** para respetar el uso histórico en [[TENEX]].
  
 ===Selector de Argumentos=== ===Selector de Argumentos===
 +
 Selector de Argumento de Alias: tcsh es el único intérprete de comando que define un alias para ofrecer argumentos a los comandos. Selector de Argumento de Alias: tcsh es el único intérprete de comando que define un alias para ofrecer argumentos a los comandos.
- +^ **Selector** ^ **Resultado** ^ 
-| ''\!#''Selector de argumentos para todos los argumentos, incluyendo el alias/comando en sí. No necesita indicar los argumentos. | +| ''\!#''Selecciona todos los argumentos, incluyendo el alias/comando en sí. No necesita indicar los argumentos. | 
-| ''\!*''Selector de argumentos para todos los argumentos, excluyendo el alias/comando; no necesita indicar los argumentos. | +| ''\!*''Selecciona todos los argumentos, excluyendo el alias/comando; no necesita indicar los argumentos. | 
-| ''\!$''Selector de Argumento para el último argumento; no necesita proveer argumentos, pero si no se indica ninguno, se considerará al nombre del alias como último argumento | +| ''\!$''Selecciona el último argumento; no necesita proveer argumentos, pero si no se indica ninguno, se considerará al nombre del alias como último argumento | 
-| ''\!^''Selector de Argumento para el primer argumento; __debe proveerse__ el argumento. | +| ''\!^''Selecciona el primer argumento; __debe proveerse__ el argumento. | 
-| ''\!:n''Selector de Argumento para el //n// argumento; __debe proveerse__ el argumento; ''n=0'' se refiere al nombre del alias/comando. | +| ''\!:n''Selecciona el //n// argumento; __debe proveerse__ el argumento; ''n=0'' se refiere al nombre del alias/comando. | 
-| ''\!:m-n''Selector de Argumento para los argumentos desde el //m// hasta el //n//; __debe proveer_ los argumentos. | +| ''\!:m-n''Selecciona los argumentos desde el //m// hasta el //n//; __debe proveer__ los argumentos. | 
-| ''\!:n-$''Selector de Argumento para los argumentos desde el //n// hasta el último; al menos debe proveerse un argumento //n//. | +| ''\!:n-$''Selecciona los argumentos desde el //n// hasta el último; al menos debe proveerse un argumento //n//. | 
-| ''\!:n*''Selector de Argumento para los argumentos desde el //n// hasta el último; no necesita indicar argumentos suficientes. | +| ''<nowiki>\!:n*</nowiki>''Selecciona los argumentos desde el //n// hasta el último. No necesita indicar suficientes argumentos. |
- +
-=====Diferencias entre Tcsh y Bash===== +
-=== Hola Mundo === +
-Sólo la primer línea es diferente a Bash. +
- +
-    #!/bin/tcsh -f +
-    echo "Hello World" +
- +
-===Variables=== +
-La sintaxis es diferente a Bash. Para configurar el valor de una variable, debemos utilizar la palabra reservada ''set ='': +
- +
-<code bash> +
-#!/bin/tcsh -f +
- +
-set NAME = "Tutoriales Texto-plano.xyz" +
-echo $NAME +
- +
-set launchdate = "Feb 25, 2023" +
-echo $launchdate +
-</code> +
- +
-En tcsh Todas las variables se comportan como variables globales.  +
- +
-Las variables de Ambiente pueden accederse directamente (e.g., ''$PATH'', ''$SHELL'', ''$HOME'', ''$LANG'', ''$PWD'', etcétera). +
- +
-===Comentarios=== +
-Los comentarios de una línea son similares a Bash. Tcsh __no soporta__ comentarios multilínea. +
- +
-===Citas=== +
-Su sintaxis es similar a la de bash. +
- +
-===Depurado=== +
-A diferencia de Bash, no se puede activar o desactivar el depurado dentro de un guión tcsh. En su lugar, podremos ejecutar un guión de tcsh en modo de trazado línea a línea, de la siguiente manera: +
- +
-<code bash> +
-tcsh -xv guion.csh +
-</code> +
- +
-===Códigos de salida=== +
-A diferencia de Bash, en tcsh al ejecutar guiones con trozos de código erróneo, el mismo detendrá su ejecución. Podrá observarse tal comportamiento coN: +
- +
-<code bash> +
-#!/bin/tcsh -f +
- +
-rm -f /tmp/fichero_prueba.txt +
-echo "hola" > /tmp/fichero_prueba.txt +
-ls -l /tmp/fichero_prueba.txt +
-chmod 0444 /tmp/fichero_prueba.txt +
-ls -l /tmp/fichero_prueba.txt +
-echo "hola" > /tmp/fichero_prueba.txt +
-echo "No puedo llegar a esta línea de código." +
-</code> +
- +
-===Argumentos de línea de comando=== +
-La sintaxis es diferente a bash. TCsh no tiene indicadores de arcumentos como los ''$@'' y ''$?'' de Bash. Los Argumentos de línea de comando pueden accederse con ''$argv[$i]'', donde ''$i'' es el rango entre el número de argumento de línea de comandos (denotado por ''$n'') y ''$n'' devuelve el número de argumentos de línea de comandosHe aquí un programa que almacena los argumentos de línea de comandos en una lista y luego los presenta: +
- +
-<code bash> +
-    #!/bin/tcsh -f +
- +
-    set num_args = $# +
-    set i = 1 +
-    set list = ( ) +
-    echo "Build the list from commandline arguments..." +
-    while ($i <= $num_args) +
-        @ i_minus_1 = $i - 1 +
-        set arg = $argv[$i] +
-        echo "\targ[$i_minus_1] = $arg" +
-        set list = ( $list $arg ) +
-        @ i = $i + 1 +
-    end +
-    echo "Now print the list..." +
-    foreach f ($list) +
-        echo "\t$f" +
-    end +
-</code> +
- +
-===Ficheros include=== +
-La sintaxis es la misma que en bash. +
- +
-===Comandos de ShellShell=== +
-Tcsh también utiliza diéresis para correr comandos de shell, de la misma forma que lo hace Bash. +
- +
-===Entradas del usuario=== +
-La sintaxis de TCSh es muy diferente a la de Bash. El siguiente código demuestra cómo leer una cadena del usuario empleando ''$<'': +
- +
-<code bash> +
-#!/bin/tcsh -f +
- +
-echo -n "Ingresa un número escogido al azar entre 1 y 10: " +
-set x = $< +
-if ($x < 1 || $x > 10) then +
-    echo "Entrada inválida: $x" +
-else +
-    echo "Ha ingresado: $x" +
-endif +
-</code> +
- +
-===Operaciones aritméticas=== +
-La sintaxis de TCSh es muy diferente a la de Bash. Para realizar operaciones ariméteicas comienza la línea con ''@''. Refiere al siguiente código para comprender cómo sumar y restar una cifra en una variable. +
- +
-===Comparación Numérica=== +
-Su sintaxis es similar a la de Bash, con la excepción de que no necesitamos dos pares de paréntesis ''(())''. Por favor refiera al ejemplo anterior para comparar ''$i'' y ''num_args''+
- +
-===Comparación de Cadenas=== +
-La sintaxis de Tcsh es similar a la de Bash. El código siguiente lee una cadena del usuario, revisa para var que no sea una cadena vacía. Si no lo es, realiza una comparación de patrón para observar si la cadena finaliza con ''.txt''+
- +
-<code bash> +
-#!/bin/tcsh -f +
- +
-echo -n "Ingresa un nombre de fichero: " +
-set name = $< +
-if ($name == "") then +
-    echo "Ingresó una cadena vacía?" +
-else +
-    if ($name =~ "*.txt") then +
-        echo "Nombre del fichero txt: $name" +
-    else +
-        echo "No es un fichero txt: $name" +
-    endif +
-endif +
-</code> +
- +
-===If-else=== +
-La sintaxis de Tcsh es diferente a la de Bash. Observe el ejemplo anterior para considerar la declaración anidada if-then-else. +
- +
-===bucle For=== +
-La sintaxis de Tcsh es diferente de la de Bash. En lugar de emplear ''for'', tcsh utiliza ''foreach''. Observe el ejemplo anterior para consultar el uso de ''foreach'' en una lista lista iterativa. +
- +
-===Bucle While=== +
-La sintaxis de Tcsh es ligeramente diferente a la de Bash. Por favor consulta el ejemplo anteior en búsqueda de un bucle ''while'' en tanto la condición sea verdadera. +
- +
-===Case=== +
-La sintaxis de Tcsh es diferente a la de Bash. El código a continuación leerá una cadena del usuario, revisará si iguala a uno de los casos provistos. +
- +
-<code bash> +
-#!/bin/tcsh -f +
- +
-echo -n "Ingrese un número al azar entre 1 y 10: " +
-set x = $< +
-switch ( $x ) +
-case "1", "3", "5", "7", "9": +
-    echo "Ha ingresado un número impar entre 1 y 10: $x" +
-    breaksw +
-case "2", "4", "6", "8", "10": +
-    echo "Ha ingresado un número par entre 1 y 10: $x" +
-    breaksw +
-default: +
-    echo "Ha ingresado: $x" +
-endsw +
-</code> +
- +
-===Funciones=== +
-A diferencia de Bash, __Tcsh no soporta función alguna__.  +
- +
-> En este aspecto, ¡Bash es claramente superior a Tcsh!+
  • tcsh.1677382546.txt.gz
  • Última modificación: 2023/02/26 03:35
  • por peron