comandos linux completo

33
 Contenido [ocultar ] 1 Utilizand o el Shell o 1.1 La herrami enta defini tiva y la más poderosa o 1.2 Terminales, Xter ms y Shells o 1.3 Terminales 1.3.1 Xterms 1.3.2 Shells o 1.4 Primeros pasos en el Shell o 1.5 Usando el Editor de linea de comando (shell) II: Los primeros comandos para experimentar con la shell   1.5.1 Saber "donde está" 1.5.2 Crear un archivo vacío 1.5.3 Agregar una linea al final de un archiv o sin eliminar su contenido 1.5.4 Leer el contenido de un archivo 1.5.5 Reemplazar el conteni do de un archivo existent e con otro contenido o crear un archivo con un contenido especifico 1.5.6 Leyendo el contenid o de un archivo con paginaci ón 1.5.7 Cambiar el nombre de un archivo o un directo rio 1.5.8 Creando una nueva copi a de un archivo 1.5.9 Viendo lo que está dentro de un directorio 1.5.10 Desp lazarse 1.5.11 Limpiar   1.5.12 Crear o elimin ar directorio s 1.5.13 Colocar archi vos en alguna parte 1.5.14 Buscar algún texto en un archivo 1.5.15 Para saber lo que está sucediendo en este momento 1.5.16 En cuanto a lo que has hecho 1.5.17 Para convertirse en admini strado r temporal mente o 1.6 Usando el Shell III 1.6.1 Auto-Completaci ón 1.6.2 Históri co de comandos 1.6.3 Edición de comandos 1.6.4 Atajos dispon ibles de la Shell o 1.7 Usando la Shell IV 1.7.1 Cola de coman dos 1.7. 2 Command Jobbing 1.7.3 Command Substi tutio n o 1.8 Using the Shel l V 1.8.1 Filename Globbing or Expansion 1.8.2 Quoting Special Shell C haract ers 1.8.3 Redirecci ón de salida 1.8.4 Redirecci onando entre dos o más comandos 1.8.5 Redirecci ón desde o hacia archivos o 1.9 Using The Shel l VI 1.9.1 Archivos de confi guración bash

Upload: davizlobo

Post on 17-Jul-2015

126 views

Category:

Documents


10 download

TRANSCRIPT

Page 1: Comandos Linux Completo

5/14/2018 Comandos Linux Completo - slidepdf.com

http://slidepdf.com/reader/full/comandos-linux-completo 1/33

 

Contenido

[ocultar ]

• 1 Utilizando el Shello 1.1 La herramienta definitiva y la más poderosao 1.2 Terminales, Xterms y Shellso 1.3 Terminales

1.3.1 Xterms 1.3.2 Shells

o 1.4 Primeros pasos en el Shello 1.5 Usando el Editor de linea de comando (shell) II: Los primeros

comandos para experimentar con la shell  1.5.1 Saber "donde está" 1.5.2 Crear un archivo vacío 1.5.3 Agregar una linea al final de un archivo sin eliminar sucontenido 1.5.4 Leer el contenido de un archivo 1.5.5 Reemplazar el contenido de un archivo existente con otro

contenido o crear un archivo con un contenido especifico 1.5.6 Leyendo el contenido de un archivo con paginación 1.5.7 Cambiar el nombre de un archivo o un directorio 1.5.8 Creando una nueva copia de un archivo 1.5.9 Viendo lo que está dentro de un directorio 1.5.10 Desplazarse 1.5.11 Limpiar  1.5.12 Crear o eliminar directorios 1.5.13 Colocar archivos en alguna parte 1.5.14 Buscar algún texto en un archivo 1.5.15 Para saber lo que está sucediendo en este momento 1.5.16 En cuanto a lo que has hecho 1.5.17 Para convertirse en administrador temporalmente

o 1.6 Usando el Shell III 1.6.1 Auto-Completación 1.6.2 Histórico de comandos 1.6.3 Edición de comandos 1.6.4 Atajos disponibles de la Shell

o 1.7 Usando la Shell IV 1.7.1 Cola de comandos 1.7.2 Command Jobbing 1.7.3 Command Substitution

o 1.8 Using the Shell V 1.8.1 Filename Globbing or Expansion 1.8.2 Quoting Special Shell Characters 1.8.3 Redirección de salida 1.8.4 Redireccionando entre dos o más comandos 1.8.5 Redirección desde o hacia archivos

o 1.9 Using The Shell VI 1.9.1 Archivos de configuración bash

Page 2: Comandos Linux Completo

5/14/2018 Comandos Linux Completo - slidepdf.com

http://slidepdf.com/reader/full/comandos-linux-completo 2/33

 

1.9.2 The Prompt 1.9.3 Modificar $PATH

o 1.10 Usar la Shell VII 1.10.1 Command Aliases And Shell Functions

1.10.1.1 Command Aliases 1.10.2 Shell Functions 1.10.3 A dónde ir desde aquí 1.10.4 Preguntas frecuentes de Shell (FAQ)

1.10.4.1 ¿Cómo apago ese &\*# pitido? 1.10.4.2 ¿Por qué obtengo "bash: command: command not

found"? 1.10.4.3 ¿Por qué me aparece "bash: command: Permission

denied"? 1.10.4.4 El bit de ejecución está habilidato, tengo permisos

de ejecución pero el permiso es denegado, ¿por qué? 1.10.4.5 ¿Cómo cambio los colores de listado de archivos? 1.10.4.6 He puesto un script 'foo' en mi directorio ~/bin, 

 pero cada vez que intento ejecutarlo, un comando distinto,también llamado 'foo', es iniciado. ¿Por qué?

1.10.4.7 ¿Qué significa "bash: command: bad interpreter"? 1.10.4.8 Mi terminal se congela cada vez que presiono

"<CTRL s>" 1.10.5 Related Resources

1.10.6 Other resources

Utilizando el ShellLa herramienta definitiva y la más poderosa

Alguna vez habrá escuchado la letanía 'la linea de comandos, esta fuera de moda', 'esarcaica' y cosas similares. Ademas que las personas y los sistemas operativos deberían deevitarla.

La realidad es que usted: puede utilizar Linux sin tener que saber nada sobre el shell.Puede hacer que su sistema inicie directamente en el modo gráfico(X) y apagarlo desde

ahí. Puede utilizar el Centro de Control Mandriva y Webmin para configurar cada uno delos aspectos de su sistema.

Sin embargo, es nuestra convicción, que utilizar Linux sin usar el shell es como manejar su carro solo en la primera velocidad. Por supuesto, es más fácil y eventualmente llegará adonde usted quiere, pero es lento y le quita la diversión de conducir.

Y desde luego: la linea de comandos es divertida. Es como la más grande colección de bloques para construcción jamas vista. Y estos bloques pueden realizar las cosas másasombrosas e incluso pueden cooperar entre ellos, pudiendo hacer las tareas máscomplejas en unas cuantas lineas. Esto se debe a que el shell de Unix no es solo un

interprete de comandos como el indicador de DOS en Windows, es un entorno de programación bastante completo.

Page 3: Comandos Linux Completo

5/14/2018 Comandos Linux Completo - slidepdf.com

http://slidepdf.com/reader/full/comandos-linux-completo 3/33

 

Eso no significa que el aprendizaje del shell sea fácil. Bien, pero hay que aprender ¿queespera?. ;-) Créanos que es muy gratificante y usted sera reconocido como un mago de lacomputación por los extraños, en un periodo relativamente corto. *grin*

Para tener una idea de que es un shell, un poco de información previa podría serle útil.

Terminales, Xterms y Shells

En los días cuando nació Unix, el ahora dominante de la raza «ordenadores personales»era totalmente desconocido. Las maquinas que en aquel entonces eran llamadas«computadores» eran robustas, con el tamaño de una habitación, utilizaban cintas ymemorias magnéticas --de ahí el termino 'básico' para la memoria del sistema--.

Con la PDP-11 creada por DEC (ahora Compaq) e introducida en 1970, esta 'pequeña' (enaquel entonces llamada 'mini') y el computador económico apareció en el mercado,convirtiéndose instantáneamente en un gran éxito, en las universidades, ya que la mayoríade ellas fue capaz de comprar por primera vez un computador --La PDP-11 era unaverdadera ganga por solo $10,000)--.

Los sistemas operativos de estas máquinas fueron escritos en Assembler, código demaquina, muy eficiente, pero para nada portable. Cada proveedor vendió su propiosistema operativo, junto con sus máquinas.

Pronto se hizo palpable la incomodidad de esta situación y se hicieron intentos de crear unsistema operativo que pudiera funcionar en más de una sola marca de computador.

En 1969, un empleado de AT&T Bell Labs llamado Ken Thompson, escribió el primer código de lo que se conoce como Unix --un juego de palabras en MULTICS, un proyectoanterior en el que Thompson habias estado trabajando--. Sin embargo, las cosas realmentecomenzaron cuando Dennis Ritchie, llegó con un nuevo lenguaje de programaciónllamado "C", para este nuevo sistema operativo.

A pesar de que Unix era menos eficaz que el sistema operativo que suministraban los proveedores de computadores, tenía tres ventajas decisivas: Que podría ser portado acualquier maquina que se tuviera alrededor, que incluyó el lenguaje "C" --el cual hizo dela programación algo más fácil en muchos aspectos-- y ademas gratis. Pronto, las

universidades de todo Estados Unidos comenzaron a equipar sus máquinas con Unix.

Terminales

Así Unix era y es un sistema operativo que funciona en una amplia variedad de maquinas.¿Que hay sobre las personas que usaban esas maquinas? Esas personas se conectaban alas maquinas por medio de terminales 'tontas', esto es maquinas que consisten de unteclado, un monitor y lo suficiente para mantener una conexión a la computadora central.Lo que hacían los usuarios en esta terminales básicamente era Teclear Remotamente(TeleTY ping), de ahí surge 'tty' para los archivos de dispositivo de las terminales o elnombre del comando 'getty'.

Page 4: Comandos Linux Completo

5/14/2018 Comandos Linux Completo - slidepdf.com

http://slidepdf.com/reader/full/comandos-linux-completo 4/33

 

Podrá preguntarse ¿que tiene que ver esto con el tema?. Bien, los proveedores de esasterminales no se ponían de acuerdo sobre un estandard . Esto es, cada marca de terminaltenia su propia distribución de teclado, su propio método de mostrar los caracteres en la

 pantalla, su propia idea de lo que caracteres o códigos de control representaban las señalesque enviaban y recibían, y cosas así.

Para poder hacer frente a todo ese caos, se creo un archivo central que contenía todas lasdiferentes y distintas capacidades de las terminales -- termcap. Abra /etc/termcapen un editor de texto y asómbrese (o asustese ;-)).

En su mayoría las terminales Linux utilizan 'vt100' o 'linux' como tipo de terminal.

En un sistema Mandriva linux puede acceder ventanas que emulan esas terminales por medio de las combinaciones CTRL+ALT+F1 a CTRL+ALT+F6. ALT-F7 lo regresara ala actual sesión gráfica (vea más adelante). Existen 'archivos especiales' en /dev :/dev/tty1 al /dev/tty6 .

Xterms

En los comienzos de 1980, se desarrolló el sistema de ventanas X, un subsistema gráfico para Unix. En lo años 90, se desarrolló el entonces incipiente XFree86, un fork de estesistema con el fin de escribir una versión más estable para el procesador Intel, basado enlos clones de Unix, tales como, FreeBSD, NetBSD o Linux. Más tarde, se desarrolló elfork de XFree86, llamado X.org. X.org es por ahora el sistema gráfico por defecto deMandriva.

El primer y mas importante uso de X, es la posibilidad de ejecutar múltiples terminales'virtuales'. De hecho, el sistema X viene con el aplicativo, xterm. Por lo tanto, ustedencontrará que la palabra 'xterm' y la frase 'terminal virual', se utilizan a menudo comosinónimos. Al leer la frase 'abrir un xterm', esto no quiere decir que usted debe instalar yusar el programa llamado xterm, si no que también puede ser cualquier otro programaemulador de terminales, como por ejemplo rxvt, konsole, aterm, eterm, wterm,etc.

Un emulador d terminales --este es otro nombre para 'terminal virtual'-- se conecta alsistema a través de un archivo de dispositivo de un pseudo tty y utiliza su propio estándar de pantalla. Esto podría llevar a un comportamiento ligeramente distinto de algunas teclaso de aplicaciones en los distintos emuladores de terminal, esto depende de lo bien que losemuladores hagan lo propio en cuanto al estándar de la pantalla xterm.

En Mandriva, se puede tener acceso a estos emuladores a través de KDE menú principal 

-> Sistema -> Terminales. Son archivos especiales ubicados en /dev/pts ('pts' ='Pseudo-TerminaleS'): /dev/pts/1, /dev/pts2 etc.

Shells

Page 5: Comandos Linux Completo

5/14/2018 Comandos Linux Completo - slidepdf.com

http://slidepdf.com/reader/full/comandos-linux-completo 5/33

 

Con el fin de ejecutar programas en una terminal, un Shell es necesario. Ya que un Shelles la parte de un sistema operativo que se comunica con el usuario y permite sucomunicación por medio de los comandos.

La primera Shell 'real' de Unix, sh, fue escrita alrededor de 1975 por Steve Bourne y es

también llamado el "Bourne Shell". Pronto, surgieron otros desarrollos, algunos basadosen el original "Bourne Shell" como (pd)ksh o zsh, que a menudo se utilizaban comoestándar de la Shell de los Unix propietarios o las Shells que se implementaron concaracterísticas del lenguaje de programación 'C', como csh o tcsh.

En Linux, el Shell estándar es 'bash', el GNU Bourne-Again Shell (bueno, es parte delhumor UNIX ...). Es muy poderoso (demasiado dirían algunos).

Primeros pasos en el Shell

¡Téngalo en cuenta!En primer lugar, usted no debe utilizar la consola como 'root' para las tareas diarias, sobretodo si se está empezando a usarla. No se puede dañar el sistema accidentalmente (ointencionadamente) cuando se utiliza un shell con permisos de usuario normal, sinembargo, con permisos de root, un error simple puede tener consecuencias imprevistas ygraves.

Lo primero que aparece después de acceder o abrir una ventana xterm es el símbolo delsistema. El estandar del prompt --Símbolo del sistema-- de Mandriva Linux consiste en elnombre del usuario, el nombre de la maquina en la que usted se ha autenticado --Si no seha proporcionado ninguno, se utilizará "localhost"--, el directorio donde usted seencuentra --el "directorio de trabajo actual"-- y el símbolo del sistema:

[tom@belbo tom]$

En el ejemplo anterior, estoy registrado como el usuario "Tom", en una máquina que hellamado "Belbo" y estoy en mi directorio home, "/home/tom". El símbolo del sistema del'root', se vería como este:

[root@belbo root]#

 Notese que, aparte del nombre, el signo del sistema también ha cambiado de un '$' a un'#'. Es una tradición en las Shells Bourne, que al final del símbolo del sistema de unusuario normal tenga un '$' y al final del símbolo del sistema de un usuario root's, tengaun '#'.

Cada aspecto del sistema es personalizable. Más adelante usted leerá acerca de esto.

Para ejecutar un comando, escriba el nombre del comando en el prompt y luego pulse la

tecla <<ENTER>>. El shell busca dicho comando en su ruta de búsqueda o $PATH(hablaremos más sobre esto, más adelante), ejecuta el comando, imprime la salida del

Page 6: Comandos Linux Completo

5/14/2018 Comandos Linux Completo - slidepdf.com

http://slidepdf.com/reader/full/comandos-linux-completo 6/33

 

comando en la terminal --si es que así debe proceder-- y presenta de nuevo el símbolo delsistema --prompt-- cuando el comando termina de hacer su trabajo:

[tom@belbo tom]$ whoamitom[tom@belbo tom]$

Por cierto, no importa donde esté el cursor cuando se pulse la tecla <<ENTER>>, el shellsiempre leerá la línea completa.

Los comandos basicos son ls (lista los archivos y directorios de la actual ubicación), cp(copia), {prog|mv}} (mueve / renombra), cd (cambia de directorio), cada uno viene conuna gran cantidad de opciones que usted puede consultar en su respectiva página demanual, haciendo (man ls, man mv, etc).

Cuando usted pulse <<TAB>>, a continuación verá una lista de todos los comandos

disponibles, cuando digite algunos caracteres, presione la tecla <<TAB>> seguidamente...entonces verá una lista de todos los comandos que comienzan con esos caracteresdigitados.

Antes de introducirse en la tierra de la shell, se le dará una breve introducción a laterminología. Los comandos capturan opciones y/o argumentos:

[usuario@computadora ~]$ mv -i file dir

La '-i' es una opción del comando mv, y se considera a 'file' y 'dir' como argumentos. Lasopciones disponibles, se explican detalladamente en la pagina del comando man (manmv, para dicho ejemplo), se considera que los argumentos son suministrados por usted.Las opciones modifican el comportamiento de los comandos, se considera que losargumentos determinan con cuales datos el comando debe llevar a cabo su tarea.

Hasta ahora, esto se parece mucho a la shell de DOS, la cual casi todo el mundo odia ydesprecia (y con toda la razón). Llegó el momento de introducir algunos mecanismos, quehacen de tu vida con la shell una experiencia mucho más agradable.

Usando el Editor de linea de comando (shell) II: Los primeros comandospara experimentar con la shell

Si usted es un principiante, ahora va a poder divertirse con estos primeros comandos.

Para abrir una consola:

• Presione simultáneamente las teclas Alt+Ctrl+Fn (Fn puede ser una tecla

entre F1 a F6): usted puede volver a su entorno gráfico clásico presionando Alt-F7

Page 7: Comandos Linux Completo

5/14/2018 Comandos Linux Completo - slidepdf.com

http://slidepdf.com/reader/full/comandos-linux-completo 7/33

 

• O haciendo click en K Menu -> Herramientas -> Konsole.

Tenga cuidado de no iniciar la sesión como 'root', sino mas bien como un usuario normal.

Saber "donde está"

• El comando pwd muestra el directorio de trabajo (llamado algunas veces eldirectorio actual).

Para recordar mas fácilmente: pwd es el acrónimo de "print working directory".

Crear un archivo vacío

• Utilice el comando touch file_name.

Si file_name es un archivo existente, solo la fecha y la hora se cambiarán. El contenido noserá modificado.

Agregar una linea al final de un archivo sin eliminar su contenido

• Con la combinación entre el comando echo y el operador deredirección(en:BasicsBshell4) ">>" (tenga cuidado de no confundir con '>',descrito mas adelante):

 

[usuario@computadora ~]$ echo "blah blah blah" >> file_name

Leer el contenido de un archivo

• El comando cat file_name muestra el contenido de un archivo de texto.

Reemplazar el contenido de un archivo existente con otro contenido o crear unarchivo con un contenido especifico

• Similar al comando anterior, pero utilizando el [operador de redirección|BasicsBshell4] '>' esta vez:

Page 8: Comandos Linux Completo

5/14/2018 Comandos Linux Completo - slidepdf.com

http://slidepdf.com/reader/full/comandos-linux-completo 8/33

 

[usuario@computadora ~]$ echo "blah blah blah" > file_name

(si el archivo no existe, será creado, sin utilizar el comando 'touch')

Leyendo el contenido de un archivo con paginación

• El comando less file_name muestra el contenido de un archivo y permitedesplazarse por él.

Cambiar el nombre de un archivo o un directorio

• El comando mv name1 name2 renombra el archivo o el directorio de name1 a

name2.

Creando una nueva copia de un archivo

• El comando cp file1 file2 crea el archivo file2 copiando el contenido delarchivo file1 dentro de él.

Viendo lo que está dentro de un directorio

• El comando ls -l lista el contenido del directorio de trabajo.•

El comando ls -la lista el contenido del directorio de trabajo e incluye losarchivos ocultos.• El comando ls -l dir lista el contenido del directorio llamado "dir".

Desplazarse

• El comando cd directory_name cambia el directorio de trabajo por eldirectorio llamado directory_name.

Limpiar

• El comando rm file elimina el archivo llamado "file".

Crear o eliminar directorios

• El comando mkdir directory crea el directorio "directory".• El comando rmdir directory elimina el directorio vacio "directory".

Colocar archivos en alguna parte

• El comando mv file directory mueve el archivo 'file' hacia el directorio

'directory'.

Page 9: Comandos Linux Completo

5/14/2018 Comandos Linux Completo - slidepdf.com

http://slidepdf.com/reader/full/comandos-linux-completo 9/33

 

Buscar algún texto en un archivo

• El comando grep texto_a_encontrar file_name busca el texto en elarchivo file_name.

• El comando grep -i texto_a_encontrar file_name hace lo mismo,

 pero no distingue entre mayúsculas y minúsculas.

Para saber lo que está sucediendo en este momento

• El comando top muestra una lista de programas que estan siendo mas usados por la CPU (estará en pantalla). Utilice "q" para salir.

• El comando ps ux muestra una lista de todos los programas activos, pertenecientes al usuario actual.

• El comando ps aux muestra una lista de todas las actividades del sistema.

En cuanto a lo que has hecho

• Es posible recuperar y ver los comandos que haya escrito anteriormente,utilizando las teclas de flecha del teclado arriba y abajo.

• El comando history muestra una lista de los últimos comandos usados.

Para convertirse en administrador temporalmente

• El comando su - es como un interruptor para el modo de administrador, esdecir, con este comando usted se convertirá en "root" (tenga cuidado: no se quede

como root experimentando con todos estos comandos. ¡Rápidamente podríaocurrir un trágico error!).

• El comando exit lo trae de vuelta a su identidad anterior.

Usando el Shell III

Unix (y su hermano menor Linux) nacieron en la linea de comandos. Debido a esto, lalínea de comandos en Unix tiene un montón de mecanismos para que no tenga queescribir todo "manualmente". Este capitulo presenta algunos de esos mecanismos.

Auto-Completación

¿Cuál es el modo más rápido desde tu directorio home, suponiendo que es tu directorioactual de trabajo, al directorio /usr/src/linux/Documentation/isdn/ usando el comando cd ('cambiar directorio')? Pues es

[usuario@computadora ~]$ cd /u\<TAB\>sr\<TAB\>l\<TAB\>/D\<TAB\>is\<TAB\> 

Page 10: Comandos Linux Completo

5/14/2018 Comandos Linux Completo - slidepdf.com

http://slidepdf.com/reader/full/comandos-linux-completo 10/33

 

A esto se le llama 'completación automática de línea de comandos' y es indispensable.Repasemos más detenidamente el ejemplo:

[usuario@computadora ~]$ cd /u\<TAB\> 

expande a "cd /usr/". Fácil. Sigue

[usuario@computadora ~]$ cd /u\<TAB\>sr\<TAB\> 

expande a "cd /usr/src/". Si teclea "cd /u\<TAB\>s\<TAB\>", se le mostrará un lista de

tres subdirectorios de/usr 

 para escoger que siguen el patrón ('cd /u\*/s\*'):/usr/sbin , /usr/share y /usr/src .

Así, la tecla "TAB" es una herramienta útil para buscar subdirectorios o ficheros de losque conoce la primera letra. Por ejemplo,

[usuario@computadora ~]$ ls /usr/bin/zip\<TAB\> 

Devuelve una lista con todos los ficheros y subdirectorios de /usr/bin que empiececon las letras 'zip'. Por supuesto, hay comandos mucho más poderosos para esta tarea, pero este truco funciona cuando se tiene prisa.

Además, es realmente útil cuando los nombres son muy lartos. Por ejemplo, si quiereinstalar un RPM que se llama boomshakalakwhizbang-4.6.4.5-mdk586.rpm, simplemente teclea

[usuario@computadora ~]$ rpm -i boom\<TAB\> 

Y si no hay ningún otro fichero en ese directorio que siga ese patrón, el shell mostrará elnombre completo.

[usuario@computadora ~]$ cd /u\<TAB\>sr\<TAB\>l\<TAB\> 

Expande a "cd /usr/src/linux" y espera una decisión. Hay dos directorios en /usr/src

que siguen el patrón: /usr/src/linux-... y /usr/src/linux . ¿Cómo decir al shell que quieres el último? Simplemente añade una barra ('/'), indicando así el final deest último nombre.

Page 11: Comandos Linux Completo

5/14/2018 Comandos Linux Completo - slidepdf.com

http://slidepdf.com/reader/full/comandos-linux-completo 11/33

 

Puede ser que no esté seguro de si es /usr/src/linux/Documentation o/usr/src/linux/documentation . Como sabrá, Linux distingue entreminúsculas y mayúsculas. Si ha leído con atención hasta aquí, seguro que ya sabe larespuesta:

[usuario@computadora ~]$ cd /u\<TAB\>sr\<TAB\>l\<TAB\>/d\<TAB\> 

expande a /usr/src/linux/drivers/ . Parece que era 'Documentation' (con 'D'en mayúscula).

Este tipo de completación funciona también para comandos:

[usuario@computadora ~]$ gre<TAB> grecord grefer grep

[usuario@computadora ~]$ gre

Aquí el shell me lista todos los comandos que empiecen por la cadena 'gre'.

Histórico de comandos

Usando la tecla flecha hacia arriba, puede volver a ver todos los comandos que ha usadoen esa consola recientemente. Usando la tecla flecha hacia abago, puede regresar a otroscomandos. Junto con la techa mayúsculas (SHIFT), puede ver las salidas recientes de loscomandos en la consola. De este modo se pueden editar comando 'antiguos' y ejecutarlosde nuevo.

La combinación de teclas CTRL + r pone a la shell en el modo "búsquedaincremental/reversa". Ahora teclee la primera letra del comando que esté buscando:

CTRL + r y ahora pulsando 'i' puede cambiar esta línea a

(reverse-i-search)`i': isdnctrl hangup ippp0

Si pulsa la tecla ENTER, este comando se volverá a ejecutar. Mediante las teclas decursor derecha o izquierda, puede desplazarse para luego editar el comando si hicierafalta.

Edición de comandos

Puede navegar y editar comandos con las teclas de cursos y las teclas de función ('Home','End' etc), si así quiere, pero hay atajos de teclado para la mayoría de las tareas de edición:

Page 12: Comandos Linux Completo

5/14/2018 Comandos Linux Completo - slidepdf.com

http://slidepdf.com/reader/full/comandos-linux-completo 12/33

 

• CTRL + k: borra ('kill') desde la posición del cursor hasta el final de línea• CTRL + u: borra desde la posición del cursor hasta el inicio de línea• ALT + d: borra desde la posición del cursor hasta el final de la 'palabra' actual• CTRL + w: borra desde la posición del cursor hasta el inicio de la 'palabra' actual• CTRL + a: mueve el cursor hasta la primera letra de la línea• CTRL + e: mueve el cursor hasta el final de la línea• ALT + b: mueve el cursor hasta la primera letra de la 'palabra' actual• ALT + f: mueve el cursor hasta la última letra de la 'palabra' actual• CTRL + y: inserta la última 'palabra' borrada• !$\: repite el último argumenteo del comando previo.

Ejemplo: Creaste un directorio mediante el comando mkdirpeter/pan/documents/tinkerbell. Ahora quieres entrar en dicho directoriousando cd. En vez de teclearlo todo, puede poner 

[usuario@computadora ~]$ cd !$

y el shell añadirá la ruta del directorio tomándola del comando mkdir previo y poniéndola en el comando cd actual.

Conforme se vaya adentrando en el mundo de Linux, verá que estos atajos de teclado seusan en otras aplicaciones a la hora de introducir texto, por ejemplo en los navegadores.

Atajos disponibles de la Shell

Mandriva Linux viene con una serie de atajos, algunos son parte de las característicasnativas del bash, otros son pre-configurados (mas adelante aprenderá más, acerca de cómoconfigurar sus propios atajos).

El directorio "home" es el punto focal para la actividad de cada usuario, muchos sistemasUnix ofrecen atajos especiales para llegar a él.

Por ejemplo, "~" (virgulilla) es una manera abreviada, asignada al nombre de su directorio"home". Supongamos que usted esta en algún directorio lejano y necesita copiar un

archivo llamado "alguntexto", a ún directorio llamado "documentos", alojado a su vezdentro del directorio "home".

En lugar de escribir "cp alguntexto /home/myusername/documentos",usted puede escribir "cp alguntexto ~/documentos" que es mucho más corto,

 pero tiene exactamente el mismo efecto.

En teoría, esto también se aplica al comando cd. Pero realmente esto también seconsidera demasiado largo, de manera que si usted escribe solamente cd, esto le llevará asu directorio principal, sin importar donde esté.

Mandriva Linux provee una serie de atajos ya preconfiguras (llamados 'alias'):

Page 13: Comandos Linux Completo

5/14/2018 Comandos Linux Completo - slidepdf.com

http://slidepdf.com/reader/full/comandos-linux-completo 13/33

 

• cd.. ejecuta "cd .." (lo lleva al directorio padre).• d ejecuta 'ls' (lista el directorio).• l ejecuta 'ls' (lista el directorio).• la ejecuta 'ls -a' (lista el directorio completamente, e.j. incluidos los archivos que

comienzan con un punto)• ll ejecuta 'ls -l -k' (lista el directorio con formato largo, e.j. con los atributos de

archivos, muestra el tamaño de los archivos en KB y no en bytes)• ls ejecuta 'ls -F ––color=auto' (lista directorios, añade indicadores a los distintos

tipos de archivos y utiliza los colores)• lsd ejecuta 'ls -d \*/' (solo lista los subdirectorios, no los archivos)• md ejecuta 'mkdir' (crea un directorio)• p ejecuta 'cd -' (regresa al directorio anterior)• rd ejecuta 'rmdir' (elimina un directorio (vacío))• s ejecuta 'cd ..' (para ir al directorio padre)

Ahora que usted está un poco más familiarizado con la shell y algunos de los atajos queofrece, es hora de echar un vistazo a lo que realmente puede hacer con ella, además de laejecución de comandos simples.

Usando la Shell IV

Cola de comandos

Llegará el momento en que use ciertas combinaciones de comandos a menudo. Querráincluir todos los comandos en una sola línea para poder dedicarse a otra cosa. La shell lo

 permite, mediante el uso de ciertos caracteres entre comandos para hacer una cola decomandos. Esta sección introduce dos de los más importantes.

 Nótese que tendrá que usaré espacios en blancos por simplicidad y claridad, aunque en lavida real no hagan falta. Por ejemplo, no hay diferencia entre ls -a ; du -hs y ls-a;du -hs.

[usuario@computadora ~]$ comando1 ; comando2

Ejecuta comando1 primero y luego comando2, aun cuando comando1 devuelva un error.Ejemplo:

[usuario@computadora ~]$ ls -a ; du -hs

Primero mostrará la lista completa de ficheros de un directorio y después el espacio totalque ocupa un directorio junto con sus subdirectorios.

Page 14: Comandos Linux Completo

5/14/2018 Comandos Linux Completo - slidepdf.com

http://slidepdf.com/reader/full/comandos-linux-completo 14/33

 

[usuario@computadora ~]$ comando1 && comando2

Ejecuta primero comando1 y solamente si se completó sin ningún error, entonces ejecutacomando2.

Ejemplo:

[usuario@computadora ~]$ ls -a bogusdir && du -hs

mostrará ls: bogusdir: No such file or directory y du no se ejecutará

en absoluto (si no tiene ningún directorio llamado 'bogusdir', claro está ;-)). Si hubierausado ';' en vez de '&&', el comando 'du' sí se habría ejecutado.

El ejemplo clásico para demostrar la diferencia entre ';' y '&&', y la utilidad de las colasde comandos, es la compilación del kernel de Linux.

Para compilar e instalar el núcleo de Linux, necesita ejecutar un conjunto de comandosuno detrás de otro: make dep, make clean, make bzImage, make modules,make modules_install y make install. Tener que esperar a que termine cadacomando para decirle al sheel que ejecute el siguiente puede ser bastante pesado. En vezde eso, cada comando de la línea anterior será ejecutado sólo si todos los anteriores no

devolvieron ningún error. Si usa ';' para hacer la cola de comandos, y uno de ellos falla,como los demás sí se ejecutarán, al final obtendrá un kernel inusable en el directorio/boot. En este caso, use '&&':

[usuario@computadora ~]$ make dep && make clean && make bzImage && make modules && make modules_install && makeinstall

Esto compilará el kernel y sus módulos, y los instalará sin que haga falta ningunainteracción.

Command Jobbing

Cuando ejecuta comandos o inicia un programa desde terminal, la terminal se bloqueamientras el comando o programa este ejecutándose. En Unix, se dice que el comando o

 programa esta ejecutándose en 'primer plano' ('foreground'). Si necesita la terminal paraejecutar otro comando, deberá abrir una nueva terminal.

Pero existe una forma más elegante de hacerlo, llamada 'jobbing' o 'ejecutar en segundo plano' ('backgrounding'). Cuando realiza esto un comando liberara la

Page 15: Comandos Linux Completo

5/14/2018 Comandos Linux Completo - slidepdf.com

http://slidepdf.com/reader/full/comandos-linux-completo 15/33

 

terminalinmediatamente, y así la terminal puede ser usada nuevamente. Para hacerlo soloagregue un "&" (ampersand) despues del comando:

[usuario@computadora ~]$ gqview &

Le indica al shell que ejecute el visor gráfico 'GQview' en 'segundo plano' (i.e. to run it asa 'job').

El comando jobs le indicara que comandos y programas están ejecutandose en segundo plano en la actual ventana de terminal:

[usuario@computadora ~]$ jobs[1]+ Running gqview &

Esto es importante al querer cerrar una ventana de terminal, ya que al cerrar la terminal sefinalizaran todos lo que se este ejecutando. Esto es, si cierra la terminal del ejemplo, el

 programa GQview se cerrara también.

¿Pero y si ya esta ejecutando un programa en primer plano y desea ejecutarlo en segundo plano?, No hay problema:

[usuario@computadora ~]$ gqview

(press "CTRL z")[1] Terminated gqview

[2]+ Stopped gqview<

Luego

[usuario@computadora ~]$ bg kview[2]+ gqview &

La combinación de teclas CTRL z suspende un programa en ejecución en la terminal, asíque puede usar el comando bg para enviarlo a segundo plano.

Page 16: Comandos Linux Completo

5/14/2018 Comandos Linux Completo - slidepdf.com

http://slidepdf.com/reader/full/comandos-linux-completo 16/33

 

Tenga en cuenta que hay situaciones en la que iniciar una aplicación grafica desde unaterminal en primer plano es útil. De esa forma los mensajes de error que la aplicacióngenere son mostrados en la terminal, y aun si no son útiles para usted pueden

 proporcionar pistas de lo que esta mal a la persona a la que le pida ayuda.

Algunos programas grafico, normalmente en su etapa de pruebas (o Beta), continuanenviando mensajes a la terminal que los controla incluso si están en segundo plano. Sieste comportamiento le molesta, puede evitarlo ejecutando:

[usuario@computadora ~]$ command &>/dev/null &

Esto no solo envia el programa a segundo plano, también envía toda la salida que semostraría de command en la terminal al archivo /dev/null . Solo para que se entere,

/dev/null es el asesino de datos del sistema, todo lo que envié se desvaneceráinmediatamente sin dejar rastro.

Command Substitution

Command substitution is a very handy feature. Let's say you want to have a look at theREADME.mouse file from the XFree86 documentation, but you don't know where it is.Since you are a clever user, you've already heard of the 'locate' command and have the'slocate' package installed. So you do a:

[usuario@computadora ~]$ locate README.mouse

and you find out it is located in /usr/X11R6/lib/X11/doc. Now you either use theterminal pager less or your file manager to display that file, providing that path.Command substitution makes that much easier for you:

[usuario@computadora ~]$ less $(locate README.mouse)

Accomplishes the same in one step. The output of the command locateREADME.mouse (= /usr/X11R6/lib/X11/doc/README.mouse) is used as the argumentfor the less pager, which now displays this file.

The syntax for this mechanism is:

[usuario@computadora ~]$ command1 $(command2)

Page 17: Comandos Linux Completo

5/14/2018 Comandos Linux Completo - slidepdf.com

http://slidepdf.com/reader/full/comandos-linux-completo 17/33

 

Instead of '$()', you can use single backquotes:

[usuario@computadora ~]$ command1 `command2`

That's less to type, but harder to read in scripts and more easily to confuse with 'normal'single quotes, which the shell won't accept as substitution indicators. I prefer the firstmethod, but in the end it's up to you.

Here's another example. Let's say you want to kill some stubborn program called rob.You can do this by finding out what its Process ID is with the pidof command and thenissuing the kill command with this PID as its argument. Instead of typing

[usuario@computadora ~]$ pidof rob567kill 567

You type:

[usuario@computadora ~]$ kill `pidof rob`

It is more efficient, isn't it?

 Next, I'll introduce two more useful shell mechanisms, file name globbing and output 

redirection. 

Using the Shell V

Filename Globbing or Expansion

Filename globbing allows you to provide more than one filename to a command withouthaving to write all filenames in full. You use special characters for this, called 'wildcards'.

Say you want to delete all files in a directory that end with the string .bak using the rmcommand. Instead of typing each filename as an argument to rm, you use the '*' wildcard:

[usuario@computadora ~]$ rm *.bak

Page 18: Comandos Linux Completo

5/14/2018 Comandos Linux Completo - slidepdf.com

http://slidepdf.com/reader/full/comandos-linux-completo 18/33

 

'*' matches zero or more characters. In this example, you tell the shell to expand theargument to the rm command to "all file names ending on or consisting of the string.bak", the shell does so and passes that expanded argument to the rm command.

As you will see, it is important to note that the shell reads and interprets the command

line before the command does it. This has the advantage that you can use wildcards with(almost) all shell commands which take strings (file names, directory names, searchstrings etc) for an argument.

Let's play a bit more with the '*' wildcard. You have a directory which contains the files124.bak, 346.bak and 583.bak. You want to keep 583.bak. What you do is this

[usuario@computadora ~]$ rm *4*.bak

The shell expands '*4*.bak' to "all file names which contain the number '4' and the end onthe string .bak".

 Notice that rm 4*.bak would not have worked, since this would only haveencompassed file names beginning with the number '4'. Since there are no such files inthis directory, the shell expands this pattern to an empty string and rm issues an error message:

[usuario@computadora ~]$ rm: cannot remove `4*.bak': Nosuch file or directory

 Now you want to keep the file 346.bak but delete 124.bak and 583.bak. That'strickier since the files which are to be deleted have nothing in common except the ending.But lucky as you are, you can also define files by what they not have:

[usuario@computadora ~]$ rm *[!6].bak

This reads: "delete all files which end on the string .bak except for those which end onthe string 6.bak". You have to put the negation sign '1.1 ' and the character to benegated (here '6') into brackets, because otherwise the shell interprets the exclamationmark as the beginning of a history substitution. Negation works with all globbing patternsintroduced in this article.

 Notice that it is very easy to shoot yourself in the foot with the '*' wildcard and negation.Guess what

Page 19: Comandos Linux Completo

5/14/2018 Comandos Linux Completo - slidepdf.com

http://slidepdf.com/reader/full/comandos-linux-completo 19/33

 

[usuario@computadora ~]$ rm *[!6]*.bak

does? It deletes all the files, even the one which does contain a '6' in its filename. If you put '*' wildcards before and after a negation, it renders the negation practically useless, because the shell expands this to "all file names which do not have that character  at any

 given position". In our example, the only file name on which that pattern would not havematched, would have been 666.bak.

The second wildcard is the question mark, '?'. In a globbing pattern, a question mark represents exactly one character. To demonstrate its use, let's add two new files to thethree example files, 311.bak~ and 'some.text'. Now list all files, which have exactlyfour characters after the dot:

[usuario@computadora ~]$ ls *.????

does this. The question mark wildcard is also a useful means to avoid the 'negation trap'mentioned above:

[usuario@computadora ~]$ rm *[!4]?.*

This expands to "all files except for those with a '4' in the second to last position beforethe dot" and deletes all files except for 346.bak.

Is there more? You bet. So far, you've only seen globbing patterns which match onecharacter at a certain position. But nothing keeps you from matching more than one:

[usuario@computadora ~]$ ls [13]*

lists all files which either begin with the character '1' or the character '3'; in our test casethe file 124.bak, 311.bak~ and 346.bak match. Notice that you have to enclosethe pattern in brackets, otherwise the pattern would match only files which begin with thestring '13'.

 Now all that's left for ultimate happiness to ensue is the possibility to define ranges of matches:

[usuario@computadora ~]$ ls *[3-8]?.*

Page 20: Comandos Linux Completo

5/14/2018 Comandos Linux Completo - slidepdf.com

http://slidepdf.com/reader/full/comandos-linux-completo 20/33

 

lists all files whose second to last character before the dot is a number between '3' and '8'.In our example, this matches the files 346.bak and 583.bak.

Quoting Special Shell Characters

These powerful mechanisms have one drawback, though: the shell will always try toexpand them, and it will do so before the command. There are several cases in which thiscan get in your way:

• File names with special characters. Assume you have another file in that directorywith the name 1.1 56.bak. Try to match it with a globbing pattern:

[usuario@computadora ~]$ rm !*

rm 

rm: too few arguments

The shell interprets '1.1*' as a history substitution ('insert all arguments from previouscommand'), not as a globbing pattern.

• Commands which take special characters as arguments themselves. A row of Linux command line tools like (e)grep, sed, awk, find and locate for example use their own set of what is then called 'regular expressions'. Theseexpressions may look strikingly similar to globbing patterns but are in some casesinterpreted differently.But in order to enable the command to interpret them in the first place, the shellmust be prevented from interpreting them as globbing patterns first:

[usuario@computadora ~]$ find . -name [1-9]* -printfind: paths must precede expression

Properly:

[usuario@computadora ~]$ find . -name '[1-9]*' -print

./346.bak

./124.bak

./583.bak

./311.bak~

Page 21: Comandos Linux Completo

5/14/2018 Comandos Linux Completo - slidepdf.com

http://slidepdf.com/reader/full/comandos-linux-completo 21/33

 

You can quote such special characters like 1.1 , $, ? or the empty space either with a back slash:

[usuario@computadora ~]$ ls \!*!56.bak

or with (single) quotes

[usuario@computadora ~]$ ls '!'*!56.bak

 Notice that using quotes may need some deliberation on where to put them.

[usuario@computadora ~]$ ls '1.1 *'

would look for file called 1.1 \* since the second wildcard is now quoted, too, and thusinterpreted literally.

Redirección de salidaLa filosofía de Unix es tener muchos programas pequeños, cada uno brillando en unatarea. Las tareas complejas no son realizadas por programas complejos sino mediante launión de muchos programas con un puñado de mecanismos shell. Uno de ellos es laredirección de salida.

Redireccionando entre dos o más comandos

Ésto se hace mediante 'tuberías', denotadas mediante el símbolo de cañería | ('pipe' eninglés). La syntaxis es:

[usuario@computador ~]$ comando1 | comando2 | comando3

Etc.

Seguramente ya las ha visto. Son usualmente utilizadas para redireccionar la salida de un programa a un paginador como 'more' o 'less'.

[usuario@computadora ~]$ ls -l

Page 22: Comandos Linux Completo

5/14/2018 Comandos Linux Completo - slidepdf.com

http://slidepdf.com/reader/full/comandos-linux-completo 22/33

 

El primer comando provee el listado del directorio y el segundo lo despliega de unamanera navegable en pantalla. Un ejmplo mas complejo:

[usuario@computadora ~]$ rpm -qa

El primer comando lista todos los paquetes RPM instalados, el segundo filtra (grep)aquellos que comienzan ('^') con una 'x' y el tercero muestra los resultados paginados enuna lista navegable.

Redirección desde o hacia archivos

A veces se quiere guardar la salida de un comando en un archivo o alimentar ese comandodesde una archivo. Esto se hace por medio de los operadores '>' y '<'.

[usuario@computadora ~]$ comando > archivo

guarda la salida del comando en el archivo, sobreescribiendo todo el contenido previo delarchivo:

[usuario@computadora ~]$ ls > listadodir

guarda el listado de el directorio actual a un archivo llamado listadodir .

[usuario@computadora ~]$ comando < archivo

utiliza el archivo como entrada para el comando:

[usuario@computadora ~]$ sort < listadodir > slistadodir

 pasa el contenido de listadodir al comando sort, el cual lo ordena y lo entrega elcontenido ordenado en el archivo slistadodir . Por supuesto, si usted es inteligente,hará lo mismo con un paso:

[usuario@computadora ~]$ ls

Page 23: Comandos Linux Completo

5/14/2018 Comandos Linux Completo - slidepdf.com

http://slidepdf.com/reader/full/comandos-linux-completo 23/33

 

Un caso especial es command 2> archivo. Esto pune sólo los mensajes de error enel archivo. Puede ser necesario de cuando en cuando...

Otro operador es '>>'. Éste agrega la salida a un archivo existente, es decir, no borra elcontenido previamente existente.

[usuario@computadora ~]$ echo "texto" >> archivo

Esto agregaría texto al contenido del archivo archivo. Una manera rápida de editar unarchivo sin abrir un editor antes.

Existe una restricción importante a los operadores '>' y '<': Algo como

[usuario@computadora ~]$ comando < archivo1 > archivo2

 borará el contenido de archivo1. Sin embargo,

[usuario@computadora ~]$ comando < archivo1 >> archivo2

funcionará bien y agregará el contenido procesado de archivo1 al mismo archivo.

Esto es mucho, ¿no es cierto?. No hay que entrar en pánico. Se puede aprender todo pasoa paso a tu propio paso. La práctica hace al maestro.

Una vez que esté familiarizado con los mecanismos shell más comunes, sentirá el deseode personalizar su ambiente. Encontrará algunas ideas en las siguientes secciones. En laúltima parte de este artículo también encontrará un pequeño listado de preguntasfrecuentes que tratan sobre los mensajes de error más comunes de la consola y algunasconfiguraciones menores.

Using The Shell VI

Archivos de configuración bash

Cuando se hace un

[usuario@computadora ~]$ ls .bash*

en el directorio home, se verá una lista de archivos:

Page 24: Comandos Linux Completo

5/14/2018 Comandos Linux Completo - slidepdf.com

http://slidepdf.com/reader/full/comandos-linux-completo 24/33

 

• .bash_history contiene un listado de los comandos que se han ingresado.• .bash_logout contiene un listado de los comandos a ser ejecutados al

abandonar una shell.• .bash_profile contiene una lista de comandos a ser ejecutados cuando se

ingresa al sistema.• .bashrc contiene el listado de comandos a ser ejecutados cada vez que se abre

una nueva shell.

 Nótese que existe una diferencia entra las dos últimas: .bash_profile es leído una

vez al comienzo de una sesión, mientras que .bashrc es leído cada vez que se abre unnuevo terminal (por ejemplo, una nueva ventana de xterm). En una configuracióntradicional se definirían variables como PATH en .bash_profile, y cosas comoaliases y funciones en .bashrc. Pero ya que .bash_profile es usualmente pre-configurado para leer el contenido de .bashrc de todas maneras, se podría tambiénahorrar un poco de esfuerzo y poner toda la información de configuración en .bashrc.

Estos archivos definen las configuraciones por usuario. Las configuraciones de sistema sealmacenan en /etc/profile, /etc/bashrc y en los archivos ubicados en/etc/profile.d . Usted debería preferir el uso de los archivos de configuración por usuario, ya que su edición no requiere permisos de 'root', y también permiten hacer configuraciones diferentes para 'root' y para cada cuenta de usuario, lo cual puede ser algo

 bueno. En caso de conflictos entre configuraciones de usuario y de sistema, lasconfiguraciones de usuario prevalecen.

The Prompt

The prompt is the first thing you see every time you open a console or an xterm. It lookslike this:

[usuario@computadora ~]$

In its default setting it shows your user name, the hostname of your machine (or 'localhost' is you haven't assigned one) and the current working directory ('~' is the Unixshortcut for your home directory).

Traditionally, the last character is set up to indicate whether you are a user ($) or 'root', inwhich case it changes to a hash (#).

You can set or change your prompt via changing the content of the $PS1 variable. Thecommand

[usuario@computadora ~]$ echo $PS1

Page 25: Comandos Linux Completo

5/14/2018 Comandos Linux Completo - slidepdf.com

http://slidepdf.com/reader/full/comandos-linux-completo 25/33

 

displays the current setting. Available special characters and their meaning are listed inman bash, section PROMPTING.

 Need some ideas on what might be a better prompt? Well, for starters the default settingisn't very friendly to forgetful people, since it only shows the last part of your current

 path. If you see a prompt like

[tom@localhost bin] $

your current working directory could be /bin, /usr/bin, /usr/local/bin or /usr/X11R6/bin. Sure, you can type

[usuario@computadora ~]$ pwd 

to find out where you are, but shouldn't there be a way to tell the shell to do that on itsown accord?

There is. The appearance of the prompt - and for most of the other settings discussed here- is set in /etc/bashrc. You may also change it on a per user basis by editing.bash_profile and .bashrc in your home directory.

Parameters are described in man bash, chapter 'PROMPTING'. You can add niftythings like the current time in different formats or the history number of the command,even different colors are possible.

My currently favored setting in my user ~/.bashrc is:

PS1="PS1="\[\033[1m\][\w]\[\033[0m\] "

'root's ~/.bashrc has:

PS1="\[\033[0;31m\][\w]\[\033[0m\] "

And the prompt I get, is this:

[/usr/bin]

And this when I'm 'root':

[/usr/bin]

I've chopped the host- and user name part, since I have no need for it. But I want to see atfirst glance if I am logged in as a user or as 'root' on this console. Note that the user 

 prompt will be white on dark backgrounds and black on light ones.

A more moderate setting might be

PS1="\u: \w\\$ "

Page 26: Comandos Linux Completo

5/14/2018 Comandos Linux Completo - slidepdf.com

http://slidepdf.com/reader/full/comandos-linux-completo 26/33

 

which will result in prompts like these:

user_name: /usr/bin$

 but who cares about being moderate? :-)

You can test various settings on the fly by using the export command e.g.: exportPS1="\u: \w\\$ ". If you've found a prompt command which suits you, put it into your .bashrc. That way it will be applied automatically to every console or terminalwindow you open.

You may even 'theme' your prompt, i.e. use different colors or make it look like an goodol' C64 prompt. If you are interested in this, have a look at Bashish.

Modificar $PATH

'$PATH', como '$PS1', pertenece al grupo de variables de entorno. Escriba

[usuario@computadora ~]$ set

 para obtener un listado completo de todas las variables de entorno actualmente definidas.

Las variables de entorno que se ven aquí están definidas en los archivos de configuraciónde la shell, ya sea por el conjunto de archivos de configuración de shell de los usuarios, o

 por los archivos de configuración de shell de root a nivel de sistema, localizados en/etc. Si está en X, mas variables son configuradas por los archivos de inicio de X de suadministrador de ventanas o ambiente de escritorio.

Usted no debería complicarse con las configuraciones de la mayoría de estas variables amenos que sepa lo que está haciendo y por qué. Sin embargo, saber cómo cambiar lavariable $PATH puede ser de utilidad ya que determina los nombres de directorios dondela shell busca por comandos o programas, es decir, por archivos ejecutables. Si elcomando que quiere ejecutar está dentro de un directorio que es listado en $PATH, nonecesita entregar la ruta completa al comando, sólo el nombre de él. Algunas aplicaciones

de terceros no instalan sus archivos ejecutables en los directorios estándares de comandosy programas de Linux. Agregar sus ubicaciones de instalación no estándares a $PATH esuna alternativa posible. Mas aún, esto también te enseñará a trabajar con variables deambiente en general.

Primero que todo habrá notado que los nombres de las variables de entorno están escritasen letras mayúsculas. Esto es sólo una convención, pero es importante tenerlo en mentetya que Linux hace la diferencia entre letras mayúsculas y minúsculas. Usted puede definir variables como '$path' o '$pAth', pero la shell no las utilizará.

Lo segundo es que los nombres de variables son precedidos por un signo '$' algunas

veces, aunque otras no. Para setear una variable, se usa el nombre sin el signo '$' precediéndola:

Page 27: Comandos Linux Completo

5/14/2018 Comandos Linux Completo - slidepdf.com

http://slidepdf.com/reader/full/comandos-linux-completo 27/33

 

PATH=/usr/bin:/bin:/usr/local/bin:/usr/X11R6/bin

 para accesar la variable y su valor, necesita poner el signo '$' en frente de ella:

[usuario@computadora ~]$ echo $PATH/usr/bin:/bin:/usr/local/bin:/usr/X11R6/bin

 porque, de otra manera, el nombre de la variable es tratado como una simple cadena detexto:

[usuario@computadora ~]$ echo PATHPATH

El tercer punto es especialmente importante para trabajar con la variable $PATH. No sólose pueden reemplazar variables, sino también agregar nuevas cadenas de texto a susvalores. La mayor parte del tiempo, no querrá hacer algo como 'PATH=/some/directory'

 porque ello borraría los otros directorios de su $PATH y lo forzaría a proveer la rutacompleta a cada comando que quiera ejecutar en esa terminal. En vez de eso, sóloagregue:

PATH=$PATH:/un/directorio

Aquí PATH es seteado a su valor actual, representado por $PATH, más un directorioadicional.

Hasta ahora sólo se ha intentado setear la variable $PATH para el terminal en el cual seha escrito el comando. Si abre un nuevo terminal y se ejecuta echo $PATH, verá la$PATH antigua, sin el directorio que se agregó. Se ha definido una variable de entornolocal , restringida al terminal en el que definió esa variable.

Para definir una variable global que sea reconocida por todos los terminales que abrirá enesta sesión, se debe exportar la variable local con el comando 'export':

export PATH=$PATH:/un/directorio

Si ahora abre un nuevo terminal y escribe echo $PATH, verá el nuevo valor de $PATHen este terminal. Note, sin embargo, que el comando 'export' sólo setea o cambia lasvariables para el terminar que está corriendo y en terminales que se inicien después deque ha sido ejecutado. Los terminales que están ya abiertos aún tendrán el viejo $PATH.

Para agregar un directorio de manera permanente a su $PATH, solo agregue el comando'export' anterior a su {file|.bash_profile}}.

 No utilice .bashrc para configuraciones de PATH que involucren la adición dedirectorios al PATH existente. .bashrc es ejecutado cada vez que abre una nueva shell,

Page 28: Comandos Linux Completo

5/14/2018 Comandos Linux Completo - slidepdf.com

http://slidepdf.com/reader/full/comandos-linux-completo 28/33

 

así que si agrega un directorio al PATH en él, será agregado nuevamente y cada vez queabra un terminal. Esto causa que la variable PATH contenga un número siempre crecientede entradas de directorio duplicadas.

La última parte de este artículo introducirá dos métodos de configuración, más avanzados,

y un FAQ que trata sobre problemas menores de mensajes de errores de configuración.

Usar la Shell VII

Recordar todos los tipos de comandos y sus opciones y escribirlos todo el tiempo es untrabajo tedioso. Afortunadamente usted no tiene que hacerlo. Puede definir atajospara comandos de uso frecuente. Éstos atajos pueden ser definidos de formarelativamente simple por medio de aliases de comandos o de forma un poco mascompleja con funciones shell.

Command Aliases And Shell Functions

Command Aliases

For example, I use this command to upload my stuff to MUO:

[usuario@computadora ~]$ rsync -e ssh -z -t -r -vv ––

 progress /home/tom/web/muo/rsmuo/docs muo:/www/mandrakeuser/docs

Obviously I'd go nuts if I had to type this command line each time. So I have definedwhat is called an 'alias' in ~/.b/fre/ashrc:

alias upmuo='rsync -e ssh -z -t -r -vv --progress/home/tom/web/muo/rsmuo/docs muo:/www/mandrakeuser/docs'

 Now all I have to do to upload my stuff is to type upmuo.

The syntax for defining an alias is:

alias shortcut='command'

The quotes are necessary when the command contains empty spaces (e.g. betweencommand and option). Notice that you either quote using single quotes or using doublequotes. If you've got a hitch that there's a difference between those two, then you areright ;-).

Single quotes strip the special meaning from all characters included, double quotes fromall characters except for '$' (parameter substitution) and '`' (command substitution). Whichmeans in order to use variables or command substitution in aliases, you have to use

Page 29: Comandos Linux Completo

5/14/2018 Comandos Linux Completo - slidepdf.com

http://slidepdf.com/reader/full/comandos-linux-completo 29/33

 

double quotes. If you look at the example above, I could define a variable calledMUOHOME in .bashrc:

export MUOHOME=$HOME/web/muo/rsmuo/docs

To use that variable in the alias above, I would have to use double quotes:alias upmuo="rsync -e ssh -z -t -r -vv ––progress $MUOHOMEmuo:/www/mandrakeuser/docs"

 because otherwise the alias would search for an directory or file called $MUOHOME .

You can create aliases 'on the fly' with the alias command on the command line, or listthem in ~/.bashrc (per user), or in /etc/profile.d/alias.sh (for every user and 'root'), in pre-8 Mandrake Linux releases, /etc/bashrc fulfills that function. Todelete an alias, simply type: unalias alias. Just running alias will list all the

defined aliases on your system.

If you have a look at ~/.bashrc and /etc/profile.d/alias.sh, you'll see thatthere are already some aliases defined. You can define more than one alias for the samecommand. Of course, you must make sure that your alias isn't the name of some other 

 program, something like alias rm='ls -l' won't work. You can try this by typing theshortcut you want to use on the command line. If the shell can't find a command with thisname, you can use it as an alias.

Some aliases that might be useful (don't forget the quotes1.1 ):

• alias rpmq='rpm -qa | grep': Now rpmq string will list all installed RPMswhich contain string in their name.

• alias ls='ls -ho ––color | more': ls will now print a colored and paged listing withfile sizes in KB.

• alias use='du ––max-depth=1 | sort -n | more': use gives you a paged list of subdirectory sizes ordered by size.

• alias dkd='cd /usr/src/linux/Documentation': Frequently used directories can bealiased as well. Other prospective candidates are for example the subdirectories of '/mnt'.

Aliased directories may also be on removable media: aliasdlm='/mnt/cdrom/Mandrake/RPMS/'.

One mnemonic hint: try to start aliases with a similar function always with the sameletter. For instance, begin all your directory aliases with a 'd'.

I am sure you will find lots of possibilities for using this feature.

Shell Functions

Writing shell functions already boarders on the topic of shell scripting, which is beyondthe scope of this article (and mine ;-)). In fact, shell functions are shell scripts, but they

Page 30: Comandos Linux Completo

5/14/2018 Comandos Linux Completo - slidepdf.com

http://slidepdf.com/reader/full/comandos-linux-completo 30/33

 

have the advantage of being preloaded and being executed in the same shell (whereas ashell script opens at least one sub-shell).

With shell functions, you can do a lot of things you can't do with aliases. One example:

function apros() { apropos $1 | egrep -v '(3|\(n\)'; }

This defines a new command, called 'apros'. apros name will execute 'apropos name'(i.e. a search command for man pages) and pipe (|) the output of that command through'egrep' which filters out all man pages from sections '3' and 'n', which usually are not of interest, but tend to mess up the output of the apropos command.

Functions allow you to use arguments given to the function name at any place of the

function command. With aliases, only one argument is allowed and that argument has to be at the end of the command line (like in the 'rpmq' alias above).

'$1' is a so-called 'positional parameter', it's a placeholder for the first argument given tothe function. Of course there are more.

function apros() { apropos $1 | egrep -v "\($2"; }

If you now run the apros command like this:

apros name man_section_number

it searches for name, but excludes all man pages from man_section_number:

apros menu 3

returns all man page titles which contain 'menu', except those from section 3(programming). Notice that you have to quote twice and that you have to use doublequotes:

• You must quote the 'egrep' search pattern in order to protect it from the shell.• You must use double quotes to get the second positional parameter interpreted

correctly.• You must quote the round bracket again in order to tell 'egrep' to take it literally

and not as a special control character .

Tricky, ain't it? ;-).

Shell functions are handled just like aliases: put them into your .bashrc to have themaround permanently.

A dónde ir desde aquí 

Page 31: Comandos Linux Completo

5/14/2018 Comandos Linux Completo - slidepdf.com

http://slidepdf.com/reader/full/comandos-linux-completo 31/33

 

Este artículo es sólo el comienzo. La programación de scripts en Shell le puede ayudar aautomatizar muchas tareas, a corregir usted mismo errores en scripts de otros y a

 personalizar su sistema Mandriva Linux a gusto en (casi) todo aspecto. Si planea aprender alguno de los lenguajes de programación más complejos que existen, la programación enshell es un buen lugar para comenzar debido a que los conceptos básicos son similares.

El cómo en inglés BASH Programming - Introduction HOW-TO explicará en mayor  profundidad los tópicos abordados en este artículo y lo introducirá en el mundo de la programación shell. Puede continuar con la muy recomendable, y también libre, Guíaavanzada de programación en Bash (en inglés).

Si prefiere libros, le podemos recomendar Teach Yourself Shell Programming de S.Veeraraghavan, de Publicaciones Sams. También está Learning the Bash Shell de

 Newham/Rosenblatt, de la editorial O'Reilly.

Además de todo esto, practique, practique y practique. Lea programas de shell de otros e

intente comprender lo que hacen, cómo y porqué. Un consejo importante: no ejecute sus programas bash como 'root' :D.

Preguntas frecuentes de Shell (FAQ)

¿Cómo apago ese &\*# pitido?

Con este comando:

 

[usuario@computadora ~]$ setterm -blength 0

¿Por qué obtengo "bash: command: command not found"?

Si no es un error de tipeo, lo mas probable es que el comando que esté intentando ejecutar se encuentre en un directorio que no es parte de su $PATH. Entregue la ruta completa alcomando. Si está en el mismo directorio que el comando, escriba ./command.

¿Por qué me aparece "bash: command: Permission denied"?

Para que un archivo sea ejecutable, los [permisos | BasicsBpermis] de ejecución debenestar configurados para el usuario que quiera ejecutar el archivo. Escriba:

[usuario@computadora ~]$ chmod 755 archivo

Si eso no funciona, lea el artículo sobre permisos.

El bit de ejecución está habilidato, tengo permisos de ejecución pero el permiso es denegado, ¿por

qué?

Page 32: Comandos Linux Completo

5/14/2018 Comandos Linux Completo - slidepdf.com

http://slidepdf.com/reader/full/comandos-linux-completo 32/33

 

Chequea en '/etc/fstab' la entrada de la partición donde está el archivo. Asegúrate de queno contienen la opción 'noexec'. Si contiene la opción 'user', la opción 'exec' debe ser habilitada también.

¿Cómo cambio los colores de listado de archivos?

Copie '/etc/DIR_COLORS' a su directorio home y renómbrelo a '.dir_colors'. Todo lo quenecesita está en ese archivo.

He puesto un script 'foo' en mi directorio ~/bin, pero cada vez que intento ejecutarlo, un comandodistinto, también llamado 'foo', es iniciado. ¿Por qué?

Eche una mirada a su $PATH y verá que su directorio personal ~/bin es el último o almenos muy cerca del final de $PATH. La shell buscará los directorios listados en $PATHuno tras otro. Tan pronto como encuentre el primer comando que calce, ejecutará esecomando. Si hay un comando en su sistema con el mismo nombre que el script, ese

comando será ejecutado, no su script. Renombre su script.

¿Qué significa "bash: command: bad interpreter"?

Esto sucede usualmente con binarios de instalación de terceros o aplicaciones Java. Estasaplicaciones necesitan una shell propia, así que en vez de

[usuario@computadora ~]$ command 

usted tiene que ejecutar 

[usuario@computadora ~]$ sh command 

Mi terminal se congela cada vez que presiono "<CTRL s>"

Entonces no lo hagas! ;9. CTRL s envía un comando de bloqueo de desplazamiento al

terminal. Para desbloquearlo, sólo presione CTRL q.

Related Resources

Jerry Peek: 'Why Use a Command Line Instead of Windows?'Eric S. Raymond: 'A Brief History of Hackerdom'Text-Terminal-HOWTO~MdkRef. 3,3~MdkRef. 3,4Filename Expansion~MdkRef, 3.5

Page 33: Comandos Linux Completo

5/14/2018 Comandos Linux Completo - slidepdf.com

http://slidepdf.com/reader/full/comandos-linux-completo 33/33

 

Revision / Modified: Mark_1830 08:00, 13 July 2009 (UTC)Revision / Modified: Feb. 28, 2002Author: Tom Berger 

Other resources

• How to copy files and folders with the 'cp' command• How to move files and folders with the 'mv' command• Searching Text Files With 'grep' • Some tips for the shell history• How to customize 'ls' output