Académique Documents
Professionnel Documents
Culture Documents
[ocultar]
1 Utilizando el Shell o 1.1 La herramienta definitiva y la ms poderosa o 1.2 Terminales, Xterms 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 vaco 1.5.3 Agregar una linea al final de un archivo sin eliminar su contenido 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 paginacin 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 algn 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-Completacin 1.6.2 Histrico de comandos 1.6.3 Edicin 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 Redireccin de salida 1.8.4 Redireccionando entre dos o ms comandos 1.8.5 Redireccin desde o hacia archivos o 1.9 Using The Shell VI 1.9.1 Archivos de configuracin bash
1.9.2 The Prompt 1.9.3 Modificar $PATH 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 dnde ir desde aqu 1.10.4 Preguntas frecuentes de Shell (FAQ) 1.10.4.1 Cmo 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 ejecucin est habilidato, tengo permisos de ejecucin pero el permiso es denegado, por qu? 1.10.4.5 Cmo 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, tambin 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
Utilizando el Shell
La herramienta definitiva y la ms poderosa
Alguna vez habr escuchado la letana 'la linea de comandos, esta fuera de moda', 'es arcaica' y cosas similares. Ademas que las personas y los sistemas operativos deberan de evitarla. 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 grfico(X) y apagarlo desde ah. Puede utilizar el Centro de Control Mandriva y Webmin para configurar cada uno de los aspectos de su sistema. Sin embargo, es nuestra conviccin, que utilizar Linux sin usar el shell es como manejar su carro solo en la primera velocidad. Por supuesto, es ms fcil y eventualmente llegar a donde usted quiere, pero es lento y le quita la diversin de conducir. Y desde luego: la linea de comandos es divertida. Es como la ms grande coleccin de bloques para construccin jamas vista. Y estos bloques pueden realizar las cosas ms asombrosas e incluso pueden cooperar entre ellos, pudiendo hacer las tareas ms complejas 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 programacin bastante completo.
Eso no significa que el aprendizaje del shell sea fcil. Bien, pero hay que aprender que espera?. ;-) Cranos que es muy gratificante y usted sera reconocido como un mago de la computacin por los extraos, en un periodo relativamente corto. *grin* Para tener una idea de que es un shell, un poco de informacin previa podra serle til.
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 a las maquinas por medio de terminales 'tontas', esto es maquinas que consisten de un teclado, un monitor y lo suficiente para mantener una conexin a la computadora central. Lo que hacan los usuarios en esta terminales bsicamente era Teclear Remotamente (TeleTYping), de ah surge 'tty' para los archivos de dispositivo de las terminales o el nombre del comando 'getty'.
Podr preguntarse que tiene que ver esto con el tema?. Bien, los proveedores de esas terminales no se ponan de acuerdo sobre un estandard . Esto es, cada marca de terminal tenia su propia distribucin de teclado, su propio mtodo de mostrar los caracteres en la pantalla, su propia idea de lo que caracteres o cdigos de control representaban las seales que enviaban y reciban, y cosas as. Para poder hacer frente a todo ese caos, se creo un archivo central que contena todas las diferentes y distintas capacidades de las terminales -- termcap. Abra /etc/termcap en un editor de texto y asmbrese (o asustese ;-)). En su mayora 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 a la actual sesin grfica (vea ms 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 grfico para Unix. En lo aos 90, se desarroll el entonces incipiente XFree86, un fork de este sistema con el fin de escribir una versin ms estable para el procesador Intel, basado en los clones de Unix, tales como, FreeBSD, NetBSD o Linux. Ms tarde, se desarroll el fork de XFree86, llamado X.org. X.org es por ahora el sistema grfico por defecto de Mandriva. El primer y mas importante uso de X, es la posibilidad de ejecutar mltiples terminales 'virtuales'. De hecho, el sistema X viene con el aplicativo, xterm. Por lo tanto, usted encontrar que la palabra 'xterm' y la frase 'terminal virual', se utilizan a menudo como sinnimos. Al leer la frase 'abrir un xterm', esto no quiere decir que usted debe instalar y usar el programa llamado xterm, si no que tambin puede ser cualquier otro programa emulador de terminales, como por ejemplo rxvt, konsole, aterm, eterm, wterm, etc. Un emulador d terminales --este es otro nombre para 'terminal virtual'-- se conecta al sistema a travs de un archivo de dispositivo de un pseudo tty y utiliza su propio estndar de pantalla. Esto podra llevar a un comportamiento ligeramente distinto de algunas teclas o de aplicaciones en los distintos emuladores de terminal, esto depende de lo bien que los emuladores hagan lo propio en cuanto al estndar de la pantalla xterm. En Mandriva, se puede tener acceso a estos emuladores a travs de KDE men principal -> Sistema -> Terminales. Son archivos especiales ubicados en /dev/pts ('pts' = 'Pseudo-TerminaleS'): /dev/pts/1, /dev/pts2 etc. Shells
Con el fin de ejecutar programas en una terminal, un Shell es necesario. Ya que un Shell es la parte de un sistema operativo que se comunica con el usuario y permite su comunicacin por medio de los comandos. La primera Shell 'real' de Unix, sh, fue escrita alrededor de 1975 por Steve Bourne y es tambin llamado el "Bourne Shell". Pronto, surgieron otros desarrollos, algunos basados en el original "Bourne Shell" como (pd)ksh o zsh, que a menudo se utilizaban como estndar de la Shell de los Unix propietarios o las Shells que se implementaron con caractersticas del lenguaje de programacin 'C', como csh o tcsh. En Linux, el Shell estndar es 'bash', el GNU Bourne-Again Shell (bueno, es parte del humor UNIX ...). Es muy poderoso (demasiado diran algunos).
Tngalo en cuenta! En primer lugar, usted no debe utilizar la consola como 'root' para las tareas diarias, sobre todo si se est empezando a usarla. No se puede daar el sistema accidentalmente (o intencionadamente) cuando se utiliza un shell con permisos de usuario normal, sin embargo, con permisos de root, un error simple puede tener consecuencias imprevistas y graves. Lo primero que aparece despus de acceder o abrir una ventana xterm es el smbolo del sistema. El estandar del prompt --Smbolo del sistema-- de Mandriva Linux consiste en el nombre del usuario, el nombre de la maquina en la que usted se ha autenticado --Si no se ha proporcionado ninguno, se utilizar "localhost"--, el directorio donde usted se encuentra --el "directorio de trabajo actual"-- y el smbolo del sistema:
[tom@belbo tom]$
En el ejemplo anterior, estoy registrado como el usuario "Tom", en una mquina que he llamado "Belbo" y estoy en mi directorio home, "/home/tom". El smbolo del sistema del 'root', se vera como este:
[root@belbo root]#
Notese que, aparte del nombre, el signo del sistema tambin ha cambiado de un '$' a un '#'. Es una tradicin en las Shells Bourne, que al final del smbolo del sistema de un usuario normal tenga un '$' y al final del smbolo del sistema de un usuario root's, tenga un '#'. Cada aspecto del sistema es personalizable. Ms 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 bsqueda o $PATH (hablaremos ms sobre esto, ms adelante), ejecuta el comando, imprime la salida del
comando en la terminal --si es que as debe proceder-- y presenta de nuevo el smbolo del sistema --prompt-- cuando el comando termina de hacer su trabajo:
[tom@belbo tom]$ whoami tom [tom@belbo tom]$
Por cierto, no importa donde est el cursor cuando se pulse la tecla <<ENTER>>, el shell siempre leer la lnea completa. Los comandos basicos son ls (lista los archivos y directorios de la actual ubicacin), cp (copia), {prog|mv}} (mueve / renombra), cd (cambia de directorio), cada uno viene con una gran cantidad de opciones que usted puede consultar en su respectiva pgina de manual, haciendo (man ls, man mv, etc). Cuando usted pulse <<TAB>>, a continuacin 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 caracteres digitados. Antes de introducirse en la tierra de la shell, se le dar una breve introduccin a la terminologa. Los comandos capturan opciones y/o argumentos:
Usando el Editor de linea de comando (shell) II: Los primeros comandos para experimentar con la shell
Si usted es un principiante, ahora va a poder divertirse con estos primeros comandos.
Presione simultneamente las teclas Alt+Ctrl+Fn (Fn puede ser una tecla entre F1 a F6): usted puede volver a su entorno grfico clsico presionando Alt-F7
Tenga cuidado de no iniciar la sesin como 'root', sino mas bien como un usuario normal.
El comando pwd muestra el directorio de trabajo (llamado algunas veces el directorio actual).
Si file_name es un archivo existente, solo la fecha y la hora se cambiarn. El contenido no ser modificado.
Con la combinacin entre el comando echo y el operador de redireccin(en:BasicsBshell4) ">>" (tenga cuidado de no confundir con '>', descrito mas adelante):
Reemplazar el contenido de un archivo existente con otro contenido o crear un archivo con un contenido especifico
Similar al comando anterior, pero utilizando el [operador de redireccin| BasicsBshell4] '>' esta vez:
El comando cp file1 file2 crea el archivo file2 copiando el contenido del archivo file1 dentro de l.
El comando ls -l lista el contenido del directorio de trabajo. El comando ls -la lista el contenido del directorio de trabajo e incluye los archivos ocultos. El comando ls -l dir lista el contenido del directorio llamado "dir".
Desplazarse
Limpiar
El comando mkdir directory crea el directorio "directory". El comando rmdir directory elimina el directorio vacio "directory".
El comando grep texto_a_encontrar file_name busca el texto en el archivo file_name. El comando grep -i texto_a_encontrar file_name hace lo mismo, pero no distingue entre maysculas y minsculas.
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.
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.
El comando su - es como un interruptor para el modo de administrador, es decir, con este comando usted se convertir en "root" (tenga cuidado: no se quede como root experimentando con todos estos comandos. Rpidamente podra ocurrir un trgico error!). El comando exit lo trae de vuelta a su identidad anterior.
Auto-Completacin Cul es el modo ms rpido desde tu directorio home, suponiendo que es tu directorio actual de trabajo, al directorio /usr/src/linux/Documentation/isdn/ usando el comando cd ('cambiar directorio')? Pues es
A esto se le llama 'completacin automtica de lnea de comandos' y es indispensable. Repasemos ms detenidamente el ejemplo:
Puede ser que no est seguro de si es /usr/src/linux/Documentation o /usr/src/linux/documentation . Como sabr, Linux distingue entre minsculas y maysculas. Si ha ledo con atencin hasta aqu, seguro que ya sabe la respuesta:
CTRL + k: borra ('kill') desde la posicin del cursor hasta el final de lnea CTRL + u: borra desde la posicin del cursor hasta el inicio de lnea ALT + d: borra desde la posicin del cursor hasta el final de la 'palabra' actual CTRL + w: borra desde la posicin del cursor hasta el inicio de la 'palabra' actual CTRL + a: mueve el cursor hasta la primera letra de la lnea CTRL + e: mueve el cursor hasta el final de la lnea 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 mkdir peter/pan/documents/tinkerbell. Ahora quieres entrar en dicho directorio usando cd. En vez de teclearlo todo, puede poner
[usuario@computadora ~]$ cd !$
y el shell aadir la ruta del directorio tomndola del comando mkdir previo y ponindola en el comando cd actual. Conforme se vaya adentrando en el mundo de Linux, ver que estos atajos de teclado se usan 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 caractersticas nativas del bash, otros son pre-configurados (mas adelante aprender ms, acerca de cmo configurar sus propios atajos). El directorio "home" es el punto focal para la actividad de cada usuario, muchos sistemas Unix 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 algn directorio lejano y necesita copiar un archivo llamado "alguntexto", a n directorio llamado "documentos", alojado a su vez dentro del directorio "home". En lugar de escribir "cp alguntexto /home/myusername/documentos", usted puede escribir "cp alguntexto ~/documentos" que es mucho ms corto, pero tiene exactamente el mismo efecto. En teora, esto tambin se aplica al comando cd. Pero realmente esto tambin se considera demasiado largo, de manera que si usted escribe solamente cd, esto le llevar a su directorio principal, sin importar donde est. Mandriva Linux provee una serie de atajos ya preconfiguras (llamados 'alias'):
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 tamao de los archivos en KB y no en bytes) ls ejecuta 'ls -F color=auto' (lista directorios, aade 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 (vaco)) s ejecuta 'cd ..' (para ir al directorio padre)
Ahora que usted est un poco ms familiarizado con la shell y algunos de los atajos que ofrece, es hora de echar un vistazo a lo que realmente puede hacer con ella, adems de la ejecucin 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 lnea para poder dedicarse a otra cosa. La shell lo permite, mediante el uso de ciertos caracteres entre comandos para hacer una cola de comandos. Esta seccin introduce dos de los ms importantes. Ntese que tendr que usar espacios en blancos por simplicidad y claridad, aunque en la vida real no hagan falta. Por ejemplo, no hay diferencia entre ls -a ; du -hs y ls -a;du -hs.
[usuario@computadora ~]$ make dep && make clean && make bzImage && make modules && make modules_install && make install
Esto compilar el kernel y sus mdulos, y los instalar sin que haga falta ninguna interaccin. Command Jobbing Cuando ejecuta comandos o inicia un programa desde terminal, la terminal se bloquea mientras el comando o programa este ejecutndose. En Unix, se dice que el comando o programa esta ejecutndose en 'primer plano' ('foreground'). Si necesita la terminal para ejecutar otro comando, deber abrir una nueva terminal. Pero existe una forma ms elegante de hacerlo, llamada 'jobbing' o 'ejecutar en segundo plano' ('backgrounding'). Cuando realiza esto un comando liberara la
terminalinmediatamente, y as la terminal puede ser usada nuevamente. Para hacerlo solo agregue un "&" (ampersand) despues del comando:
[usuario@computadora ~]$ gqview (press "CTRL z") [1] Terminated gqview [2]+ Stopped gqview<
Luego
Tenga en cuenta que hay situaciones en la que iniciar una aplicacin grafica desde una terminal en primer plano es til. De esa forma los mensajes de error que la aplicacin genere 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), continuan enviando mensajes a la terminal que los controla incluso si estn en segundo plano. Si este comportamiento le molesta, puede evitarlo ejecutando:
'*' matches zero or more characters. In this example, you tell the shell to expand the argument 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, search strings etc) for an argument. Let's play a bit more with the '*' wildcard. You have a directory which contains the files 124.bak, 346.bak and 583.bak. You want to keep 583.bak. What you do is this
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 to expand them, and it will do so before the command. There are several cases in which this can get in your way:
File names with special characters. Assume you have another file in that directory with the name 1.1 56.bak. Try to match it with 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'. These expressions may look strikingly similar to globbing patterns but are in some cases interpreted differently. But in order to enable the command to interpret them in the first place, the shell must be prevented from interpreting them as globbing patterns first:
[usuario@computadora ~]$ find . -name [1-9]* -print find: paths must precede expression
Properly:
[usuario@computadora ~]$ find . -name '[1-9]*' -print ./346.bak ./124.bak ./583.bak ./311.bak~
You can quote such special characters like 1.1 , $, ? or the empty space either with a back slash:
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
El primer comando provee el listado del directorio y el segundo lo despliega de una manera navegable en pantalla. Un ejmplo mas complejo:
[usuario@computadora ~]$ ls
Un caso especial es command 2> archivo. Esto pune slo los mensajes de error en el archivo. Puede ser necesario de cuando en cuando... Otro operador es '>>'. ste agrega la salida a un archivo existente, es decir, no borra el contenido previamente existente.
.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.
Ntese que existe una diferencia entra las dos ltimas: .bash_profile es ledo una vez al comienzo de una sesin, mientras que .bashrc es ledo cada vez que se abre un nuevo terminal (por ejemplo, una nueva ventana de xterm). En una configuracin tradicional se definiran variables como PATH en .bash_profile, y cosas como aliases y funciones en .bashrc. Pero ya que .bash_profile es usualmente preconfigurado para leer el contenido de .bashrc de todas maneras, se podra tambin ahorrar un poco de esfuerzo y poner toda la informacin de configuracin en .bashrc. Estos archivos definen las configuraciones por usuario. Las configuraciones de sistema se almacenan en /etc/profile, /etc/bashrc y en los archivos ubicados en /etc/profile.d. Usted debera preferir el uso de los archivos de configuracin por usuario, ya que su edicin no requiere permisos de 'root', y tambin 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, las configuraciones de usuario prevalecen. The Prompt The prompt is the first thing you see every time you open a console or an xterm. It looks like 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 Unix shortcut for your home directory). Traditionally, the last character is set up to indicate whether you are a user ($) or 'root', in which case it changes to a hash (#). You can set or change your prompt via changing the content of the $PS1 variable. The command
displays the current setting. Available special characters and their meaning are listed in man bash, section PROMPTING. Need some ideas on what might be a better prompt? Well, for starters the default setting isn'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
I've chopped the host- and user name part, since I have no need for it. But I want to see at first 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\\$ "
but who cares about being moderate? :-) You can test various settings on the fly by using the export command e.g.: export PS1="\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 terminal window you open. You may even 'theme' your prompt, i.e. use different colors or make it look like an good ol' 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
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:
Aqu PATH es seteado a su valor actual, representado por $PATH, ms un directorio adicional. Hasta ahora slo se ha intentado setear la variable $PATH para el terminal en el cual se ha 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 entorno local, restringida al terminal en el que defini esa variable. Para definir una variable global que sea reconocida por todos los terminales que abrir en esta sesin, 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 $PATH en este terminal. Note, sin embargo, que el comando 'export' slo setea o cambia las variables para el terminar que est corriendo y en terminales que se inicien despus de que ha sido ejecutado. Los terminales que estn ya abiertos an tendrn 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 adicin de directorios al PATH existente. .bashrc es ejecutado cada vez que abre una nueva shell,
as que si agrega un directorio al PATH en l, ser agregado nuevamente y cada vez que abra un terminal. Esto causa que la variable PATH contenga un nmero siempre creciente de entradas de directorio duplicadas. La ltima parte de este artculo introducir dos mtodos de configuracin, ms avanzados, y un FAQ que trata sobre problemas menores de mensajes de errores de configuracin.
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. between command and option). Notice that you either quote using single quotes or using double quotes. If you've got a hitch that there's a difference between those two, then you are right ;-). Single quotes strip the special meaning from all characters included, double quotes from all characters except for '$' (parameter substitution) and '`' (command substitution). Which means in order to use variables or command substitution in aliases, you have to use
double quotes. If you look at the example above, I could define a variable called MUOHOME 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 $MUOHOME muo:/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 list them 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. To delete 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 that there are already some aliases defined. You can define more than one alias for the same command. 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 the shortcut you want to use on the command line. If the shell can't find a command with this name, 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 RPMs which contain string in their name. alias ls='ls -ho color | more': ls will now print a colored and paged listing with file 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 be aliased as well. Other prospective candidates are for example the subdirectories of '/mnt'.
Aliased directories may also be on removable media: alias dlm='/mnt/cdrom/Mandrake/RPMS/'. One mnemonic hint: try to start aliases with a similar function always with the same letter. 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 beyond the scope of this article (and mine ;-)). In fact, shell functions are shell scripts, but they
have the advantage of being preloaded and being executed in the same shell (whereas a shell 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:
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 to the function. Of course there are more.
function apros() { apropos $1 | egrep -v "\($2"; }
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 double quotes:
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 them around permanently. A dnde ir desde aqu
Este artculo es slo el comienzo. La programacin de scripts en Shell le puede ayudar a automatizar 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 programacin ms complejos que existen, la programacin en shell es un buen lugar para comenzar debido a que los conceptos bsicos son similares. El cmo en ingls BASH Programming - Introduction HOW-TO explicar en mayor profundidad los tpicos abordados en este artculo y lo introducir en el mundo de la programacin shell. Puede continuar con la muy recomendable, y tambin libre, Gua avanzada de programacin en Bash (en ingls). Si prefiere libros, le podemos recomendar Teach Yourself Shell Programming de S. Veeraraghavan, de Publicaciones Sams. Tambin est Learning the Bash Shell de Newham/Rosenblatt, de la editorial O'Reilly. Adems de todo esto, practique, practique y practique. Lea programas de shell de otros e intente comprender lo que hacen, cmo y porqu. Un consejo importante: no ejecute sus programas bash como 'root' :D. Preguntas frecuentes de Shell (FAQ)
Cmo apago ese &\*# pitido?
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 al comando. 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 ejecucin deben estar configurados para el usuario que quiera ejecutar el archivo. Escriba:
Chequea en '/etc/fstab' la entrada de la particin donde est el archivo. Asegrate de que no contienen la opcin 'noexec'. Si contiene la opcin 'user', la opcin 'exec' debe ser habilitada tambin.
Cmo cambio los colores de listado de archivos?
Copie '/etc/DIR_COLORS' a su directorio home y renmbrelo a '.dir_colors'. Todo lo que necesita est en ese archivo.
He puesto un script 'foo' en mi directorio ~/bin, pero cada vez que intento ejecutarlo, un comando distinto, tambin llamado 'foo', es iniciado. Por qu?
Eche una mirada a su $PATH y ver que su directorio personal ~/bin es el ltimo o al menos muy cerca del final de $PATH. La shell buscar los directorios listados en $PATH uno tras otro. Tan pronto como encuentre el primer comando que calce, ejecutar ese comando. 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 instalacin de terceros o aplicaciones Java. Estas aplicaciones necesitan una shell propia, as que en vez de
Entonces no lo hagas! ;9. CTRL s enva un comando de bloqueo de desplazamiento al terminal. Para desbloquearlo, slo 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,4 Filename Expansion ~MdkRef, 3.5
Revision / Modified: Mark_1830 08:00, 13 July 2009 (UTC) Revision / Modified: Feb. 28, 2002 Author: 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