Comandos básicos en Linux
De Proyectos GULIX
Tabla de contenidos |
Introducción
En primer lugar es bueno destacar que aquí no aparecen listados todos los comandos, ni todos los posibles usos de ellos, pero sí es una primera aproximación a su uso, a conocerlos y a investigarlos.
Comandos Básicos
Esta es una pequeña lista de los comandos más utilizados, no es que sean los más faciles, la verdad es que "no hay comando complicado, sólo comandos que no conocemos".
man
Este comando es el más útil de todos, su función es mostrar el manual del comando que se coloque a continuación, dependiendo de la distribución de linux y de diversos programas, éste estará en tu idioma.
Para saber como utilizarlo, puedes pedir el manual del manual escribiendo
man man
Cuando revisas un manual, como el de "man", es posible que aparezcan algunas referencias (en la sección "SEE ALSO" o "VER TAMBIÉN"), las cuales están numeradas, por ejemplo, en el caso de "man", es posible ver:
SEE ALSO:
manpath(1), apropos(1), whatis(1), catman(8), less(1),
setlocale(3), troff(1), nroff(1), man(7), ascii(7), ...
Esta es una lista de contextos relacionados de los cuales también puedes pedir con man, es decir después de salir de man (con la tecla "q"), puedes escribir por ejemplo: "man whatis". De esta forma siempre puedes encontrar información relacionada.
ls
Lista o muestra el contenido del directorio actual.
El uso de este comando de forma más básica es sin parámetros, de esta forma lista todos los archivos y directorios ordenándolos en columnas de arrbia a abajo y de izquierda a derecha.
bin dev home lost+found misc net proc sbin srv tmp var boot etc lib media mnt opt root selinux sys usr
Obviamente el resultado variará dependiendo de en qué directorio estemos parados y que cosas tengamos ahí.
El parámetro que recibe este comando es alguna expresión regular que represente lo que deseamos listar, por ejemplo podemos buscar dentro de "todo lo que comience con b", para ello usamos "b*"
ls b*
Es bueno a estas alturas decir que si existe algún directorio que coincida con "que comience con b", ls mostrará su contenido; por ejemplo, la salida del comando anterior regresa lo siguiente:
bin: alsacard echo mknod sleep alsaunmute ed mktemp sort arch egrep more stty awk env mount su basename ex mountpoint sync bash false mv tar cat fgrep netstat taskset chgrp fusermount nice tcsh chmod gawk nisdomainname touch chown gettext ntfs-3g tracepath cp grep ntfsmount tracepath6 cpio gtar pgawk traceroute csh gunzip ping traceroute6 cut gzip ping6 tracert date hostname ps true dbus-cleanup-sockets igawk pwd ulockmgr_server dbus-daemon ipcalc red umount dbus-monitor kbd_mode redhat_lsb_init uname dbus-send kill rm unicode_start dbus-uuidgen link rmdir unicode_stop dd ln rpm unlink df loadkeys rvi usleep dmesg login rview vi dnsdomainname ls sed view doexec mail setfont ypdomainname domainname mailx setserial zcat dumpkeys mkdir sh zsh boot: config-2.6.23.1-49.fc8 initrd-2.6.23.8-63.fc8.img vmlinuz-2.6.23.1-49.fc8 config-2.6.23.8-63.fc8 lost+found vmlinuz-2.6.23.8-63.fc8 grub System.map-2.6.23.1-49.fc8 initrd-2.6.23.1-49.fc8.img System.map-2.6.23.8-63.fc8
Existen también opciones para este comando, opciones que cambian los datos que muestra, estos se pueden combinar entre sí, los más comúnes son los siguientes:
- -l : Muestra una lista de un archivo (directorio, etc) por linea, muestra el tipo del fichero, los permisos, el número de enlaces duros, el nombre del propietario, el del grupo al que pertenece, el tamaño en bytes, la marca de tiempo y el nombre del archivo.
- -a : Muestra todos los archivos, incluyendo los ocultos (que comienzan con .)
- -d : No muestra el contenido interno de los directorios.
- -h : Muestra el tamaño en formato humano (Kilos, Megas, etc.)
- -v : Ordena los archivos por versión en vez de alfabeticamente.
Ejemplos
ls -l muestra
total 150 drwxr-xr-x 2 root root 4096 dic 9 22:20 bin drwxr-xr-x 4 root root 1024 dic 4 17:08 boot drwxr-xr-x 12 root root 4240 dic 15 15:15 dev drwxr-xr-x 126 root root 12288 dic 15 15:41 etc drwxr-xr-x 12 root root 4096 dic 13 22:56 home drwxr-xr-x 15 root root 4096 dic 15 04:23 lib drwx------ 2 root root 16384 dic 2 12:25 lost+found drwxr-xr-x 2 root root 4096 dic 15 15:15 media drwxr-xr-x 2 root root 0 dic 15 15:14 misc drwxr-xr-x 2 root root 4096 ago 13 10:47 mnt drwxr-xr-x 2 root root 0 dic 15 15:14 net drwxr-xr-x 2 root root 4096 dic 3 16:29 opt dr-xr-xr-x 142 root root 0 dic 15 12:14 proc drwxr-x--- 10 root root 4096 dic 14 00:52 root drwxr-xr-x 2 root root 12288 dic 11 13:48 sbin drwxr-xr-x 2 root root 4096 dic 2 12:25 selinux drwxr-xr-x 3 root root 4096 dic 2 12:45 srv drwxr-xr-x 12 root root 0 dic 15 12:14 sys drwxrwxrwt 24 root root 4096 dic 15 18:06 tmp drwxr-xr-x 14 root root 4096 dic 3 16:24 usr drwxr-xr-x 22 root root 4096 dic 2 12:48 var
ls -a muestra:
. .autofsck bin dev home lost+found misc net proc root selinux .suspended tmp var .. .autorelabel boot etc lib media mnt opt .pulse-cookie sbin srv sys usr
ls -d b* muestra:
bin boot
Nótese la diferencia con la ejecución sin la opción -d
Combinado algunas opciones, podemos ejecutar:
ls -hl que muestra:
total 150K drwxr-xr-x 2 root root 4,0K dic 9 22:20 bin drwxr-xr-x 4 root root 1,0K dic 4 17:08 boot drwxr-xr-x 12 root root 4,2K dic 15 15:15 dev drwxr-xr-x 126 root root 12K dic 15 15:41 etc drwxr-xr-x 12 root root 4,0K dic 13 22:56 home drwxr-xr-x 15 root root 4,0K dic 15 04:23 lib drwx------ 2 root root 16K dic 2 12:25 lost+found drwxr-xr-x 2 root root 4,0K dic 15 15:15 media drwxr-xr-x 2 root root 0 dic 15 15:14 misc drwxr-xr-x 2 root root 4,0K ago 13 10:47 mnt drwxr-xr-x 2 root root 0 dic 15 15:14 net drwxr-xr-x 2 root root 4,0K dic 3 16:29 opt dr-xr-xr-x 142 root root 0 dic 15 12:14 proc drwxr-x--- 10 root root 4,0K dic 14 00:52 root drwxr-xr-x 2 root root 12K dic 11 13:48 sbin drwxr-xr-x 2 root root 4,0K dic 2 12:25 selinux drwxr-xr-x 3 root root 4,0K dic 2 12:45 srv drwxr-xr-x 12 root root 0 dic 15 12:14 sys drwxrwxrwt 24 root root 4,0K dic 15 18:06 tmp drwxr-xr-x 14 root root 4,0K dic 3 16:24 usr drwxr-xr-x 22 root root 4,0K dic 2 12:48 var
cd
Cambia el directorio (o carpeta) actual. Al ejecutarse sin parámetro, normalmente (aun no he conocido un Linux, Unix o Solaris en que no suceda) cambia al directorio de home (o directorio base) del usuario en curso. Al entregarle un parámetro (nombre de algún directorio), se cambia a él. Algunos nombres de directorios especiales son por ejemplo:
- . que hace referencia a mi directorio actual,
- .. que hace referencia al directorio padre, y
- / que es el directorio raíz del sistema.
Cabe destacar que uno puede cambiarse de directorio dando toda la ruta (directa o relativa) de una carpeta.
Ejemplos
Cambiarse al directorio Escritorio
cd Escritorio
Ir a la raíz del sistema
cd /
Ir a la carpeta home que esta dentro de la raíz
cd /home
Regresar a mi carpeta
cd
pwd
Muestra el directorio actual regresando toda su ruta desde la raíz del sistema.
pwd
cp
Copia dentro del equipo local un archivo o directorio, para ello recibe dos parámetros, el origen y el destino.
cp origen destino
Existen algunas opciones que se utilizan bastante, no son todas, pero son las más frecuentes:
- -R : Copia recursiva de directorios.
- -i : Pregunta si quiere sobrescribir los que tienen el mismo nombre.
- -d : copia los enlaces simbólicos en vez de copiar el archivo (o directorio) al que apunta.
- -u : copia sobreescribiendo solamente los archivos más viejos (una forma de sincronización).
Ejemplos
Copia mi carpeta Escritorio en la carpeta respaldo
cp -R Escritorio respaldo
Copia el archivo xorg.conf ubicado en /etc/X11 en mi carpeta de home
cp /etc/X11/xorg.conf $HOME
mv
Mueve o renombra un archivo o directorio a un nuevo destino.
¿De que depende cual de las dos acciones ejecuta?
- Fácil, depende si existe el destino o no como directorio, en caso contrario renombra (ojo, si mueves un archivo a otro que ya existe, lo reemplaza)
mv curriculum.pdf Documentos/personales/
Las opciones más utilizadas de mv son:
- -i : pregunta antes de sobreescribir si el destino existe.
- -u : no mueve el archivo si existe en el destino uno más actual.
rm
Borra un archivo o directorio.
rm archivoViejo.txt
Los operadores mas importantes son:
- -r : borra recursivamente.
- -i : pide confirmar.
- -f : por la fuerza.
Nunca hagas lo siguiente aunque es gracioso (para el que observa)
rm -rf $HOME
ni ninguna cosa parecida, preocúpate de manejar bien este comando, pues de que borra borra.
cat
Despliega un archivo por la salida estándar.
cat README.txt
El operador entretenido que tiene es el -n que muestra los números de linea, es especial si quieres ver que dice la linea que se queja un archivo PHP.
En la mayoría de los terminales con las teclas <shift> y <pg up> o <pg dw> nos permite desplazarnos.
more
Despliega un archivo por la salida estándar agregando pausas por pantalla. Claramente esto es bastante útil cuando el archivo sobrepasa un par de pantallas.
more README.txt
tail
Muestra las últimas lineas de un archivo. Tal ves te preguntes ¿y para que solo quiero ver las últimas líneas?, algunas respuestas posibles a esta pregunta son:
- puede ser que estés viendo un archivo secuencial (como un log del sistema) en donde te interese solamente ver lo que ocurre ahora.
dmesg | tail # <--- ver los avisos más recientes de mi sistema
- ver el progreso de un registro secuencia, gracias al operador más utilizado, -f (follow) que deja el canal abierto mirando las ultimas lineas mientras se actualizan.
tail -f /var/log/messages
para concluir presionar <ctrl> + <c>
head
Igual que el anterior, pero muestra solamente las primeras líneas de un archivo. Tal vez te preguntes, ¿y para qué solamente querría ver las primeras líneas? Algunos casos posibles son:
- Quieres ver si un archivo se trata de lo que crees (en Linux, muchos archivos de configuración guardan comentarios descriptivos en las primeras líneas):
head /etc/samba/smb.conf # <-- ¿será este el archivo de directivas de samba?
- Algunos archivos de registro y salidas de programa guardan información cronológica "inversa", es decir, los más recientes primero:
last | head # <-- ¿quiénes son los más recientes que se han conectado al sistema?
- ¿No recuerdas con qué opciones compilaste un código fuente?
head config.log
ps
Muestra los procesos en ejecución.
Entre todos los comandos que hemos visto, este es uno de los que tiene las más variadas opciones, pues uno puede ver los procesos en total, por usuario, por grupo de usuario, etc...
Lo más común en todo caso es que me interesen mis procesos, para ello se utiliza el operador -U seguido por el nombre del usuario.
ps -U gulixiano
lo que retornará algo similar a lo siguiente:
PID TTY TIME CMD 2505 ? 00:00:00 startkde 2561 ? 00:00:00 ssh-agent 2564 ? 00:00:00 dbus-launch 2565 ? 00:00:00 dbus-daemon 2635 ? 00:00:00 start_kdeinit 2636 ? 00:00:00 kdeinit 2639 ? 00:00:00 dcopserver 2641 ? 00:00:00 klauncher 2643 ? 00:00:05 kded 2648 ? 00:00:00 kwrapper 2650 ? 00:00:00 ksmserver 2651 ? 00:00:10 kwin 2653 ? 00:00:05 kdesktop 2658 ? 00:00:13 kicker 2662 ? 00:00:17 artsd 2673 ? 00:00:00 kmix 2675 ? 00:00:17 yakuake 2696 pts/2 00:00:00 bash 2735 ? 00:00:00 firefox 2756 ? 00:00:00 run-mozilla.sh 2761 ? 00:24:08 firefox-bin 2915 ? 00:00:01 knotify 3557 ? 00:00:21 xchat 3660 ? 00:00:04 konqueror 3684 ? 00:00:01 kio_uiserver 4445 pts/2 00:00:00 ps
si le agregamos el operador x podemos ver además los parámetros de los programas, ubicación, entre otros.
La primer columna de lo que retorna es el número del proceso.
ps x -U gulixiano
retorna
PID TTY STAT TIME COMMAND 2505 ? Ss 0:00 /bin/sh /usr/bin/startkde 2561 ? Ss 0:00 /usr/bin/ssh-agent /usr/bin/dbus-launch --exit-with-session 2564 ? S 0:00 /usr/bin/dbus-launch --exit-with-session /etc/X11/xinit/Xclients 2565 ? Ss 0:00 /bin/dbus-daemon --fork --print-pid 4 --print-address 8 --session 2609 ? S 0:00 /usr/bin/gnome-keyring-daemon 2612 ? Ss 0:01 /usr/bin/gpg-agent -s --daemon 2614 ? Ssl 0:55 /usr/bin/pulseaudio -D 2635 ? S 0:00 start_kdeinit --new-startup +kcminit_startup 2636 ? Ss 0:00 kdeinit Running... 2639 ? S 0:00 dcopserver --nosid 2641 ? S 0:00 klauncher [kdeinit] --new-startup 2643 ? S 0:05 kded --new-startup 2648 ? S 0:00 kwrapper ksmserver 2650 ? S 0:00 ksmserver 2651 ? S 0:10 kwin -session 101bc18c1b6166000119671600300000064280000_1197099738_82464 2653 ? S 0:05 kdesktop 2658 ? S 0:13 kicker 2662 ? S 0:17 /usr/bin/artsd -F 10 -S 4096 -s 60 -m artsmessage -c drkonqi -l 3 -f 2673 ? S 0:00 kmix -session 101bc18c1b6166000119671952700000064280060_1197099738_69827 2675 ? S 0:17 yakuake -session 101bc18c1b6166000119672904800000029110007_1197099738_71012 2685 ? S 0:00 kalarmd --autostart 2690 ? S 0:00 /usr/libexec/gconfd-2 13 2696 pts/2 Ss 0:00 /bin/bash 2735 ? S 0:00 /bin/sh /usr/lib/firefox-2.0.0.10/firefox -UILocale es-ES 2756 ? S 0:00 /bin/sh /usr/lib/firefox-2.0.0.10/run-mozilla.sh 2761 ? Sl 24:15 /usr/lib/firefox-2.0.0.10/firefox-bin -UILocale es-ES 2915 ? S 0:01 knotify [kdeinit] 3557 ? S 0:21 xchat 3660 ? S 0:04 konqueror --silent 3684 ? S 0:01 kio_uiserver 4423 ? Rl 3:53 /usr/lib/nspluginwrapper/npviewer.bin 4451 pts/2 R+ 0:00 ps x -U gulixiano
kill
Mata algún proceso. Para entender mejor recomiendo ver man 7 signal que especifica cada una de las señales, en este pequeño texto utilizaremos la señal 9 (matar) y la señal 15 (terminar).
Por ejemplo, supongamos que de la lista de procesos vistos en el ejemplo de ps deseamos terminar xchat, cuyo número de proceso es 3557
kill -15 3557
lo que cerrará (amablemente) el programa xchat.
Ahora, supongamos que (por esas cosas que rara vez ocurren) se pega xchat y no está respondiendo, por lo que en ves de cerrarlo, es mejor matarlo (por la fuerza).
kill -9 3557
Mediante kill incluso se pueden detener o reiniciar procesos, no es lo más habitual, pero de poder se puede.
Killall
Este comando no esta disponible por defecto en todos los sistemas Unix, pero sí en la mayoría de las distribuciones Linux. Mata todos los procesos al los cuales el usuario tiene acceso. Similar al comando Kill, pero diseñado para matar procesos por sus nombres.
ejemplo:
killall firefox-bin
top
Al igual que ps muestra los procesos, a diferencia de ps, top los ordena por porcentaje de CPU utilizado (lo que se puede cambiar a porcentaje de memoria, etc.)
Por ejemplo al ejecutar
top
se vera algo así como lo siguiente, note que se va actualizando.
top - 22:49:02 up 7:34, 1 user, load average: 1.12, 0.85, 0.80
Tasks: 129 total, 2 running, 127 sleeping, 0 stopped, 0 zombie
Cpu(s): 15.3%us, 1.2%sy, 0.2%ni, 80.4%id, 2.5%wa, 0.3%hi, 0.1%si, 0.0%st
Mem: 450000k total, 395052k used, 54948k free, 2848k buffers
Swap: 2096440k total, 81044k used, 2015396k free, 103548k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
4423 gulixiano 20 0 98.3m 42m 9648 R 51.2 9.7 27:22.42 npviewer.bin
2483 root 20 0 123m 46m 3392 S 2.0 10.6 11:58.59 X
2761 gulixiano 20 0 323m 165m 18m S 2.0 37.6 27:24.50 firefox-bin
1 root 20 0 2112 564 536 S 0.0 0.1 0:01.20 init
2 root 15 -5 0 0 0 S 0.0 0.0 0:00.00 kthreadd
3 root RT -5 0 0 0 S 0.0 0.0 0:00.00 migration/0
4 root 15 -5 0 0 0 S 0.0 0.0 0:01.43 ksoftirqd/0
Con la opción -u se le puede especificar el usuario, por ejemplo si solo deseamos ver los procesos de root ejecutamos
top -u root
que muestra
top - 23:01:35 up 7:46, 1 user, load average: 1.80, 1.48, 1.09
Tasks: 129 total, 2 running, 127 sleeping, 0 stopped, 0 zombie
Cpu(s): 16.4%us, 1.3%sy, 0.2%ni, 79.3%id, 2.5%wa, 0.3%hi, 0.1%si, 0.0%st
Mem: 450000k total, 402064k used, 47936k free, 3240k buffers
Swap: 2096440k total, 81044k used, 2015396k free, 103564k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
2483 root 20 0 123m 46m 3392 S 5.6 10.6 12:19.55 X
1 root 20 0 2112 564 536 S 0.0 0.1 0:01.21 init
2 root 15 -5 0 0 0 S 0.0 0.0 0:00.00 kthreadd
3 root RT -5 0 0 0 S 0.0 0.0 0:00.00 migration/0
4 root 15 -5 0 0 0 S 0.0 0.0 0:01.47 ksoftirqd/0
5 root RT -5 0 0 0 S 0.0 0.0 0:00.00 watchdog/0
6 root 15 -5 0 0 0 S 0.0 0.0 0:00.29 events/0
top además recibe comandos mientras está en ejecución, entre ellos, k es equivalente a kill, O es para ordenar por otro criterio, q sale, entre otros.
alias
Crea un alias de un comando, esto sirve bastante para escribir menos. Por ejemplo, podemos crear una alias para ls -al cosa de no escribir a cada rato esos 5 caracteres, podemos crear una alias una ves y de ahi solo usar el alias.
alias ll='ls -al'
y después de ello solo usamos
ll
Se puede crear un alias para prevenir borrar cosas accidentalmente incorporando la confirmación (lo malo es que uno se acostumbra a responder que si)
alias rm='rm -i'
El uso del alias es desde que se crea hasta que se cierra la cuenta, para la perpetuidad del alias se puede agregar al archivo .bashrc (en el directorio base de tu usuario)
Comandos Básicos Avanzados
Estos se denominan así porque generalmente son utilizados para administrar el sistema.
chmod
Se usa para cambiar los permisos de los archivos y directorios.
Los tipos de permisos son básicamente 3
- r :lectura
- w :escritura
- x :ejecución (acceso)
Los permisos los podemos agrupar en
- u : usuario
- g : grupo
- o : otros
Para añadir un permiso se utiliza el + mas y para quitarlo el - menos, y para asignar quitando otros cambios se usa el =, con esto agregar a todos el permiso de lectura a un archivo sería así:
chmod ugo+r archivo
si deseamos que todos mis archivos y carpetas sean accedidas y leídas por las personas de mi grupo, puedo agregar la opción de recursividad -R
chmod g+rx * -R
Cambio de permisos utilizando números
Es posible asignar un número identificatorio a cada tipo de permiso, considerando lo siguiente:
- r = 4 (lectura)
- w = 2 (escritura)
- x = 1 (ejecución)
- - = 0 (sin permisos)
Cuando asignamos los permisos utilizando números debemos tener en cuenta que primero se sumarán los valores y dicho resultado es el que se usará.
ejemplos
- rw------- (600) Sólo el propietario tiene el derecho de leer y escribir.
chmod 600 archivo.txt
- rw-r--r-- (644) Sólo el propietario tiene los permisos de leer y escribir; el grupo y los demás sólo pueden leer.
- rwx------ (700) Sólo el propietario tiene los derechos de leer, escribir y ejecutar el archivo.
- rwxr-xr-x (755) El propietario tiene los derechos de leer, escribir y ejecutar; el grupo y los demás sólo pueden leer y ejecutar.
- rwx--x--x (711) El propietario tiene los derechos de lectura, escritura y ejecución; el grupo y los demás sólo pueden ejecutar.
- rw-rw-rw- (666) Todo el mundo puede leer y escribir en el archivo. ¡No es una buena elección!
- rwxrwxrwx (777) Todo el mundo puede leer, escribir y ejecutar. ¡Tampoco es buena elección!
chgrp
Cambia el grupo a un archivo o carpeta, su uso es simple, se especifica el grupo y de ahí a que se le desea cambiar, al igual que a chmod tiene la opción -R para cambiar el grupo de forma recursiva, por ejemplo podemos querer cambiar el grupo del directorio public_html y su contenido al grupo apache.
chgrp apache public_html -R
chown
Cambia el usuario y grupo a un archivo o directorio, su uso es similar a los comandos anteriores, por ejemplo podríamos copiar una carpeta carpeta como root dentro del usuario gulixiano que pertenece al grupo gulix, el paso siguiente es que gulixiano pueda disponer de dicha carpeta y archivos interiores, el comando que debería ejecutar es:
chown gulixiano:gulix carpeta -R
df
Regresa el espacio disponible y utilizado en disco (por particiones montadas), la opción que debe conocer es -h que retorna el espacio en "formato humano" (Kilos, Megas, etc):
df -h
du
Regresa el tamaño de los archivos y carpetas de forma recursiva del lugar en donde te encuentres parado, al igual como en el comando anterior con la opción -h queda en "formato humano":
du -h
Dos opciones de interés son:
- -s muestra solamente la suma total de los archivos examinados, esto es para conocer el espacio total que usa una carptea, por ejemplo:
du -s $HOME/manuales
Te dirá que estás usando, por ejemplo, 246736 "unidades" en puros manuales, usa la opción "-h" para pasar eso a formato humano:
du -sh $HOME/manuales
Mmmm. 241M (megas), ¡nada mal!
- -a es la opción opuesta, en vez de resumir el espacio ocupado en un solo número, entrega un detalle de cuántas "unidades" (Kilos o Megas con "-h") usa cada archivo y directorio que encuentre, siendo útil para determinar qué está ocupando todo el espacio de tu pendrive:
du -ah /media/ALL_MY_THESIS
Eso sí, si tienes muchos archivos va a ser una larga lista por lo que puedes examinarla por partes usando "more" o "less".
find
Realiza una búsqueda, el parámetro opcional más utilizado es el path, mediante una tubería uno puede filtrar con egrep o con grep.
find
un ejemplo, para buscar desde la raiz del sistema un archivo llamado "miarchivo.odt"
find / -name 'miarchivo.odt'
grep
Retorna una linea según un término buscado en un archivo según alguna expresión regular. La sintaxis general del comando es:
grep lo_que_busco donde_busco
Ejemplos:
- buscar el usuario "gulixiano" en el archivo de registro de usuarios:
grep gulixiano /etc/passwd
regresaría:
gulixiano:x:500:500::/home/gulixiano:/bin/bash
ifconfig
Regresa o configura los datos de nuestra(s) tarjeta(s) de red. Su uso básico es de consulta, en donde se llama sin parámetros.
ifconfig
retornando algo así como lo siguiente:
eth0 Link encap:Ethernet HWaddr 00:11:22:33:44:55
inet addr:192.168.0.247 Bcast:192.168.0.255 Mask:255.255.255.0
inet6 addr: fe80::214:2aff:fe14:9b4f/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:2002 errors:0 dropped:0 overruns:0 frame:0
TX packets:1912 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:1480919 (1.4 MiB) TX bytes:560964 (547.8 KiB)
Interrupt:20 Base address:0x8c00
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:2988 errors:0 dropped:0 overruns:0 frame:0
TX packets:2988 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:3501364 (3.3 MiB) TX bytes:3501364 (3.3 MiB)
Normalmenre las tarjetas de red son nombradas como ethX en donde X va del 0 en adelante dependiendo de las tarjetas que tengamos, existen algunas distros que nombran a la inalambrica como wlanX en donde X es el número de tarjeta. Dependiendo de la distro, es probable que se necesite llamar a ifconfig de la siguiente manera /sbin/ifconfig.
Notemos que en la primer linea de nuestra tarjeta tenemos el HWaddr seguido de la mac de nuestra tarjeta, en la segunda linea, encontramos nuestra IP (addr), broadcast (Bcast) y mascara de red (Mask).
No detallaremos aquí como configurar la red a modo texto, es interesante, pero ese ya es un tema algo más avanzado.
ln
Crea un enlace (Acceso directo para los hijos de Windows). Recibe dos parámetros, origen y destino, normalmente se usa el operador -s simbolico para crear enlaces simbolicos. Por ejemplo, podemos crear un enlace simbolico en el Escritorio del directorio Documentos (que se encuentra en paralelo a Escritorio)
ln -s ../Documentos Escritorio
otro operador de ln bastante usado es -f por la fuerza, en que obliga a hacer el enlace, es muy util si el enlace ya existia y lo queremos sobreescribir.
passwd
Cambia la contraseña, al usarse sin parámetros cambia la contraseña propia, el parámetro que recibe es el nombre de usuario al que se le desea cambiar la clave (se requieren permisos de root para ello)
passwd
ping
Solicita un eco desde alguna maquina en la red, muy util para saber si tu conexion de red esta funcionando.
ping www.google.cl
retorna algo así como
PING www.l.google.com (74.125.47.99) 56(84) bytes of data. 64 bytes from 74.125.47.99: icmp_seq=1 ttl=245 time=162 ms 64 bytes from 74.125.47.99: icmp_seq=2 ttl=245 time=161 ms --- www.l.google.com ping statistics --- 2 packets transmitted, 2 received, 0% packet loss, time 1000ms rtt min/avg/max/mdev = 161.464/161.841/162.218/0.377 ms
Presiona <ctrl> + <c> para terminar la ejecución de este comando.
route
Sirve para ver o configurar la(s) puerta(s) de enlace de mi equipo. Su uso básico es sin parámetros y es para ver cual es mi puerta de enlace y por que dispositivo de red está saliendo.
route
debería mostrar algo así como
Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 192.168.0.0 * 255.255.255.0 U 0 0 0 eth0 192.168.122.0 * 255.255.255.0 U 0 0 0 virbr0 default 192.168.0.1 0.0.0.0 UG 0 0 0 eth0
La purta de enlace que toma es la que está marcada con default, en nuestro caso 192.168.0.1 conectado por la tarjeta de red eth0
Al igual que con ipconfig, este comando no lo tocaremos más aquí, pero tiene para mucho estudio.
scp
Copia archivos de o a maquinas remotas, la sintaxis de este comando es igual a la de cp, la diferencia es el origen o el destino que pueden ser remotos, para especificar el usuario y maquina y ruta remota se estila colocar usuario@maquina:/ruta/remota, después de presionar enter solicitara la o las contraseñas.
Por ejemplo don Juan Pérez usuario de linux en su equipo de casa y en su notebook, podria copiar las fotos de sus vacaciones (que tiene en su notebook) en el pc de su casa (obviamente encendido) desde Brasil a Chile sin mayor problema.
scp fotosSaoPablo.tar.bz2 jperez@200.190.22.12:/home/jperez/fotos/vacaciones2007/ jperez@200.190.22.12's password:
la opción para recursivo es -r con la ere minúscula.
El caso más extraño para usar este comando es por ejemplo para copiar algo dentro del mismo equipo pero a otro usuario, por ejemplo, un rpm que bajamos copiarlo al directorio de root.
scp VMware-server-1.0.3-44356.i386.rpm root@localhost:/root/ root@localhost's password:
ssh
Permite acceder a una shell en un equipo remoto, dentro de las opciones interesantes esta -X que permite ejecutar de forma remota aplicaciones X11 (si el servidor lo permite).
Por ejemplo, supongamos que Juan Perez, mientras está de vacaciones se entera que existe una vulnerabilidad en su servidor ftp y que actualizando queda protegido. Obviamente no va a viajar a Chile interrumpiendo la playa, garotas y caipiriña... lo que hace es conectarse remotamente para actualizar.
ssh jperez@200.190.22.12
Tras lo cual actualiza el ftp.
su
Hecha a correr una shell como otro usuario, es muy practico tener una consola como un usuario distinto, por ejemplo como root o como un usuario con privilegios distintos, así uno puede probar sin necesidad de loggearse una y otra vez. Por ejemplo supongamos que quiero ser jperez lo que haré es:
su - jperez
una vez presionado el enter me pedirá la contraseña, a menos que sea root o tenga privilegios especiales. Para convertirme en root basta con teclear
su -
yes
Este comando escribe y mientras no sea cancelado, puede sonar a un comando inútil, pero gracias a las tuberías y redireccionamientos se convierte en un comando indispensable.
time
Haciendo uso del comando time, sirve para medir el tiempo que demora un comando en ejecutarse.
root@fenix:/home/knx# time ls ’ Documentos Downloads Escritorio Imágenes Música Plantillas programas real 0m0.403s user 0m0.004s sys 0m0.016s
Tuberías y Redireccionamientos
Las tuberías o pipeline son interesantes, si bien no haremos un uso detallado de ellas aquí, la idea es dejar el concepto e inquietud para el estudio profundo personal.
La gracia de esto, es que la salida de un comando puede ser la entrada de otro (tubería) o bien que en ves de mostrar algo por pantalla (o la salida o entrada predeterminada) podemos modificar el dispositivo de salida (o entrada).
Tuberías (pipeline)
Transformando el flujo de los datos... se lee de izquierda a derecha, la salida del comando de la derecha, es la entrada del comando de la izquierda, el símbolo de la tubería es |
Ejemplo de tubería yes y rm -i
Veamos un ejemplo, supongamos que hemos creado el alias para borrar confirmando
alias rm='rm -i'
Pero deseo borrar todos los archivos de respaldo (terminados en ~) con lo que obiamente haria un
rm *~
pero comenzaria a preguntar si quiero borrar cada uno de ellos, a lo que tendría que ir respondiendo que si (algo bastante tedioso) y terminariamos odiando el rm -i ...para que ello no ocurra podemos usar una tuberia y decir que si a todo gracias al comando yes.
yes | rm *~
Esto hara que para cada pregunta de confirmación, yes le dira que si.
Ejemplo de tubería, búsqueda de archivo
Supongamos que hemos creado un documento en OpenOffice.org (OOo) y que no sabemos donde lo dejamos (caso ficticio, nunca sucede), recordamos que el título del documento tenia la palabra resumen, pues se trata del resumen del libro que hemos leído, por lo que tenemos dos filtros de búsqueda, la palabra resumen y el formato odt, con ello hacemos lo siguiente:
find | grep resumen | grep odt
con lo que decimos que buscara, dicha búsqueda se la pasa a grep resumen (para filtrar) y lo que encuentre grep resumen se lo entrega a grep odt (para el segundo filtro).
Redireccionamiento
El simbolo que se usa para cambiar la dirección es > para direccionar una salida y de < para una entrada.
Ejemplo, copiando un archivo con cat
Como vimos anteriormente, cat despliega un archivo en pantalla, para copiar un archivo usando cat, lo que hacemos es direccionar la salida de pantalla a un archivo.
cat README.txt > LEEME.txt
Ejemplo, creando un archivo con cat
cat no es un editor de texto, pero cuando no se le entrega el parámetro (uno o varios archivo), hace un eco de lo que escribimos en pantalla, dicho eco lo podemos redireccionar a un archivo y así crearlo con lo que estamos escribiendo.
cat > creandoArchivoConCAT.txt
Una vez hecho esto escribe lo que quieras, para terminar de escribir presiona <ctrl>+<d> lo que enviará un fin de archivo, luego puedes hacer un
cat creandoArchivoConCAT.txt
y ver lo que has escrito.
Dado a que cat despliega uno o varios archivos que se le entregue, estos se pueden concatenar en uno solo redireccionando la salida, es así como por ejemplo podemos hacer:
cat capitulo1.txt capitulo2.txt capitulo3.txt > libro.txt
Trabajos en segundo plano
control Z
A veces necesitamos ejecutar un comando mientras estamos trabajando con otro, por ejemplo, supongamos que estamos modificando los permisos de un usuario en visudo y olvidamos como era el login del usuario, en ves de cerrar visudo y abrirlo mas tarde, podemos suspender su ejecución con control Z
jobs
Con jobs podemos ver todas las tareas que tenemos suspendidas, por ejemplo en el caso anterior, nos entrega
[1]+ Stopped visudo
fg
Lo práctico de la suspensión es poder retomar lo que hemos dejado en segundo plano, esto lo hacemos con el comando fg y el número del proceso suspendido. En nuestro ejemplo
fg 1
&
El & se usa para dejar inmediatamente una ejecución en segundo plano, por ejemplo, supongamos que queremos crear un indice de nuestro equipo, pero queremos dejar el terminal libre por si necesitamos ejecutar otra acción. Lo que haríamos sería:
find / > indice.txt &
bg
El comando bg permite enviar a segundo plano un proceso que se encuentre en estado de suspensión. Veamos un ejemplo:
ejecutamos el siguiente comando de prueba
ping www.google.cl
comenzaremos a obtener la salida:
PING www.l.google.com (74.125.45.99) 56(84) bytes of data. 64 bytes from yx-in-f99.google.com (74.125.45.99): icmp_seq=1 ttl=48 time=258 ms 64 bytes from yx-in-f99.google.com (74.125.45.99): icmp_seq=2 ttl=46 time=211 ms 64 bytes from yx-in-f99.google.com (74.125.45.99): icmp_seq=4 ttl=48 time=247 ms 64 bytes from yx-in-f99.google.com (74.125.45.99): icmp_seq=6 ttl=46 time=370 ms
ctr+z para suspenderlo,tendremos la siguiente salida:
^Z [1]+ Stopped ping www.google.cl
Luego si deseamos , lo podemos enviar a segundo plano ( con lo que perderemos el control que teníamos sobre el proceso)
bg
y tendremos la siguiente salida por consola ( también se comenzaran a ver los mensajes de la salida del comando )
[1]+ ping www.google.cl &
Conclusión
A través de los comandos se puede hacer de todo bajo Linux, la pequeña lista que tenemos muestra una parte de las grandes potencialidades que se pueden lograr sabiendo utilizar los comandos, tuberías y redireccionamientos. El desafío está planteado. El límite no existe.
Otras Lecturas
- Manual de programación en Bash por la comunidad gulix
- Administración_de_usuarios_y_grupos_de_usuarios
- Manual para Comprimir_Descomprimir
- Otros tutoriales de Gulix
Autores de este Resumen
--RAcl 09:39 18 dic 2007 (ART)
--Dalacost 20:54 4 oct 2009 (UTC)
--Knxroot 06:27 22 feb 2010 (UTC)

