miércoles, 3 de junio de 2009

Buscar Archivos (1)

Utilizando algunas caracteristicas del shell

Primero veremos como podemos manipular varios archivos de una sola vez, de modo que la consola interprete los requerimientos entre corchetes "[ ]" y substitya la expresión contenida por los archivos correspondientes. Por ejemplo, al indicar un rango de numeros, o al sustituir los caracteres por un asterisco.


Todas las sustituciónes pueden realizarse simultaneamente; la consola Bash, por ejemplo, no tiene problemas con expresiones como ls dirname/*/*/*[2-3].

El asterisco es usado comunmente para minimizar el esfuerzo de tipeo: por ejemplo, se puedeutilizar $ cd dir* en lugar de $ cd directory. En bash, no es necesario porque las consolas GNU tienen una caracteristica llamada completar nombre de archivo. Esto quiere decir, que uno puede tipear los primeros caracteres de un comando o un archivo y el shell encontrara y sugerira que significa. Por ejemplo, en un directorio conteniendo varios archivos, uno puede tipear $ ls A y presionando la tecla [TAB] dos veces en lugar de [ENTER]. Si solo hay un archivo que comience con la letra "A", este sera mostrado como argumento del comando lsinmediatamente.


El comando Which

Una manera simple de buscar archivos es utilizar el comando which para buscar en los directorios listados en el PATH del usuario. Se recuerda que el PATH contiene
los directorios de busqueda que contienen programas ejecutables, por lo que which no funcionara con archivos ordinarios. El comando which es util a la hora de solucional problemas del tipo "command not found". En el ejemplo debajo, el usuario tina no puede usar el programa acroread, mientras que su colega si puede. El colega de tina le dice que puede ver el programa en el directorio /opt/acroread/bin, pero este no esta en su PATH.

tina:~> which acroread
/usr/bin/which: no acroread in (/bin:/usr/bin:/usr/bin/X11)

El problema puede ser resuelto dandole el path completo al ejecutar el programa o agregar el directorio al PATH de tina exportandoesta variable:

tina:~> export PATH=$PATH:/opt/acroread/bin
tina:~> echo $PATH
/bin:/usr/bin:/usr/bin/X11:/opt/acroread/bin

Usando el comando which podemos comprobar si un comando es un alias de otro comando:



gerrit:~> which -a ls
ls is aliased to `ls -F --color=auto'
ls is /bin/ls

No hay comentarios: