El post que buscas se encuentra eliminado, pero este también te puede interesar

comandos basicos en gnu/linux

Anuncios

Este post va para aquellas personas que quieran iniciarse en GNU/Linux acá explicare algunas funciones de algunos comandos básicos que nunca están demás conocer el uso y la importancia de ellos.

Puede Parecer un poco largo pero esta lo mas completo posible como para que cada uno pueda manejarse básicamente en la consola.

Comandos Básicos

Esta es una pequeña lista de los comandos más utilizados, no es que sean los más fáciles, 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, de izquierda a derecha lo siguiente : el tipo del fichero, los permisos, el número de enlaces al archivo, el nombre del propietario, el del grupo al que pertenece, el tamaño en bytes, la fecha de la última modificación y el nombre del archivo.

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

blue]pwd[/size]

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 usuario

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


[b][color=blue][size=18]du[/size][/color][/b]

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 puerta 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 )

+ ping www.google.cl &

17 comentarios - comandos basicos en gnu/linux

@tango21 +2
Gracias por compartir buena info!
@MarcosLovera +1
Buena info a Favoritos y mañana mis +10
@orc_citro +1
A favs!!
Gracias por compartir
van puntos!!
@scooby_r +2
te dejo + 10 , esta noche lo termino de leer.
@elteka +1
te faltaron algunos comandos basicos como let, cut, Random, SORT, &gt;, &gt;&gt;, tambien como usar el vi, y como usar el nano...Los editores
@barxacova +1
Información siempre útil, gracias.
@ServoTronic +1
en vez de Kill es mejor usar Xkill
muy bueno el post!!
@leag555 +2
O.o exelente XD buena info me es util XD aun q tambien pudiste poner los permisos con CL
@Flatron44
Todo muy lindo ya hace rato que quiero empezar con linux pero mas leo mas me alejo es muy complicado para un novato que pena