jueves, 24 de octubre de 2013

Los 16 comandos del shell de Linux que todos los usuarios de escritorios Linux deberían conocer

Algunas personas aún tienen la absurda creencia de que, para usar Linux, es obligado conocer la sintaxis y los comandos del shell de Linux como la palma de la mano. Bobadas. Con cualquier distribución de escritorio Linux moderna, usar comandos de Linux como ps, grep o  ls es igual de necesario que utilizar comandos de DOS en Windows.
Con la salvedad, naturalmente (al igual que en Windows), de que en ocasiones resulta de gran ayuda utilizar las fantásticas instrucciones de línea de comandos de ASCII.
El 99% de las veces los usuarios de escritorios Linux no tienen ningún problema con entornos como Cinnamon, GNOME, Unity o KDE, aunque en el caso de los administradores de sistemas, la realidad es algo distinta, ya que los administradores de sistemas Linux utilizan comandos de shell todo el tiempo.
No obstante, muy de vez en cuando es útil tener algunas nociones básicas sobre comandos de Linux, de modo que esto es lo que necesitas saber.
Principios básicos del shell
Para tener un shell de Linux necesitas iniciar una terminal, la cual a su vez ejecuta un shell de comandos de Linux. Existen muchos shells de este tipo, entre ellos el C shell (csh), el Bourne shell (sh) o el Korn shell (ksh). En la mayoría de las distribuciones Linux actuales el shell predeterminado es el Bourne again shell (bash) (haciendo un juego de palabras sobre el Bourne shell, uno de los primeros intérpretes de Unix, ya que en inglés “born again” significa “renacido”).
Para ver qué shell tienes, ejecuta el comando siguiente:
echo $SHELL
En Linux, el símbolo del dólar ($) representa una variable del shell. Se trata de variables que el shell, o cualquier programa del shell, puede utilizar. Algunas de ellas están establecidas por defecto al iniciar el PC Linux. Por ejemplo, $SHELL$LOGNAME es tu nombre de inicio de sesión, y $PATH identifica los directorios en los que tu shell busca los comandos.
El comando echo devuelve cualquier cosa que escribas. Si lo que escribes tiene algún significado concreto para el shell, como por ejemplo una variable del shell, te devolverá el valor de la variable.

El shell utilizado es importante, tanto para los usuarios expertos como para cualquiera que escriba secuencias de comandos de shell. En el caso de un usuario de escritorio Linux que necesite acudir al shell solo esporádicamente, en realidad no importa mucho.
Lo verdaderamente importante es utilizar las mayúsculas y minúsculas correctas del texto. Por ejemplo,ls, versión de Linux del comando dir de MS-DOS, proporciona un listado de los archivos del directorio de trabajo actual, mientras que ls simplemente proporciona un mensaje de error de “comando no encontrado”.
Otro aspecto importante del shell de Linux es la posibilidad de encadenar los comandos, una de las características más ingeniosas de Unix/Linux desde sus comienzos. La forma más sencilla de encadenar comandos es mediante la barra vertical o “tubería”, que en el teclado suele estar ubicada al lado de la barra invertida. La tubería asigna la salida del primer comando a la entrada del comando siguiente.
Los comandos de Linux tienen su propia sintaxis, igual que la gramática que intentaste aprender en la escuela en tu asignatura de lengua. Sin embargo, a diferencia de tu profesor de lengua, Linux no tiene compasión alguna con los errores. Si escribes mal un comando, no suspenderás ni estropearás nada, pero no funcionará.
La sintaxis básica es:
comando –opción archivo
De modo que, por ejemplo:
ls -la
indica la versión “larga” de “todos” los nombres de los archivos de los directorios de trabajo actuales.
No obstante, esto podría dar lugar a una interminable retahíla de archivos en la pantalla, por lo que es una buena ocasión para utilizar las tuberías:
ls -la | more
De este modo, el comando more hace que la secuencia de archivos y directorios se visualice en una pantalla de cada vez.

La mayoría de los comandos de Linux también pueden usarse con comodines, caracteres que representan caracteres desconocidos de los nombres de archivo. Por ejemplo, se puede usar el comodín * para representar cualquier cadena de caracteres. El asterisco (*) equivale a cualquier número de caracteres, mientras que el signo de interrogación (?) equivale a un solo carácter. De modo que, por ejemplo:
ls -l a*
devuelve la versión larga de los archivos y directorios existentes en el directorio de trabajo actual cuyos nombres comienzan por a minúscula: abc.txt, alphabetsoup.jpg, albatross.zip. El comando
ls a?cd
devuelve todos los nombres de archivos y directorios que empiezan por una a seguida de cualquier otro carácter, y cuyos dos últimos caracteres sean cd: abcd, axcd (pero no albatrosscd).
¿Me sigues hasta aquí? Pues vamos con los comandos.
Los mejores comandos
man: Si quieres saber lo que hace cada comando, utiliza el comando man (manual). Por ejemplo:
man ls
muestra la información relativa al comando de listado del contenido de directorios.
Las páginas de man fueron escritas para técnicos por desarrolladores y administradores de sistemas, por lo que pueden resultar un poco densas. Por tanto, si te vuelves loco para entender la información de man, echa un vistazo al artículo 30 Best Sources For Linux / *BSD / Unix Documentation On the Web (Las mejores 30 fuentes de documentación de Linux/*BSD/Unix de la Web), que enlaza con la documentación web relativa a las distribuciones Linux más importantes, a menudo más fácil de comprender que las páginas de man. Otro recurso práctico es el libro Linux Pocket Guide de Daniel Barrett.
Hace tiempo se creía que, si de verdad se quería aprender Linux y Unix, era necesario leer las páginas de man. En 2012, con todas las interfaces gráficas de usuario disponibles, esto ha dejado de ser cierto, pero si realmente se quiere comprender los entresijos de Linux, las páginas de man continúan siendo un excelente punto de partida.
su y sudo: El comando su (del inglés “switch user”, cambiar usuario) te permite iniciar sesión como un usuario diferente. Suele conocerse también como “superusuario”, ya que en algunos sistemas te permite iniciar sesión como todopoderoso usuario raíz del sistema. Dado que las probabilidades de causar problemas son bastante elevadas, recomiendo no utilizar nunca este comando para acceder como usuario raíz a menos a seas el administrador del sistema.
En estos casos es mucho más seguro utilizar el comando sudo, que permite ejecutar otro comando como si fueses el usuario raíz.
En ambos casos, necesitas la contraseña del sistema. En la mayoría de las distribuciones de escritorio Linux, esta contraseña es la misma que la asignada al primer usuario. Y es que asignaste una contraseña cuando instalaste por primera vez el sistema, ¿verdad?
grep: Este comando permite buscar en líneas conjuntos de datos de texto sin formato que se correspondan con una expresión regular. Por tanto, constituye una herramienta fundamental para cualquier usuario de secuencias de comandos o shell de Linux. Por ejemplo:
grep foo /etc/passwd
devuelve cualquier línea del archivo de contraseña que contenga la cadena “foo”, mientras que
grep -i "foo" /etc/passwd
busca cualquier línea del archivo de contraseña que tenga alguna variación de “foo”, como “FOO” o “fOo”.
El comando grep también puede usarse para buscar de forma recurrente, es decir, para leer todos los archivos de cada directorio en busca de la cadena “foo”:
grep -r "foo" /home/sjvn
Asimismo, se utiliza también a menudo con el comando de tubería para buscar cadenas específicas de la salida de otro comando. De este modo:
ls -la | grep foo*
muestra cualquier archivo o directorio que hubiese sido encontrado porls y cuyo nombre empezara por “foo”. Si los archivos con los nombres foo, foobar y foolish estuvieran en el directorio de trabajo actual, este grupo de comandos emparejados los mostraría.
Las expresiones regulares permiten hacer muchas cosas a nivel básico, y esconden también un enorme potencial cuando se les presta la debida atención a un nivel más avanzado. Para obtener más información sobre ellas y saber cómo usarlas, visita el sitio web Regular-Expressions.info.
ps: Informa sobre el estado de los procesos e indica qué programas se están ejecutando actualmente. Junto con grep, este es el comando que yo suelo utilizar más a menudo.
Supongamos que tienes un programa que no está funcionando como es debido y no puedes desactivarlo desde el escritorio. (Sí, me refiero a ti, Firefox). Entonces ejecuto:
ps -ef | grep firefox
Este comando hace lo siguiente:
  • En primer lugar, busca todos los programas que se están ejecutando en mi PC en este momento.
  • A continuación, selecciona los archivos que contienen “firefox” y los muestra en mi monitor.
  • Cada línea incluye también el número de ID del proceso. Y con todo esto, ahora puedo utilizar…
kill: Un comando cuyo nombre habla por sí solo, ya que aniquila el susodicho proceso de Firefox o cualquier otro proceso que desee eliminar. Por ejemplo:
kill 1234
acabaría con cualquier programa que tenga el ID de proceso 1234. Y para asegurarme totalmente de que el programa está liquidado, muerto y enterrado, usaría el comando:
kill -9 1234
La marca -9 equivale a liquidar con perjuicio extremo en el ámbito de comandos de Linux.
clear: ¿Tienes demasiadas cosas en la pantalla de tu terminal? Solo tienes que ejecutar clear y desaparecerá todo. Y si luego necesitas buscar la información que has borrado de la pantalla, utiliza las teclas de flecha arriba y abajo para recuperar del historial los comandos recientemente emitidos y volver a ejecutarlos según sea necesario.
Comandos de directorios
cp: Significa “copiar” y hace exactamente lo que uno se imagina: copia uno o más archivos con un nombre diferente o en un directorio distinto. He aquí algunos de los usos más habituales:
cp fred.txt ethel.txt
Copia el archivo fred.txt en el mismo directorio actual, asignándole el nuevo nombre ethel.txt.
cp fred.txt /home/sjvn/docs/fred.txt
Copia fred.txt en el directorio /home/sjvn/docs.
cp *.txt  /home/sjvn/docs/
Copia todos los archivos que terminan en .txt en el directorio /home/sjvn/docs/.
cp -r /home/sjvn/docs/* /home/sjvn/backup
Copia todos los archivos, directorios y subdirectorios del directorio /home/sjvn/docs en el directorio /home/sjvn/backup.
hostname: Nombre del ordenador en el que has iniciado sesión actualmente. En un sistema de escritorio, el 99% de las veces se corresponde con tu PC.
mv: Significa “mover” y funciona igual que cp, excepto por el hecho de que los archivos se mueven de una ubicación a otra o se cambia su nombre. De modo que si escribo:
mv fred.txt ethel.txt
en lugar de tener dos archivos, fred.txt y ethel.txt (tal como sucedía en el ejemplo del comando cp), tendría únicamente el archivo ethel.txt después de moverlo.
pwd: Visualiza e imprime el directorio de trabajo actual. Saber dónde te encuentras siempre es importante en el territorio Linux.
rm: Significa “quitar” y es el equivalente a eliminar en Linux. De modo que si ejecuto:
rm fred.txt
eliminaré definitivamente fred.txt.
Recomiendo encarecidamente ejecutar el comando rm con la marca interactiva -i. Ello hace que el programa te pregunte si realmente deseas eliminar un archivo antes de quitarlo. De modo que pondría:
rm -i fred.txt
por si escribo mal el nombre del archivo, o peor aún, por si utilizo un comodín de forma incorrecta. En Linux, recuperar archivos eliminados suele ser una odisea.
Información del sistema
uname: Este comando proporciona información básica del PC resumida en una línea. Suele incluir el nombre del equipo, el kernel de Linux que se está ejecutando, la arquitectura del sistema y el nombre de la distribución.

Para obtener información más detallada, utiliza el comando cat, que muestra información de texto con los recursos del sistema de tu PC Linux. Los más útiles son los siguientes:
cat /proc/cpuinfo: Muestra las estadísticas críticas de tu CPU.
cat /proc/version: Muestra más detalles sobre la distribución de Linux que se está ejecutando actualmente.
cat /etc/printcap: Muestra todas las impresoras instaladas actualmente.
set | more: El emparejamiento de los comandos set | more te proporciona más, probablemente mucha más información de la que jamás has querido tener sobre tu entorno de escritorio actual. De modo que, si lo único que quieres es informarte sobre uno o dos elementos del entorno del sistema, te aconsejo que ejecutes un comando como:
echo $PATH
que muestra los directorios en los que tu sistema busca los archivos ejecutables.
El final, o más bien el principio
Todo lo que he mostrado aquí representa únicamente la punta del iceberg de los comandos de Linux. Existen cientos de libros y sitios web que ofrecen información mucho más amplia sobre cómo usar los comandos, por sí solos o en programas de shell. El objetivo de este artículo es proporcionar la ayuda suficiente necesaria para obtener una información del sistema más detallada que la ofrecida por la interfaz gráfica de usuario.
Si deseas saber más, puedes visitar las páginas LinuxCommand.org o Linux in a Nutshell. Y si lo que quieres es convertirte en un mago de la programación shell de Linux, te recomiendo empezar con el libro Learning the bash Shell de Cameron Newham.



Fuente:  http://h30565.www3.hp.com/t5/Destacado/Los-16-comandos-del-shell-de-Linux-que-todos-los-usuarios-de/ba-p/7768?profile.language=es
Related Posts Plugin for WordPress, Blogger...