Diferencia entre revisiones de «Terminal»

De Guía Ubuntu
Saltar a: navegación, buscar
m (Corregida una palabra en negrita)
 
(No se muestran 13 ediciones intermedias realizadas por 8 usuarios)
Línea 1: Línea 1:
{{INDdcha}}
+
{{INDdcha}}Como todos los sistemas operativos derivados de Unix, GNU/Linux dispone de un '''intérprete de órdenes''' o '''terminal''' (en inglés se utiliza la palabra ''shell'') que hace de interfaz entre el usuario y el propio sistema operativo y cuyo nombre es '''bash''' (acrónimo de '''''B'''ourne '''A'''gain '''SH'''ell'').
Como todos los sistemas operativos de tipo UNIX, LINUX dispone de un intérprete de órdenes o terminal (en inglés se utiliza la palabra ''shell'') que hace de interfaz entre el usuario y el propio sistema operativo y cuyo nombre es '''bash''' (acrónimo de '''''B'''ourne '''A'''gain '''SH'''ell'').
+
  
 
== Introducción ==
 
== Introducción ==
 +
 
Un terminal es una forma de acceder al sistema sin utilizar la interfaz gráfica, es decir, realizar todo tipo de tareas en formato texto. La forma de utilizar el sistema de este modo es mediante órdenes.
 
Un terminal es una forma de acceder al sistema sin utilizar la interfaz gráfica, es decir, realizar todo tipo de tareas en formato texto. La forma de utilizar el sistema de este modo es mediante órdenes.
  
El terminal muestra en pantalla un indicador de línea de órdenes (en inglés se utiliza la palabra ''prompt'') esperando que el usuario introduzca una orden. Este indicador finaliza generalmente por un caracter '''$''', cuando eres un usuario normal, o '''#''' cuando eres un súper usuario (administrador). El prompt se puede configurar al gusto ([http://mipagina.euskaltel.es/iosus/linux/Bash-Prompt-HOWTO-2.html#ss2.2 ver este artículo]) y en ubuntu muestra el siguiente aspecto:
+
El terminal muestra en pantalla un indicador de línea de órdenes (en inglés se utiliza la palabra ''prompt'' que literalmente traduciría "prontuario" pero se puede definir como ''ayuda visual'' o ''palabra que ayuda'') esperando que el usuario introduzca una orden. Este indicador finaliza generalmente por un caracter '''$''', cuando eres un usuario normal, o '''#''' cuando eres un súper usuario (administrador). El ''prompt'' se puede configurar al gusto ([http://mipagina.euskaltel.es/iosus/linux/Bash-Prompt-HOWTO-2.html#ss2.2 ver este artículo]) y en ubuntu muestra el siguiente aspecto:
 
  ''usuario''@''equipo'':''directorio actual''$  
 
  ''usuario''@''equipo'':''directorio actual''$  
  
 
{{Nota|El carácter '''~''' que usualmente verás al iniciar un terminal indica que estás en el directorio ''/home/usuario''. Es una especie de abreviatura.}}
 
{{Nota|El carácter '''~''' que usualmente verás al iniciar un terminal indica que estás en el directorio ''/home/usuario''. Es una especie de abreviatura.}}
  
Para acceder a un terminal se puede hacer de dos formas, una es con una aplicación como el terminal de gnome, xterm o konsole de kde, que son emuladores del terminal dentro de una interfaz visual. Otra forma es salirte del entorno visual y acceder a un entorno completamente en modo texto, algo así como entrar en sólo símbolo de sistema en Windows 98. Para esto último debes teclear '''control-alt-F1'''. Linux proporciona por defecto seis terminales de este tipo, de '''control-alt-F1''' a '''control-alt-F6'''. Si quieres volver al modo gráfico lo haces con '''control-alt-F7'''.
+
Para acceder a una terminal se puede hacer de dos formas, una es con una aplicación como el terminal de [[GNOME]], [[xterm]] o [[konsole]] de [[KDE]], que son emuladores de la terminal dentro de una interfaz visual. Otra forma es salirse del entorno gráfico y acceder a un entorno completamente en modo texto, algo así como entrar en sólo símbolo de sistema en [[w:es:Windows 98|Windows 98]]. Para esto último debemos teclear '''Control+Alt+F1'''. Linux proporciona por defecto seis terminales de este tipo, de '''Control+Alt+F1''' a '''Control+Alt+F6'''. Si queremos volver al modo gráfico lo hacemos con '''Alt+F7'''.
  
 
== Entrada, salida y error estándar ==
 
== Entrada, salida y error estándar ==
Como bien se explica en el artículo [[sistema de ficheros]], en Linux todo es un fichero. Cada vez que ejecutamos una orden, el sistema operativo le abre automáticamente tres interfaces (en los sistemas operativos tipo UNIX se utiliza el término fichero): la entrada estándar, la salida estándar y el error estándar.
 
*La entrada estándar (''stdin'') se refiere al fichero por el que una orden recibe su entrada (por defecto, es '''el teclado''').
 
*La salida estándar (''stdout'') se refiere al fichero por el que una orden presenta sus resultados (por defecto, es '''la pantalla''' o más concretamente la ventana en la que se está ejecutando el intérprete de órdenes).
 
*El error estándar (''stderr'') se refiere al fichero por el que una orden presenta los mensajes que va generando cuando ocurre un error (por defecto, también es '''la pantalla''').
 
  
Estos ficheros se crean en el directorio ''/dev''.
+
Como bien se explica en el artículo [[sistema de archivos]], en Linux todo es un archivo. Cada vez que ejecutamos una orden, el sistema operativo le abre automáticamente tres interfaces (en los sistemas operativos tipo UNIX se utiliza el término archivo): la entrada estándar, la salida estándar y el error estándar.
 +
* La entrada estándar (''stdin'') se refiere al archivo por el que una orden recibe su entrada (por defecto, es '''el teclado''').
 +
* La salida estándar (''stdout'') se refiere al archivo por el que una orden presenta sus resultados (por defecto, es '''la pantalla''' o más concretamente la ventana en la que se está ejecutando el intérprete de órdenes).
 +
* El error estándar (''stderr'') se refiere al archivo por el que una orden presenta los mensajes que va generando cuando ocurre un error (por defecto, también es '''la pantalla''').
 +
 
 +
Estos archivos se crean en el directorio ''/dev''.
 +
 
 
=== Redirección ===
 
=== Redirección ===
Antes de que se ejecute una orden, es posible redirigir cualquiera de sus ficheros de salida, es la '''redirección'''. Para llevarla a cabo es necesario utilizar los operadores de redirección que se procesan en el orden en el que aparecen:
+
 
 +
Antes de que se ejecute una orden, es posible redirigir cualquiera de sus archivos de salida, es la '''redirección'''. Para llevarla a cabo es necesario utilizar los operadores de redirección que se procesan en el orden en el que aparecen:
  
 
==== Redirección de la entrada estándar ====
 
==== Redirección de la entrada estándar ====
Línea 26: Línea 29:
  
 
==== Redirección de la salida estándar ====
 
==== Redirección de la salida estándar ====
La salida por defecto de cualquier orden dada en el bash es el monitor. Por ejemplo, si utilizas el comando cal, te mostrará un calendario en la pantalla. Sin embargo puedes hacer que te envíe esos datos a un documento de texto por ejemplo escribiendo lo siguiente:
+
La salida por defecto de cualquier orden dada en el bash es el monitor. Por ejemplo, si utilizas la orden cal, te mostrará un calendario en la pantalla. Sin embargo puedes hacer que te envíe esos datos a un documento de texto por ejemplo escribiendo lo siguiente:
 
+
 
  $ cal 2006 > mitexto.txt
 
  $ cal 2006 > mitexto.txt
  
vemos como se utiliza el operador ''' '>' ''' para establecer que la dirección de la salida será un fichero de texto llamado mitexto.txt, si el fichero no existe se crea, y si existe se vacía antes de hacer la redirección. Para que al redireccionar no borre el contenido de un archivo que ya existe, es decir, que se agregue el calendario al final del archivo, se debe utilizar el operador ''' '>>' '''.
+
vemos como se utiliza el operador ''' '>' ''' para establecer que la dirección de la salida será un archivo de texto llamado mitexto.txt, si el archivo no existe se crea, y si existe se vacía antes de hacer la redirección. Para que al redireccionar no borre el contenido de un archivo que ya existe, es decir, que se agregue el calendario al final del archivo, se debe utilizar el operador ''' '>>' '''.
  
 
==== Redirección del error estándar ====
 
==== Redirección del error estándar ====
Línea 37: Línea 39:
 
Por ejemplo, si introduces en el terminal:
 
Por ejemplo, si introduces en el terminal:
 
  $ sadfasgdgfadfgsd
 
  $ sadfasgdgfadfgsd
Te mostrará un error por pantalla ya que el comando no existe. Si redireccionamos el error estándar a un archivo:
+
Te mostrará un error por pantalla ya que la orden no existe. Si redireccionamos el error estándar a un archivo:
 
  $ sadfasgdgfadfgsd 2> error.txt
 
  $ sadfasgdgfadfgsd 2> error.txt
 
El error ahora no se muestra por pantalla, como si nada pasara; se guarda en el archivo ''error.txt''.
 
El error ahora no se muestra por pantalla, como si nada pasara; se guarda en el archivo ''error.txt''.
  
 
== Los comodines ==
 
== Los comodines ==
 +
 
Los comodines son unos caracteres especiales que pueden sustituir a nombres y a partes de nombres de los '''archivos y/o directorios'''. Esto facilita especificar múltiples nombres como argumentos de una orden.  
 
Los comodines son unos caracteres especiales que pueden sustituir a nombres y a partes de nombres de los '''archivos y/o directorios'''. Esto facilita especificar múltiples nombres como argumentos de una orden.  
*''' '*' ''': sustituye cualquier secuencia de caracteres.
+
* ''' '*' ''': sustituye cualquier secuencia de caracteres.
*''' '?' ''': sustituye un único caracter.
+
* ''' '?' ''': sustituye un único caracter.
  
 
== Variables ==
 
== Variables ==
 +
 
Como en cualquier lenguaje de programación, se pueden utilizar variables en las órdenes. No hay ninguna necesidad de declarar la variable. Ésta se crea automáticamente al asignarle cualquier valor. Por ejemplo:
 
Como en cualquier lenguaje de programación, se pueden utilizar variables en las órdenes. No hay ninguna necesidad de declarar la variable. Ésta se crea automáticamente al asignarle cualquier valor. Por ejemplo:
 
  $ Ejemplo="Esto es un ejemplo" ; echo $Ejemplo
 
  $ Ejemplo="Esto es un ejemplo" ; echo $Ejemplo
Línea 52: Línea 56:
  
 
Hay que tener en cuenta que:
 
Hay que tener en cuenta que:
*No debe aparecer ningún espacio entre el nombre de la variable, la asignación ('''=''') y la cadena.
+
* No debe aparecer ningún espacio entre el nombre de la variable, la asignación ('''=''') y la cadena.
*La referencia a cualquier variable se hace poniendo el símbolo ''' '$' ''' delante de su nombre.
+
* La referencia a cualquier variable se hace poniendo el símbolo ''' '$' ''' delante de su nombre.
  
 
{{Nota|Como se puede observar para poder asignar la cadena a la variable '''Ejemplo''' hemos tenido que utilizar las dobles comillas. Si no lo hubiésemos hecho (escribiendo '''$ Ejemplo<nowiki>=</nowiki>Esto es un ejemplo''') habríamos obtenido un error ya que el intérprete de órdenes sólo habría asignado ''Esto'' a '''Ejemplo''' y habría intentado ejecutar la palabra ''es'' como una orden.}}
 
{{Nota|Como se puede observar para poder asignar la cadena a la variable '''Ejemplo''' hemos tenido que utilizar las dobles comillas. Si no lo hubiésemos hecho (escribiendo '''$ Ejemplo<nowiki>=</nowiki>Esto es un ejemplo''') habríamos obtenido un error ya que el intérprete de órdenes sólo habría asignado ''Esto'' a '''Ejemplo''' y habría intentado ejecutar la palabra ''es'' como una orden.}}
Línea 59: Línea 63:
 
Existen varios tipos de entrecomillados:
 
Existen varios tipos de entrecomillados:
  
*Las dobles comillas se utilizan normalmente para las cadenas pero hay que destacar que el caracter especial ‘$’ es interpretado entre las dobles comillas cuando viene seguido de un nombre de variable, dando lugar a la sustitución de la variable por su valor:
+
* Las dobles comillas se utilizan normalmente para las cadenas pero hay que destacar que el caracter especial ‘$’ es interpretado entre las dobles comillas cuando viene seguido de un nombre de variable, dando lugar a la sustitución de la variable por su valor:
 
  $ var=5 ; echo "Aparece el valor $var"
 
  $ var=5 ; echo "Aparece el valor $var"
  
*Entre las comillas simples, no es interpretado ningún caracter especial y se escribe tal cual lo que hay entre ellas:
+
* Entre las comillas simples, no es interpretado ningún caracter especial y se escribe tal cual lo que hay entre ellas:
 
  $ var=5 ; echo 'No aparece el valor $var'
 
  $ var=5 ; echo 'No aparece el valor $var'
  
*Podríamos obtener el mismo resultado utilizando doble comillas si ponemos delante del caracter especial ‘$’ el caracter de escape ‘\’.
+
* Podríamos obtener el mismo resultado utilizando doble comillas si ponemos delante del caracter especial ‘$’ el caracter de escape ‘\’.
 
  $ var=5 ; echo "No aparece el valor \$var"
 
  $ var=5 ; echo "No aparece el valor \$var"
  
*Las comillas simples inversas hacen que se ejecute la orden que contienen, asignando el resultado de la ejecución a la variable:
+
* Las comillas simples inversas hacen que se ejecute la orden que contienen, asignando el resultado de la ejecución a la variable:
 
  $ var=`date` ; echo "Hoy es $var"
 
  $ var=`date` ; echo "Hoy es $var"
  
 
=== Variables de entorno ===
 
=== Variables de entorno ===
 +
 
Existen variables asignadas por el sistema operativo desde que se inicia una sesión hasta que la cerramos. Estas variables pueden ser utilizadas desde cualquier terminal.
 
Existen variables asignadas por el sistema operativo desde que se inicia una sesión hasta que la cerramos. Estas variables pueden ser utilizadas desde cualquier terminal.
  
Línea 77: Línea 82:
 
  $ env
 
  $ env
 
Éstas son algunas de las variables que más se usan:
 
Éstas son algunas de las variables que más se usan:
*'''HOME''': ruta de nuestro directorio personal.
+
* '''HOME''': ruta de nuestro directorio personal.
*'''USER''': nombre de usuario asignado.
+
* '''USER''': nombre de usuario asignado.
*'''SHELL''': ruta al intérprete de órdenes que se ejecuta por defecto.
+
* '''SHELL''': ruta al intérprete de órdenes que se ejecuta por defecto.
*'''HOSTNAME''': nombre asignado al equipo.
+
* '''HOSTNAME''': nombre asignado al equipo.
*'''PATH''': rutas en las que el intérprete busca las órdenes a ejecutar cuando no especificamos donde están.
+
* '''PATH''': rutas en las que el intérprete busca las órdenes a ejecutar cuando no especificamos donde están.
  
 
== Órdenes ==
 
== Órdenes ==
 +
 
En una orden simple, la primera palabra especifica la orden a ser ejecutada y las palabras restantes se pasan como opciones y argumentos de la orden:
 
En una orden simple, la primera palabra especifica la orden a ser ejecutada y las palabras restantes se pasan como opciones y argumentos de la orden:
  '''orden [''' opciones '''] [''' argumentos ''']'''
+
  $ '''orden [''' opciones '''] [''' argumentos ''']'''
  
 
{{Advertencia|Tanto para archivos, ficheros, órdenes y opciones de órdenes, las '''mayúsculas son determinantes'''.}}
 
{{Advertencia|Tanto para archivos, ficheros, órdenes y opciones de órdenes, las '''mayúsculas son determinantes'''.}}
Línea 99: Línea 105:
 
Si bien todas las órdenes y programas disponen de una breve ayuda y/o descripción cuando se le pasa como opción '''-h''' o '''--help'''.
 
Si bien todas las órdenes y programas disponen de una breve ayuda y/o descripción cuando se le pasa como opción '''-h''' o '''--help'''.
  
{{Consejo|En general; ''si no se ha trabajado mucho con una orden, es muy conveniente leer la página del manual antes de ejecutarla''.}}
+
{{consejo|En general; ''si no se ha trabajado mucho con una orden, es muy conveniente leer la página del manual antes de ejecutarla''.}}
  
 
=== Navegación e interacción con ficheros ===
 
=== Navegación e interacción con ficheros ===
*'''C'''ambiar de '''d'''irectorio:
 
$ cd [opciones] [ruta]
 
  
*'''L'''i'''s'''tar el contenido de directorios:
+
* Cambiar el directorio de trabajo ('''c'''hange '''d'''irectory):
  $ ls [opciones] [ficheros]
+
  $ cd <opciones> <ruta>
  
*Crear un directorio:
+
* Listar el contenido de directorios ('''l'''i'''s'''t):
  $ mkdir [opciones] [nombre del directorio]
+
  $ ls <opciones> <ficheros>
  
*Borrar un directorio:
+
* Crear un directorio ('''m'''a'''k'''e '''dir'''ectory):
  $ rmdir [opciones] [nombre del directorio]
+
  $ mkdir <opciones> <nombre del directorio>
  
*'''C'''o'''p'''iar un archivo o directorio a en el directorio especificado por la ruta:
+
* Borrar un directorio ('''r'''e'''m'''ove '''dir'''ectory):
  $ cp [opciones] [archivo] [ruta]
+
  $ rmdir <opciones> <nombre del directorio>
  
*'''M'''o'''v'''er un archivo o directorio a un archivo o directorio. Se utiliza también para renombrar; el origen y destino es un archivo:
+
* Copiar un archivo o directorio en el directorio especificado ('''c'''o'''p'''y):
  $ mv [opciones] [archivo] [ruta]
+
  $ cp <opciones> <archivo> <ruta>
  
*Borrar archivos o directorios:
+
* '''M'''o'''v'''er un archivo o directorio a un archivo o directorio. Se utiliza también para renombrar; el origen y destino es un archivo ('''m'''o'''v'''e):
$ rm [opciones] [archivo]
+
$ mv <opciones> <archivo> <ruta>
:Si un directorio no está vacío no es posible borrarlo con la orden '''rmdir'''. La orden '''rm''' nos lo permite con la opción '''–R''' borrando el contenido del directorio especificado y todos sus subdirectorios de forma recursiva (ver su página del '''man'''ual).
+
  
{{Advertencia|Hay que tener mucho cuidado con la orden:
+
* Borrar archivos o directorios ('''r'''e'''m'''ove):
  $ rm -R [directorio]
+
$ rm <opciones> <archivo>
 +
:Si un directorio no está vacío no es posible borrarlo con la orden '''rmdir'''. La orden '''rm''' nos lo permite con la opción '''–R''' borrando el contenido del directorio especificado y todos sus subdirectorios de forma recursiva (ver su página del '''manual''').
 +
 
 +
{{advertencia|Hay que tener mucho cuidado con la orden:
 +
  $ rm -R <directorio>
 +
Ya que borra todos los archivos y directorios dentro del directorio a borrar.
 
}}
 
}}
 
   
 
   
*Mostrar por pantalla el contenido de los archivos por la [[El Terminal#Entrada, salida y error estándar|salida estándar]]. Si no se especifica ningún archivo, la orden repite todo lo que se ha escrito por la [[El Terminal#Entrada, salida y error estándar|entrada estándar]]. Para indicar que se ha acabado de escribir hay que pulsar '''CTRL+D'''.
+
* Mostrar por pantalla el contenido de los archivos por la [[El Terminal#Entrada, salida y error estándar|salida estándar]]. Si no se especifica ningún archivo, la orden repite todo lo que se ha escrito por la [[El Terminal#Entrada, salida y error estándar|entrada estándar]]. Para indicar que se ha acabado de escribir hay que pulsar '''CTRL+D'''.
  $ cat [opciones] [archivos]
+
  $ cat &lt;opciones&gt; &lt;archivos&gt;
  
*Buscar archivos recorriendo árboles de directorios especificados por las rutas, evaluando de izquierda a derecha las condiciones de búsqueda. Además se
+
* Buscar archivos recorriendo árboles de directorios especificados por las rutas, evaluando de izquierda a derecha las condiciones de búsqueda. Además se
 
pueden especificar acciones sobre los resultados obtenidos:
 
pueden especificar acciones sobre los resultados obtenidos:
  $ find [ruta(s)] [condición(es) de búsqueda] [acciones]
+
  $ find &lt;ruta(s)&gt; &lt;condición(es) de búsqueda&gt; &lt;acciones&gt;
  
*Mostrar el nombre del directorio en el que uno se encuentra situado. Se dice que ese directorio es el ''directorio de trabajo'':
+
* Mostrar el nombre del directorio en el que uno se encuentra situado ('''p'''rint '''w'''orking '''d'''irectory). Se dice que ese directorio es el ''directorio de trabajo'':
  $ pwd [opciones]
+
  $ pwd &lt;opciones&gt;
  
*[[Sistema de ficheros#Los permisos|Cambiar los permisos de un archivo o fichero]].
+
* [[Sistema de ficheros#Los permisos|Cambiar los permisos de un archivo]].
  
 
=== Estructuras de control de flujo ===
 
=== Estructuras de control de flujo ===
  
 
=== Listas de órdenes ===
 
=== Listas de órdenes ===
{| border=1 style="float:right; margin:0 0 1em 1em"
+
 
|+Tabla de comandos
+
Una lista de órdenes es una secuencia de una o más [[El Terminal#Tuberías|tuberías]] separadas por uno de los operadores ‘;’, ‘&’, ‘&&’ o ‘||y terminada opcionalmente por ‘;’, ‘&’ o (nueva línea).
!Comando!! Descripción !! Ejemplos y comentarios
+
|-----------------
+
|mc ||Explorador de archivos que incluye su propio editor, mcedit. Es necesario instalarlo (desde Synaptic o apt-get) || sudo mc
+
|-----------------
+
|cd nom_directorio||Cambia de directorio || cd sólo va a tu home
+
|-----------------
+
|cd ..||Sube un nivel de directorios|| Si estabas en /home/pepe/ pasas a /home/
+
|-----------------
+
|cd - || Vas a la ubicación donde estabas antes|| si desde /home/pepe haces cd /etc/X11 y luego cd - vuelves a /home/pepe
+
|-----------------
+
|cp fichero fichero2 || Copia fichero como fichero2 (nuevo nombre) manteniendo el original
+
|-----------------
+
|cp fichero /directorio|| Copia fichero en directorio manteniendo nombre y el original
+
|-----------------
+
|mv fichero fichero2|| Renombra fichero en fichero2
+
|-----------------
+
|mv fichero /directorio|| Mueve fichero dentro de directorio
+
|-----------------
+
|mkdir nom_directorio || Crea directorio nom_directorio
+
|-----------------
+
|rmdir nom_directorio|| Borra directorio nom_directorio
+
|-----------------
+
|kill -9 PIDnumber|| Mata el proceso numberPID que queramos (finaliza su ejecución)|| kill -HUP numberPID Hace lo mismo
+
|-----------------
+
|Kill -STOP numberPID || Para hasta nueva orden el proceso numberPID
+
|-----------------
+
|Kill -CONT NumberPID || Continúa el proceso numberPID parado anteriormente
+
|-----------------
+
|killall processname|| Mata el proceso con ese nombre.
+
|-----------------
+
|ls || Lista ficheros
+
|-----------------
+
|ls -l|| Lista también las propiedades y atributos
+
|-----------------
+
|ls -la|| Lista ficheros incluidos los ocultos de sistema
+
|-----------------
+
|cat fichero|| Muestra el contenido de un fichero
+
|-----------------
+
|less fichero|| Muestra el contenido de un fichero de forma paginada
+
|-----------------
+
|more fichero|| Muestra el contenido de un fichero de forma paginada
+
|-----------------
+
|zcat fichero || Muestra el contenido de un fichero comprimido (.gz)
+
|-----------------
+
|zmore fichero || Muestra el contenido de un fichero comprimido (.gz)
+
|-----------------
+
|zless fichero || Muestra el contenido de un fichero comprimido (.gz)
+
|-----------------
+
|echo cadena || echo nos muestra en pantalla, el texto que le siga
+
|-----------------
+
|grep 'cadena' archivo|| Muestra las líneas del archivo que contienen la cadena
+
|-----------------
+
|file fichero|| Muestra de qué tipo es un fichero
+
|-----------------
+
|tail archivo|| Muestra las últimas líneas de un archivo, 10 por defecto
+
|-----------------
+
|tail -fn 200 archivo|| Muestra las últimas 200 líneas de un archivo y sigue agregando mientras crece
+
|-----------------
+
|head -nº fichero|| Muestra las primeras (número) líneas de un fichero
+
|-----------------
+
|find /usr -name lilo -print|| Busca todos los ficheros con nombre lilo en /usr
+
|-----------------
+
|find /home/paco -name *.jpg -print|| Busca todas las imágenes .jpg  en /home/paco
+
|-----------------
+
|whereis ejecutable|| Busca ejecutables(ejemplo: whereis find)
+
|-----------------
+
|type comando|| Muestra la ubicación del comando indicado
+
|-----------------
+
|pwd|| Visualiza el directorio actual
+
|-----------------
+
|history|| Muestra el listado de comandos usados por el usuario (~/.bash_history)
+
|-----------------
+
|ps aux|| Lista de los programas que se están ejecutando actualmente con su PID (Process IDentifier)
+
|-----------------
+
|df|| Muestra el espacio libre del disco
+
|-----------------
+
|top|| Muestra los procesos que más CPU consumen en tiempo real, así como la memória RAM y swap usada, entre otra información.
+
|-----------------
+
|rm fichero|| Borra fichero
+
|-----------------
+
|rm -rf directory|| Borra el directorio con todo lo que tenga dentro sin preguntar.
+
|-----------------
+
|halt|| Apaga el equipo|| También con: shutdown -h now
+
|-----------------
+
|reboot || Reinicia el equipo|| Lo mismo que shutdown -r now
+
|-----------------
+
|passwd || Cambias de password
+
|-----------------
+
|ps -ef l grep nombre_proceso|| Lista los proccesos que se estén ejecutando con que contengan la cadena nombre_proceso|| El comando ps -ef es redireccionado por medio de una pipe (Alt Gr+ 1) y fitrado con grep por la palabra que le sigue a grep
+
|-----------------
+
|}
+
  
 
=== Archivos de órdenes o ''scripts'' ===
 
=== Archivos de órdenes o ''scripts'' ===
  
 
== Tuberías ==
 
== Tuberías ==
 +
 
Una tubería es una secuencia de una o más órdenes separadas por el carácter '<nowiki>|</nowiki>'. En este caso la [[El Terminal#Entrada, salida y error estándar|salida estándar]] de una orden se conecta con la [[El Terminal#Entrada, salida y error estándar|entrada estándar]] de la siguiente orden, por eso el nombre de tubería.
 
Una tubería es una secuencia de una o más órdenes separadas por el carácter '<nowiki>|</nowiki>'. En este caso la [[El Terminal#Entrada, salida y error estándar|salida estándar]] de una orden se conecta con la [[El Terminal#Entrada, salida y error estándar|entrada estándar]] de la siguiente orden, por eso el nombre de tubería.
  
 
El intérprete de órdenes espera a que todas las órdenes de la tubería terminen antes de presentar un resultado por la [[El Terminal#Entrada, salida y error estándar|salida estándar]]. El estado de salida de una tubería corresponde al estado de salida de la última orden.
 
El intérprete de órdenes espera a que todas las órdenes de la tubería terminen antes de presentar un resultado por la [[El Terminal#Entrada, salida y error estándar|salida estándar]]. El estado de salida de una tubería corresponde al estado de salida de la última orden.
Asociado a las tuberías se suelen utilizar una serie de órdenes que se utilizan como filtros (por ejemplo la orden ''grep'').
+
Asociado a las tuberías se suelen utilizar una serie de órdenes que se utilizan como filtros (por ejemplo la orden ''grep''). Ej, mostrará sólo los ficheros que no sean directorios:
 +
$ ls -l | grep "^-"
  
 
== Ver también ==
 
== Ver también ==
*[[Sistema de ficheros]]
 
*[[Elinks]]
 
*[[Vim]]
 
  
{{esbozo}}
+
* [[Sistema de ficheros]]
 +
* [[Listado de órdenes]]
 +
* [[Links]]
 +
* [[Vim]]
  
 
[[Categoría:Conoce tu sistema]]
 
[[Categoría:Conoce tu sistema]]

Última revisión de 10:27 4 abr 2012

Como todos los sistemas operativos derivados de Unix, GNU/Linux dispone de un intérprete de órdenes o terminal (en inglés se utiliza la palabra shell) que hace de interfaz entre el usuario y el propio sistema operativo y cuyo nombre es bash (acrónimo de Bourne Again SHell).

Introducción

Un terminal es una forma de acceder al sistema sin utilizar la interfaz gráfica, es decir, realizar todo tipo de tareas en formato texto. La forma de utilizar el sistema de este modo es mediante órdenes.

El terminal muestra en pantalla un indicador de línea de órdenes (en inglés se utiliza la palabra prompt que literalmente traduciría "prontuario" pero se puede definir como ayuda visual o palabra que ayuda) esperando que el usuario introduzca una orden. Este indicador finaliza generalmente por un caracter $, cuando eres un usuario normal, o # cuando eres un súper usuario (administrador). El prompt se puede configurar al gusto (ver este artículo) y en ubuntu muestra el siguiente aspecto:

usuario@equipo:directorio actual$ 
Nota clasica.png El carácter ~ que usualmente verás al iniciar un terminal indica que estás en el directorio /home/usuario. Es una especie de abreviatura.

Para acceder a una terminal se puede hacer de dos formas, una es con una aplicación como el terminal de GNOME, xterm o konsole de KDE, que son emuladores de la terminal dentro de una interfaz visual. Otra forma es salirse del entorno gráfico y acceder a un entorno completamente en modo texto, algo así como entrar en sólo símbolo de sistema en Windows 98. Para esto último debemos teclear Control+Alt+F1. Linux proporciona por defecto seis terminales de este tipo, de Control+Alt+F1 a Control+Alt+F6. Si queremos volver al modo gráfico lo hacemos con Alt+F7.

Entrada, salida y error estándar

Como bien se explica en el artículo sistema de archivos, en Linux todo es un archivo. Cada vez que ejecutamos una orden, el sistema operativo le abre automáticamente tres interfaces (en los sistemas operativos tipo UNIX se utiliza el término archivo): la entrada estándar, la salida estándar y el error estándar.

  • La entrada estándar (stdin) se refiere al archivo por el que una orden recibe su entrada (por defecto, es el teclado).
  • La salida estándar (stdout) se refiere al archivo por el que una orden presenta sus resultados (por defecto, es la pantalla o más concretamente la ventana en la que se está ejecutando el intérprete de órdenes).
  • El error estándar (stderr) se refiere al archivo por el que una orden presenta los mensajes que va generando cuando ocurre un error (por defecto, también es la pantalla).

Estos archivos se crean en el directorio /dev.

Redirección

Antes de que se ejecute una orden, es posible redirigir cualquiera de sus archivos de salida, es la redirección. Para llevarla a cabo es necesario utilizar los operadores de redirección que se procesan en el orden en el que aparecen:

Redirección de la entrada estándar

Cuando se quiere redirigir la entrada estándar de una orden a un archivo, es necesario utilizar el operador de redirección '<' seguido del nombre del archivo. En este caso, una orden lee los datos de entrada que necesita desde el archivo señalado, en vez de desde el teclado.

Redirección de la salida estándar

La salida por defecto de cualquier orden dada en el bash es el monitor. Por ejemplo, si utilizas la orden cal, te mostrará un calendario en la pantalla. Sin embargo puedes hacer que te envíe esos datos a un documento de texto por ejemplo escribiendo lo siguiente:

$ cal 2006 > mitexto.txt

vemos como se utiliza el operador '>' para establecer que la dirección de la salida será un archivo de texto llamado mitexto.txt, si el archivo no existe se crea, y si existe se vacía antes de hacer la redirección. Para que al redireccionar no borre el contenido de un archivo que ya existe, es decir, que se agregue el calendario al final del archivo, se debe utilizar el operador '>>' .

Redirección del error estándar

Cuando se quiere redirigir el error estándar de una orden a un archivo, es necesario utilizar el operador de redirección '2>' seguido del nombre del archivo. Como en la salida estándar, en el caso de no existir el archivo se crea, y en el caso de existir, el archivo se vacía antes de hacer la redirección. En el caso de que se quiera añadir el error estándar de una orden sin borrar el contenido de un archivo que ya existe, el operador de redirección a utilizar debe ser '2>>' .

Por ejemplo, si introduces en el terminal:

$ sadfasgdgfadfgsd

Te mostrará un error por pantalla ya que la orden no existe. Si redireccionamos el error estándar a un archivo:

$ sadfasgdgfadfgsd 2> error.txt

El error ahora no se muestra por pantalla, como si nada pasara; se guarda en el archivo error.txt.

Los comodines

Los comodines son unos caracteres especiales que pueden sustituir a nombres y a partes de nombres de los archivos y/o directorios. Esto facilita especificar múltiples nombres como argumentos de una orden.

  • '*' : sustituye cualquier secuencia de caracteres.
  • '?' : sustituye un único caracter.

Variables

Como en cualquier lenguaje de programación, se pueden utilizar variables en las órdenes. No hay ninguna necesidad de declarar la variable. Ésta se crea automáticamente al asignarle cualquier valor. Por ejemplo:

$ Ejemplo="Esto es un ejemplo" ; echo $Ejemplo

El caracter ';' se explica más adelante. El comando echo muestra por la salida estándar cadenas de texto separándolas con un espacio.

Hay que tener en cuenta que:

  • No debe aparecer ningún espacio entre el nombre de la variable, la asignación (=) y la cadena.
  • La referencia a cualquier variable se hace poniendo el símbolo '$' delante de su nombre.
Nota clasica.png Como se puede observar para poder asignar la cadena a la variable Ejemplo hemos tenido que utilizar las dobles comillas. Si no lo hubiésemos hecho (escribiendo $ Ejemplo=Esto es un ejemplo) habríamos obtenido un error ya que el intérprete de órdenes sólo habría asignado Esto a Ejemplo y habría intentado ejecutar la palabra es como una orden.

Existen varios tipos de entrecomillados:

  • Las dobles comillas se utilizan normalmente para las cadenas pero hay que destacar que el caracter especial ‘$’ es interpretado entre las dobles comillas cuando viene seguido de un nombre de variable, dando lugar a la sustitución de la variable por su valor:
$ var=5 ; echo "Aparece el valor $var"
  • Entre las comillas simples, no es interpretado ningún caracter especial y se escribe tal cual lo que hay entre ellas:
$ var=5 ; echo 'No aparece el valor $var'
  • Podríamos obtener el mismo resultado utilizando doble comillas si ponemos delante del caracter especial ‘$’ el caracter de escape ‘\’.
$ var=5 ; echo "No aparece el valor \$var"
  • Las comillas simples inversas hacen que se ejecute la orden que contienen, asignando el resultado de la ejecución a la variable:
$ var=`date` ; echo "Hoy es $var"

Variables de entorno

Existen variables asignadas por el sistema operativo desde que se inicia una sesión hasta que la cerramos. Estas variables pueden ser utilizadas desde cualquier terminal.

Para ver las todas las variables de entorno definidas, se utiliza la orden env sin argumentos:

$ env

Éstas son algunas de las variables que más se usan:

  • HOME: ruta de nuestro directorio personal.
  • USER: nombre de usuario asignado.
  • SHELL: ruta al intérprete de órdenes que se ejecuta por defecto.
  • HOSTNAME: nombre asignado al equipo.
  • PATH: rutas en las que el intérprete busca las órdenes a ejecutar cuando no especificamos donde están.

Órdenes

En una orden simple, la primera palabra especifica la orden a ser ejecutada y las palabras restantes se pasan como opciones y argumentos de la orden:

$ orden [ opciones ] [ argumentos ]
Nota advertencia.png Tanto para archivos, ficheros, órdenes y opciones de órdenes, las mayúsculas son determinantes.

Las órdenes simples devuelven un valor que representa su estado de salida. Si no ha habido ningún error el valor devuelto es un 0, en caso contrario devolverá un valor distinto de 0. Podemos ver en todo momento cual es el valor devuelto poniendo la orden:

$ echo $?

Es decir, se almacena en la variable ?.

La mayoría de las órdenes disponen de una ayuda en forma de manual. Para acceder a este tipo de ayuda basta con introducir en el terminal:

$ man orden

Si bien todas las órdenes y programas disponen de una breve ayuda y/o descripción cuando se le pasa como opción -h o --help.

Nota idea.png En general; si no se ha trabajado mucho con una orden, es muy conveniente leer la página del manual antes de ejecutarla.

Navegación e interacción con ficheros

  • Cambiar el directorio de trabajo (change directory):
$ cd <opciones> <ruta>
  • Listar el contenido de directorios (list):
$ ls <opciones> <ficheros>
  • Crear un directorio (make directory):
$ mkdir <opciones> <nombre del directorio>
  • Borrar un directorio (remove directory):
$ rmdir <opciones> <nombre del directorio>
  • Copiar un archivo o directorio en el directorio especificado (copy):
$ cp <opciones> <archivo> <ruta>
  • Mover un archivo o directorio a un archivo o directorio. Se utiliza también para renombrar; el origen y destino es un archivo (move):
$ mv <opciones> <archivo> <ruta>
  • Borrar archivos o directorios (remove):
$ rm <opciones> <archivo>
Si un directorio no está vacío no es posible borrarlo con la orden rmdir. La orden rm nos lo permite con la opción –R borrando el contenido del directorio especificado y todos sus subdirectorios de forma recursiva (ver su página del manual).
Nota advertencia.png Hay que tener mucho cuidado con la orden:
$ rm -R <directorio>

Ya que borra todos los archivos y directorios dentro del directorio a borrar.

  • Mostrar por pantalla el contenido de los archivos por la salida estándar. Si no se especifica ningún archivo, la orden repite todo lo que se ha escrito por la entrada estándar. Para indicar que se ha acabado de escribir hay que pulsar CTRL+D.
$ cat <opciones> <archivos>
  • Buscar archivos recorriendo árboles de directorios especificados por las rutas, evaluando de izquierda a derecha las condiciones de búsqueda. Además se

pueden especificar acciones sobre los resultados obtenidos:

$ find <ruta(s)> <condición(es) de búsqueda> <acciones>
  • Mostrar el nombre del directorio en el que uno se encuentra situado (print working directory). Se dice que ese directorio es el directorio de trabajo:
$ pwd <opciones>

Estructuras de control de flujo

Listas de órdenes

Una lista de órdenes es una secuencia de una o más tuberías separadas por uno de los operadores ‘;’, ‘&’, ‘&&’ o ‘||’ y terminada opcionalmente por ‘;’, ‘&’ o (nueva línea).

Archivos de órdenes o scripts

Tuberías

Una tubería es una secuencia de una o más órdenes separadas por el carácter '|'. En este caso la salida estándar de una orden se conecta con la entrada estándar de la siguiente orden, por eso el nombre de tubería.

El intérprete de órdenes espera a que todas las órdenes de la tubería terminen antes de presentar un resultado por la salida estándar. El estado de salida de una tubería corresponde al estado de salida de la última orden. Asociado a las tuberías se suelen utilizar una serie de órdenes que se utilizan como filtros (por ejemplo la orden grep). Ej, mostrará sólo los ficheros que no sean directorios:

$ ls -l | grep "^-"

Ver también