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
Próxima revisiónAmbos lados, revisión siguiente
tcsh [2022/10/30 00:27] perontcsh [2023/02/26 03:41] peron
Línea 5: Línea 5:
 TCSh es casi enteramente retrocompatible con csh, de modo que cualquier conocimiento de C Shell resulta inmediatamente aplicable a tcsh. Pero tsch va más allá de csh, agregando capacidades como un editor de línea de comandos de propósito general, corrección de escritura, y completado programable de comandos, ficheros y nombre de usuarios. TCSh es casi enteramente retrocompatible con csh, de modo que cualquier conocimiento de C Shell resulta inmediatamente aplicable a tcsh. Pero tsch va más allá de csh, agregando capacidades como un editor de línea de comandos de propósito general, corrección de escritura, y completado programable de comandos, ficheros y nombre de usuarios.
  
-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.+
  
 ==== Historia ==== ==== Historia ====
Línea 15: Línea 15:
 >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 ''> ''.
  
-==== Funcionalidades ====+===== Funcionalidades ====
 +=== Configuración === 
 +TCSh se configura a nivel usuario a través del fichero ~/[[.tcshrc]]. 
 + 
 +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. 
 + 
 +=== Historial de comandos === 
 +El comando ''history'' incorporado en tcsh muestra los comandos ingresados previamente. Usa **Flecha arriba** y **Flecha abajo** para seleccionar un comando de la lista de comandos previamente introducidos ("stack"), luego edítalos y/o ejecútalos presionando la **tecla Intro**. 
 + 
 +| ''!!'' | Ejecuta el comando previo | 
 +| ''!n'' | Ejecuta el //n// previamente ejecutado | 
 +| ''!-n'' | Reejecuta el comando ejecutado //n// comandos anteriormente | 
 +| ''!cadena'' | ejecuta el comando más recientemente ejecutado que comienza con ''cadena''
 +| ''!?cadena'' | corre el comando más recientemente ejecutado que contiene ''cadena''
 + 
 +====Usar historial en comandos nuevos ==== 
 + 
 +| ''!*'' | Refiere a todos los argumentos del comando previo | 
 +| ''!$'' | Refiere al último argumento del comando anterior | 
 +| ''!^'' | Refiere al primer argumento del comando previo | 
 +| ''!:n'' | Refiere al //n// argumento del comando anterior | 
 +| ''!:m-n'' | Refiere a los argumentos desde //m// a //n// del comando previo | 
 +| ''!:n-$'' | Refiere los argumentos desde //n// hasta el último argumento provisto en el comando previo. | 
 + 
 +====Edición de línea de Comandos==== 
 + 
 +===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]]. 
 + 
 +===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 argumentos para 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. | 
 +| ''\!$'' | 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 | 
 +| ''\!^'' | Selector de Argumento para 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. | 
 +| ''\!:m-n'' | Selector de Argumento para 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//. | 
 +| ''<nowiki>\!:n*</nowiki>'' | Selector de Argumento para 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 comandos. He 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__. 
  
-Autocompleta con **Ctrl+d**.+> En este aspecto, ¡Bash es claramente superior a Tcsh!
  • tcsh.txt
  • Última modificación: 2024/02/22 16:55
  • por peron