domingo, 4 de marzo de 2012

Curso de Linux - Cap.1

Bueno, a petición popular intentaré hacer un minicurso de como usar un emulador de terminal en Linux sin morir en el intento.
Empezamos por una lista de comandos útiles
pwd -- Nos indica el directorio en el que estamos
cd -- Entrar en un directorio. Si queremos entrar en un directorio dentro del que estamos hacemos cd directorio , pero si queremos escribir una dirección entera empezamos por / (cd /home , por ejemplo)
ls -- Hace un listado de los ficheros y directorios que hay en ese directorio
tar -- Comando que se usa para descomprimir y comprimir ficheros .tar.gz o .tar , etc. Lo más usado es descomprimir un .tar.gz ( tar -zxvf fichero.tar.gz) o comprimir ( tar -vcf destino.tar origen)
ifconfig -- Configuración de red
iwconfig -- Configuración de red inalámbrica
lspci -- Lista de dispositivos PCI, identificadores y etc.
lsusb -- Como lspci pero de USB
dmesg -- Escupe el contenido del fichero dmesg, que contiene mensajes del núcleo
chmod -- Cambia los permisos de un fichero o directorio (recordemos que para la mayoría de comandos que necesitan que le indiquemos que sea recursivo(carpetas) usamos -R , por ejemplo chmod -R 777 /home/dresi/troll , que daría todos los permisos a todos los usuarios de todo ese directorio).
apt-get -- Administrador de paquetes de Debian y derivados
synaptic -- Más de lo mismo
service nombredelservicio {start/stop/restart} -- Arranca, para o reinicia un servicio. Por ejemplo, realizamos cambios en un servidor web Apache y, para reiniciarlo, hacemos service apache restart (antes era /etc/init.d/servicio , por ejemplo, /etc/init.d/apache restart)
make -- Programa que guía a los compiladores del sistema a compilar un código de un programa basándose en un fichero llamado MAKEFILE. Para comprobar que todo esté correcto (dependencias, etc...) se ejecuta make (a secas), para configurarlo basándose en el sistema se hace make config y para compilar y instalar es make install
iwlist -- Permite cambiar varios parámetros de tarjetas de red inalámbricas, como buscar redes (iwlist interfaz scanning , por ejemplo, iwlist wlan0 scanning)
whoami -- Nos dice que usuario ejecutó el programa
ps -- Nos permite ver los procesos que tenemos ejecutándose, su estado, etc. La forma más cómoda es ps -e
kill PID -- kill nos permite matar un proceso. Solo tenemos que usar el comando kill separado por un espacio y el PID del proceso, que vemos con el comando ps -e . Si el programa no se quiere cerrar podemos forzar al sistema usando un kill -9 PID
grep -- Filtra una línea de texto de una salida de un comando. Por ejemplo, si quiero saber el pid de "amsn" hago ps -e|grep amsn , de esta manera la salida de ps -e, por el tubo, pasa por el comando grep, redirigiendo la salida de texto.
| -- El tubo no es un comando de por sí, pero sí es útil entre comandos y en scripts. Nos permite enviar la salida de un programa a otro.
cat -- Vuelca el contenido de un fichero al terminal.
comando >> fichero -- vuelca la salida de un programa a un fichero de texto. Por ejemplo, si quiero tener una lista de los programas que están iniciados y sus estados realizo ps -e >> procesos , obteniendo un fichero llamado procesos con la salida de ps -e
Introducción al emulador de terminal:
El emulador de terminal lo único que es es un intérprete de comandos. Estos emuladores de terminal suelen usar una forma casi igual siempre, aunque se puede modificar para estar más a gusto.
Cuando lo ejecutamos sale el mensaje de entrada del sistema, dandonos un "prompt" (una espera para que le entreguemos comandos) situándonos en el directorio local del usuario (/home/usuario normalmente).
La linea empieza, siempre, con usuario@equipo:/directorio$ , lo que nos indica pues eso, el usuario, a que máquina pertenece y el directorio en el que nos encontramos.
En los sistemas Linux actuales se suele usar una cuenta que no es de administrador (root) que tiene derecho a usar un programa (sudo) que nos da derechos de superusuario (root), un usuario que puede hacer TODO lo que quiera y un poco más.
Podemos ejecutar un comando como root escribiendo sudo comando , por ejemplo, sudo whoami , que nos respondería root , pero si pusiéramos whoami como un usuario normal nos diría nuestro nombre de usuario (en mi caso dresi).
También podemos iniciar otra "shell" como root, para ser superusuario hasta que cerremos ese terminal o caduque nuestra sesión. En ese caso podemos usar el comando su en algunos sistemas, mientras en basados en Ubuntu y demás tenemos que usar siempre sudo -s (ya que la cuenta root como tal no existe, motivos de "seguridad")
Así, por ejemplo, pasaría esto:
dresi@DarkKnight:~$ whoami
dresi
dresi@DarkKnight:~$ sudo -s
[sudo] password for dresi:
root@DarkKnight:~# whoami
root
root@DarkKnight:~#

En este caso estábamos siempre en mi directorio local, mi "home", que es una variable del entorno (ya la explicaré más adelante toda la movida de las variables... para scripts es muy cómodo, puedes disponer de "contenedores" a saco sin romperte la cabeza). En este caso es /home/dresi. Podemos ver que a partir de sudo -s estamos SIEMPRE logueados en una shell como root. No es que cambiemos de usuario, la shell como dresi aún está ejecutándose por detrás, solo abrimos /bin/sh (por ejemplo, depende del intérprete de comandos que usemos) como root en ese mismo terminal.

Hasta aquí por hoy, que estoy muerto. Un saludo!

1 comentario: