Comandos Linux

Libro en Construcción 

Comandos de Busqueda

Comando ncdu

Comando find

Es el caso del comando find,

Uno de los legendarios de los sistemas Unix y por supuesto de las distribuciones Linux, y que permite realizar todo tipo de búsquedas de ficheros tanto por los nombre como por los distintos atributos que tienen esos mismos ficheros. En Linux.com han realizado un práctico tutorial con 10 consejos para usar find, y lo cierto es que este recorrido nos permitirá a buen seguro exprimir el funcionamiento de este comando. 1. Uso básico Lo normal es que utilicemos find para encontrar el nombre de un fichero en el directorio, no solo donde lo dejamos, sino cómo se llama ese fichero exactamente. Para ello basta con utilizar el formato

find -name nombredefichero

2. Búsqueda por tamaño A veces es importante encontrar ficheros por su tamaño, y para ello basta aplicar un parámetro:

find -size 100k

lo que permitiría buscar ficheros con un tamaño exacto de 100 kilobytes. Es probable que lo que queramos es encontrar ficheros con un tamaño superior o inferior a esa cifra en cuyo caso usaríamos

find size +100k

para los ficheros con mayor tamaño de 100k, y

find size -100

para ficheros de menor de 100k. Por cierto, si necesitamos buscar en gigabytes, basta con poner 100G, por ejemplo. 3. Búsqueda por usuario También podemos buscar ficheros que pertenecen a cierto usuario… o que no pertenecen a nadie y han quedado “huérfanos”, con la orden:

find -nouser

Si queremos buscar ficheros de alguien concreto usaremos las opciones -user o -uid. En este último caso deberemos saber el identificador de un usuario, algo que no es lo normal que sepamos, pero siempre viene bien tenerlo en cuenta. Además podemos buscar ficheros que pertenecen a un usuario A o a un usuario B con el parámetro -o, con lo que escribiríamos:

find -user root -o -user www-data

Y como era de esperar, también podemos buscar los ficheros que NO pertenecen a un usuario concreto:

find -not -user www-data

4. Búsqueda por grupo Lo mismo se podría aplicar a la búsqueda por grupos que puede afectar al nombre de grupo o al GID de ese grupo (con el mismo flag, cuidado), y haríamos un simple

find -group nombredelgrupo

(o giddelgrupo) Obviamente, podemos combinar esta opción con el resto de opciones, para por ejemplo encontrar ficheros que pertenecen a cierto grupo y que además pertenecen a cierto usuario dentro del grupo. 5. Búsqueda por permisos Uno de los usos más importantes de find -y probablemente de los más desconocidos- es su capacidad de encontrar ficheros con ciertos permisos, algo que nos permite detectar archivos que no tienen los permisos que deberían tener y que pueden suponer una amenaza para la seguridad del sistema. Las opciones más sencillas de usar son -readable, -writeable y -executable, aunque también podemos usar el parámetro -perm a partir del cual podemos establecer esos tres permisos a la vez con la típica combinación de tres números. Por ejemplo:

find -type f -perm -110

Buscaría ficheros con el bit de ejecutable activado para el usuario y el grupo, y el “-” le indica que ignore otros bits. O sea, que no importa si el fichero es de lectura o de escritura, porque lo que queremos es que aparezcan todos los que tienen ese bit de ejecución. Si queremos que específicamente se busquen ficheros que tengan el bit ejecutable para usuario y grupo usaríamos “/”, y no “-”:

find -type f -perm /110

Lo que buscaría solo aquellos ficheros con esos permisos, y no otros. 6. Usando expresiones regulares La potencia del comando find crece al usar las expresiones regulares (con la sintaxis tradicional regex) que permite aplicar estas potentes (pero complejas) expresiones para realizar búsquedas mucho más avanzadas. Podemos establecer este tipo de búsqueda con el parámetro -regextype, y luego alguno de los tipos de expresiones soportados con los parámetros posix-awk, posix-egrep, etc.  Consultad la página del manual para ampliar información. Por ejemplo si quisiéramos encontrar ficheros con extensión .php o .js haríamos lo siguiente:

find -regextype posix-egrep -regex '.*(php|js)$'

Al principio puede parece un poco complicado, pero si analizáis la expresión regular todo cobra sentido. La potencia que ofrecen las expresiones regulares es impresionante, pero ya solo este tema bastaría para un post dedicado a ellas. 7. Búsquedas por fechas Si quisiéramos encontrar ficheros por su edad, podríamos hacerlo también con tres parámetros específicos para estas tareas. Por tiempo de acceso (-atime), por última modificación (mtime) o por el último cambio de fichero (-ctime). Todas las cifras, expresadas en días, cuidado. Por ejemplo, busquemos ficheros que no hayan sido modificados en los dos últimos días

find -mtime +2

Podemos combinar las opciones y buscar ficheros en un rango, por ejemplo, ficheros que tengan entre 2 y 5 días de edad:

find -mtime +2 -mtime -5

8. Búsquedas por minutos Una especie de rama de lo anterior, pero que es importante porque trabaja con sus propios parámetros que son -amin, -cmin y -mmin, análogas a las que habíamos visto antes. Simplemente hay que tener en cuenta que en este caso la búsqueda es de cifras en minutos, no de días, lo que permite buscar con mucha mayor precisión en el tiempo. 9. Limitar las búsquedas A veces el comando find proporciona más resultados de los que necesitamos o queremos, y para limitar esos resultados podemos utilizar la opción -maxdepth. Por ejemplo, si queremos encontrar un archivo JavaScript en nuestro directorio wordpress, haríamos lo siguiente:

find wordpress -name "*js"

pero si solo quisiéramos buscar en el directorio de primer nivel haríamos

find wordpress -maxdepth 1 -name "*js"

Si quisiéramos buscar en el directorio y en la primera rama de subdirectorios habría que poner “-maxdepth 2″, y así sucesivamente según la profundidad de directorios en la que queremos buscar ficheros. 10. Combinando find con otros comandos Como era de esperar, es posible combinar find con otros comandos para construir potentes sentencias, por ejemplo en conjunción con xargs o con la opción -exec para manipular los ficheros tras haberlos encontrado. Por ejemplo, si quisiéramos cambiar los permisos de un puñado de ficheros de root al usuario www-data haríamos:

find -user root -exec chown www-data {} \;

Este comando hace que todos los ficheros que se encuentren y sean propiedad de root, sean utilizados por el comando chown para cambiarle el propietario. Como suele decirse, las posibilidades parecen ilimitadas. Pero como veis, find es un comando espectacularmente útil si se sabe usar con sabiduría.

FUENTE ORIGINAL

Comando grep

 

EL COMANDO GREP

El comando grep nos permite buscar, dentro de los archivos, las líneas que concuerdan con un patrón. Bueno, si no especificamos ningún nombre de archivo, tomará la entrada estándar, con lo que podemos encadenarlo con otros filtros.

Por defecto, grep imprime las líneas encontradas en la salida estándar. Es decir, que podemos verlo directamente la pantalla, o redireccionar la salida estándar a un archivo.

Como tiene muchísimas opciones, vamos a ver tan sólo las más usadas:

-c En lugar de imprimir las líneas que coinciden, muestra el número de líneas que coinciden.
-e PATRON nos permite especificar varios patrones de búsqueda o proteger aquellos patrones de búsqueda que comienzan con el signo -.
-r busca recursivamente dentro de todos los subdirectorios del directorio actual.
-v nos muestra las líneas que no coinciden con el patrón buscado.
-i ignora la distinción entre mayúsculas y minúsculas.
-n Numera las líneas en la salida.
-E nos permite usar expresiones regulares. Equivalente a usar egrep.
-o le indica a grep que nos muestre sólo la parte de la línea que coincide con el patrón.
-f ARCHIVO extrae los patrones del archivo que especifiquemos. Los patrones del archivo deben ir uno por línea.
-H nos imprime el nombre del archivo con cada coincidencia.

Veamos algunos ejemplos:

- Buscar todas las líneas que contengan palabras que comiencen por a en un archivo:
$ grep '\<a.*\>' archivo

Otra forma de buscar, sería:
$ cat archivo | grep "\<a.*\>" 

- Mostrar por pantalla, las líneas que contienen comentarios en el archivo /boot/grub/menu.lst:
$ grep "#" /boot/grub/menu.lst

- Enviar a un fichero las líneas del archivo /boot/grub/menu.lst que no son comentarios:
$ grep -v "#" /boot/grub/menu.lst

- Contar el número de interfaces de red que tenemos definidos en el fichero /etc/network/interfaces:
$ grep -c "iface" /etc/network/interfaces

- Mostrar las líneas de un fichero que contienen la palabra BADAJOZ o HUELVA:
$ grep -e "BADAJOZ" -e "HUELVA" archivo

- Mostrar las líneas de un fichero que contienen la palabra BADAJOZ o HUELVA, numerando las líneas de salida:
$ grep -n -e "BADAJOZ" -e "HUELVA" archivo

- Mostrar los ficheros que contienen la palabra TOLEDO en el directorio actual y todos sus subdirectorios:
$ grep -r "TOLEDO" *

Veamos algunos ejemplos con expresiones regulares:

- Obtener la dirección MAC de la interfaz de red eth0 de nuestra máquina:
$ ifconfig eth0 | grep -oiE '([0-9A-F]{2}:){5}[0-9A-F]{2}'

Sacamos la dirección MAC de la interfaz eth0 de nuestra máquina haciendo un:
ifconfig eth0

Y aplicando el filtro grep:
grep -oiE '([0-9A-F]{2}:){5}[0-9A-F]{2}'

Las opciones que he usado en grep son:

-o Indica que la salida del comando debe contener sólo el texto que coincide con el patrón, en lugar de toda la línea, como es lo habitual.
-i Lo he usado para que ignore la distinción entre mayúsculas y minúsculas.
-E Indica que vamos a usar una expresión regular extendida.

En cuanto a la expresión regular, podemos dividirla en dos partes:
([0-9A-F]{2}:){5} Buscamos 5 conjuntos de 2 carateres seguidos de dos puntos
[0-9A-F]{2} seguido por un conjunto de dos caracteres.

Como las direcciones MAC se representan en hexadecimal, los caracteres que buscamos son los números del 0 al 9 y las letras desde la A a la F.

- Extraer la lista de direcciones de correo electrónico de un archivo:
grep -Eio '[a-z0-9._-]+@[a-z0-9.-]+[a-z]{2,4}' fichero.txt

Utilizo las mismas opciones que en el caso anterior:

-o Indica que la salida del comando debe contener sólo el texto que coincide con el patrón, en lugar de toda la línea, como es lo habitual.
-i Lo he usado para que ignore la distinción entre mayúsculas y minúsculas.
-E Indica que vamos a usar una expresión regular extendida.

Analicemos ahora la expresión regular:
[a-z0-9._-]+@[a-z0-9.-]+[a-z]{2,4}

Al igual que antes, la vamos dividiendo en partes:
[a-z0-9._-]+ Una combinación de letras, números, y/o los símbolos . _ y - de uno o más caracteres
@ seguido de una arroba
[a-z0-9.-]+ seguido de una cadena de letras, números y/o los símbolos . y -
[a-z]{2,4} seguido de una cadena de entre dos y cuatro caracteres.

- Obtener la dirección IP de la interfaz de red eth1 de nuestra máquina:
$ ifconfig eth1 | grep -oiE '([0-9]{1,3}\.){3}[0-9]{1,3}' | grep -v 255

En el ejemplo anterior, hemos tomado la información que nos ofrece ifconfig:
ifconfig eth1

Hemos filtrado dicha información con el comando grep, obteniendo todas las direcciones IP que aparecen:
grep -oiE '([0-9]{1,3}\.){3}[0-9]{1,3}'

Por último, hemos filtrado la salida del comando anterior, para eliminar la dirección de broadcast junto con la máscara de red para quedarnos sólo con la dirección IP de la máquina:
grep -v 255

La línea anterior no mostraría las líneas que no contengan el valor 255, es decir, las direcciones de broadcast y máscara de red.

Analicemos ahora el comando grep:
grep -oiE '([0-9]{1,3}\.){3}[0-9]{1,3}'

Al igual que en los otros dos ejemplos de expresiones regulares uso las opciones -oiE en el comando grep:

-o Indica que la salida del comando debe contener sólo el texto que coincide con el patrón, en lugar de toda la línea, como es lo habitual.
-i Lo he usado para que ignore la distinción entre mayúsculas y minúsculas.
-E Indica que vamos a usar una expresión regular extendida.

En cuanto a la expresión regular:
'([0-9]{1,3}\.){3}[0-9]{1,3}'
([0-9]{1,3}\.){3} Representa 3 bloques de entre uno y tres dígitos separados por puntos. Observemos que como el punto es un metacaracter, tengo que usar el caracter de escape \ para que no sea interpretado como un metacaracter, sino como un caracter normal.
[0-9]{1,3} Representa el último bloque de la dirección IP, que está formado por un número de entre 1 y 3 dígitos.

FUENTE ORIGINAL

Comando locate

 

Hasta el momento de escribir esta entrada, no recuerdo haber utilizado el comando locate con argumentos. Creo que mucha gente hace lo mismo así que vamos a ver unos cuantos ejemplos para ampliar un poco las posibilidades de este comando.

Como muchos ya sabéis, el comando locate permite hacer búsquedas de una cadena de texto en todo el sistema de forma prácticamente instantánea. Estas búsquedas no se hacen directamente contra los filesystem sino contra una base de datos (/var/lib/mlocate/mlocate.db) que se actualiza periódicamente mediante updatedb (en un cron). Dependiendo de la periodicidad de actualización de la base de datos los resultados serán más o menos fiables.

Vamos a ver unos ejemplos de argumentos que podemos pasar al comando locate para ampliar su funcionalidad.

Contar el número de resultados

Con el parámetro “-c” se muestra por pantalla el número de resultados de la consulta en lugar de la lista de ficheros y directorios:

locate -c .conf
1681

Buscar un nombre exacto

locate conf

En el caso anterior se mostrarán resultados tal que:

/tst/conf
/tst/confaaaa
/conf/test/prueba
/test/conf.test/prueba

... Para solucionarlo modificamos el comportamiento por defecto (–wholename) por –basename o “-b”, de modo que los resultados harán referencia únicamente al base name, o lo que es lo mismo, el último componente del path:

locate -b  "\conf"
/usr/share/speech-dispatcher/conf
/usr/src/linux-headers-3.2.0-23-generic/scripts/kconfig/conf

Hemos añadido la contrabarra para evitar convertir “conf” en el comportamiento por defecto de wildcards “*conf*”. Buscar con expresiones regulares: Podemos construir la búsqueda a partir de expresiones regulares. Eso sí, usando regexp no podemos incluir patrones (la cadena de texto), sólo la expresión regular. Podemos usar –regexp o -r:

locate -r .*info.*\.conf.*ms$
/var/lib/dpkg/info/dconf-gsettings-backend:i386.md5sums
/var/lib/dpkg/info/dconf-service.md5sums
/var/lib/dpkg/info/debconf-i18n.md5sums

... Resultados sensibles a mayúsculas/minúsculas El parámetro “-i” nos permite indicar que los resultados hagan caso omiso a mayúsculas/minúsculas. Búsqueda de resultados reales Como decía antes, locate utiliza una base de datos para hacer las consultas, no hace uso de los filesystem. Para evitar incongruencias en los resultados, por ejemplo con ficheros que ya han sido borrados y el comando updatedb no ha sido ejecutado todavía, utilizamos el parámetro –existing o -e:

locate -e conf

Como siempre, si os es interesante podéis revisar la página man de locate para encontrar más funcionalidades:

man locate

FUENTE ORIGINAL

Comando whereis

Comando whereis

Este comando se utiliza para localizar el archivo binario, el código fuente y la página de manual de un determinado comando.

Su sintaxis es como sigue:

whereis [opciones] archivo...

La lista de opciones mas utilizadas es:

-b
Buscar solamente el archivo binario.
-m
Buscar solamente la página manual.
-s
Buscar solamente el código fuente.
 

 

FUENTE ORIGINAL

 

Comandos para Procesos

Comando pgrep

El comando pgrep recoge una expresión regular de la línea de comandos, y nos muestra el/los ID de los procesos que coincidan con dicha expresión regular. Podría definirse como una simbiosis entre los comandosps y grep. Pongamos el ejemplo de querer saber los ID de todos los procesos que están corriendo en nuestra máquina, referentes a la expresión regular ‘httpd’ (procesos web de apache). El siguiente comando nos mostraría todos los ID de procesos httpd en nuestro sistema:

root@localhost:~$ pgrep httpd
2445
2446
2449
2545

Ya podéis imaginar el buen uso que podemos dar a este comando. Por ejemplo, si no disponemos de monitorización del servicio web de un servidor, y necesitamos que cuando apache caiga, automáticamente se reinicie. Sé que no sería la manera más adecuada de hacerlo, pero es un buen ejemplo. Podríamos programar un script que revisara los procesos httpd corriendo en el sistema, y que en caso de ser igual a 0, reiniciara el servicio.

FUENTE ORIGINAL

Comando top

El comando TOP muestra a tiempo real un listado de los procesos que se están ejecutando en el sistema, especificando además el % de Cpu y Memoria que están utilizando, sus IDs, usuarios que lo están ejecutando, etc. Todo esto y mucho más lo hace una de las herramientas imprescindibles para la administración de cualquier tipo de sistema Unix y derivado.

La salida por pantalla de Top, puede dividirse en dos partes, la “cabecera” muestra entre otras cosas, el Uptime del servidor, nº de usuarios conectados y load average. En la siguiente línea podemos ver el nº de procesos ejecutandose en el sistema, así como el uso de disco, memoria y cpus.

Posteriormente podemos observar un listado de procesos, que pueden ser ordenados por uso de cpu o memoria, lo que es una excelente ayuda para detectar procesos que consumen excesivos recursos en el servidor. Este listado, muestra varios detalles de cada uno de los procesos, como pueden ser el PID de proceso, usuario que lo ejecuta, %cpu y memoria que consume, comando que está ejecutando o tiempo de ejecución del proceso entre otros.

Como siempre digo, toda la información necesaria para sacar el máximo partido al proceso la tenemos en man:

man top

No obstante, paso a detallar algunas de las opciones que podemos pasarle al comando: Opciones del comando TOP: -c : Para visualizar la línea de comandos completa de cada proceso, activado mostrará las rutas completas, mientras que desactivandolo solo muestra el nombre del programa, ejemplo:

top -c:

 4969 root      20   0 55092  39m   9m S   14  7.8  26:08.38 /usr/bin/X :0 -br -audit 0 -auth /var/lib/gdm/:0.Xauth -nolisten tcp vt7
top

 4969 root      20   0 59996  39m   9m S   16  7.8  26:05.87 Xorg

-d : Intervalo de actualización y refresco, podemos asignarle un valor numérico (segundos) que determinará cada cuanto actualice la información. -U : Monitorizar solamente los procesos de un determinado UID. -p : Monitorizar solamente los ID de procesos especificados, ejemplo:

top -p12 -p133

-n : Especificaremos el nº de veces que actualizará hasta que finalice la ejecución de Top, ejemplo:

top -n4 # Refrescará la información cuatro veces y finalizará la ejecución de TOP.

FUENTE ORIGINAL

Comando Kill

COMANDO kill Básicamente, existen 4 maneras de matar eficazmente un proceso en Linux: matarlo por el nombre, mediante la especificación de una parte del nombre, por el PID, señalando la ventana del proceso con el cursor del mouse. Veamos una por una... Kill: matar un proceso usando su PID La forma más complicada pero al mismo tiempo más precisa de matar un proceso es a través de su PID (siglas en inglés de "Identificador de Proceso").

Cualquiera de estas 3 variantes puede servir:

kill -TERM pid
kill -SIGTERM pid
kill -15 pid

Se puede usar el nombre de la señal (TERM o SIGTERM) que se desea mandar al proceso o su número de identificación (15). Para ver un listado completo de las posibles señales, sugiero verificar el manual de kill. Para ello, ejecutá:

 man kill

Veamos un ejemplo de cómo matar Firefox: Primero, hay que averiguar el PID del programa:

 ps -ef | grep firefox

Ese comando devolverá algo parecido a esto:

 1986 ?        Sl     7:22 /usr/lib/firefox-3.5.3/firefox

Usamos el PID devuelto por el comando anterior para aniquilar el proceso:

 kill -9 1986

killall: matar un proceso usando su nombre Este comando es bien fácil

 killall nombre_proceso

Un dato a tener en cuenta al usar este método es que en caso de que haya más de una instancia de ese programa ejecutándose, se cerrarán todas. pkill: matar un proceso usando parte de su nombre Es posible aniquilar un proceso especificando el nombre completo o parte del nombre. Eso significa que no hay necesidad de que recuerdes el PID del proceso para enviar la señal.

 pkill parte_nombre_proceso

Como contrapartida, este método aniquilará todos los procesos que contengan la palabra ingresada. Eso significa que si tenemos abiertos 2 procesos que comparten una palabra en el nombre, se cerrarán ambos.  xkill: matar un proceso seleccionando la ventana con el mouse Este es el método más sencillo y el más práctico. En caso de desastre, simplemente presioná Alt + F2 para que se abra el cuadro de diálogo que te permitirá ejecutar comandos. Desde allí, ejecutá el siguiente comando:

 xkill

El cursor del mouse se transformará en una pequeña calavera. Todo lo que resta es hacer clic en la ventana que querés cerrar y voilá. Chau proceso. Algunos comentarios finales Para terminar, quería compartir algunos consejos que pueden ser de utilidad. En Linux, al igual que en Windows, cuando un proceso se cuelga, generalmente se puede cerrar la ventana en cuestión haciendo clic en el botón Cerrar (que tiene la forma de una X). Luego de unos segundos, aparecerá una ventana preguntándonos si realmente queremos aniquilar el proceso puesto que éste no responde adecuadamente. Le damos que sí y listo.

Para terminar, quería compartir algunos consejos que pueden ser de utilidad. En Linux, al igual que en Windows, cuando un proceso se cuelga, generalmente se puede cerrar la ventana en cuestión haciendo clic en el botón Cerrar (que tiene la forma de una X). Luego de unos segundos, aparecerá una ventana preguntándonos si realmente queremos aniquilar el proceso puesto que éste no responde adecuadamente. Le damos que sí y listo. Eso quiere decir que los métodos aquí descriptos deberían ser utilizados cuando no pasa nada al hacer clic en el botón Cerrar de la ventana en cuestión. En caso de desastre mayor, no olvides que antes de presionar es posible realizar un reinicio "seguro".

Por último, puede ser de mucha utilidad descubrir cuáles son los procesos que están ejecutándose actualmente. Para ello, los diferentes entornos de escritorio (GNOME, KDE, etc.) tienen herramientas gráficas que facilitan esta tarea. No obstante, en caso de que no puedas acceder a ellas o simplemente desees hacerlo desde el terminal, podés ejecutar lo siguiente:

 top

En caso de que esto no funcione o que no tengas el paquete correspondiente instalado, siempre podés ejecutar:

 ps -A
 ps axu

Esto listará todos los procesos en ejecución, junto con sus respectivos nombres y PIDs.

FUENTE ORIGINAL


 

 

Comando ps

El comando ps: Listar y manejar procesos

Una entrada para los que se inician en el mundo Unix/Linux. El comando ps muestra por pantalla un listado de los procesos que se están ejecutando en el sistema.

Si no añadimos ningún parámetro, ps mostrará los procesos del usuario con el que estamos logueados. Por otra parte, los parámetros más básicos a conocer son los siguientes:

-axu Lista los procesos de todos los usuarios con información añadida (destacamos más abajo).

-a Lista los procesos de todos los usuarios.

-u Lista información del proceso como por ejemplo el usuario que lo está corriendo, la utilización de Cpu y memoria, etc.

-x Lista procesos de todas las terminales y usuarios

-l Muestra información que incluye el UID y el valor “nice“.

–forest – Muestra el listado procesos en un formato tipo árbol que permite ver como los procesos interactuan entre si, podría ser algo similar al comando pstree.
Ejemplo de uso del comando ps:

FUENTE ORIGINAL

Editores de Consola

Editor Emacs

Emacs es un editor de texto con una gran cantidad de funciones, muy popular entre programadores y usuarios técnicos. Gnu Emacs es obviamente parte del proyecto GNU y la versión más popular de Emacs con una gran actividad en su desarrollo. El manual de GNU Emacs lo describe como "un editor extensible, personalizable, auto-documentado y de tiempo real."

El EMACS original significa, Editor MACroS para el TECO. Fue escrito en 1975 por Richard Stallman junto con Guy Steele. Fue inspirado por las ideas de TECMAC y TMACS, un par de editores TECO-macro escritos por Guy SteeleDave MoonRichard GreenblattCharles Frankston, y otros. Se han lanzado muchas versiones de EMACS hasta el momento, pero actualmente hay dos que son usadas comúnmente: GNU Emacs, iniciado por Richard Stallman en 1984, y XEmacs, una fork de GNU Emacs, que fue iniciado en 1991. Ambos usan una extensión de lenguaje muy poderosa, Emacs Lisp, que permite manejar tareas distintas, desde escribir y compilar programas hasta navegar en Internet. GNU Emacs es mantenido por el Proyecto GNU Emacs, el cual cuenta entre sus miembros a Richard Stallman.

más info

USO:

$ emacs filename

 

C-t = Control + T (donde T es una tecla xD) (ejemplo: C-x = Control+x)
 
M-t = ALT + Tecla ó ESC-x (M-x = ALT+x o también ESC+x)
 
S-t = Shift+ Tecla 
 
Edición de Textos
 
Comencemos con las teclas comunes que se emplean al usar emacs:
 
 C-Supr     >> Cortar (también con C-w)
 
 C-c        >> Copiar
 
 S-Insert   >> Pegar (también  con C-y) 
 
 C-_        >> Desacer (Undo) [Control+shift+Guion]** Borra el caracter anterior al cursor
 
 C-d        >> Borra el siguiente caracter (equivale Supr en los editores de DOS)
 
 M-d        >> Borra la siguiente palabra
 
 M- >> Borra la palabra anterior
 
 C-k        >> Borra de el cursor hasta el fin de la linea
 
 M-k        >> Borra de el cursor hasta el final de la frase (cuando borras una palabra o una frase, emacs la almacena como si la hubieras cortado, para recuperarla (pegarla) a partir del cursor puedes teclear shif- o C-y)
 
 C-l        >> Recentra el cursor y redibuja la pantalla, poniéndolo en el mediode la ventana.
 
M-%    >> Reemplazar texto con petición de confirmación (la combinación de teclas es Alt+shitf+5)
 
Ficheros y Buffers
Un Buffer no es más que un espacio de memoria reservado por emacs para almacenar temporalmente el texto que estás editando. Por supuesto, puedes trabajar con varios buffers a la vez, e includo dividir el espacio de edición de forma que puedas ver dos ficheros simultáneamente (yo esto lo utilizo sobre todo para programación, divido la ventana en dos y en uno tengo el fichero de tipos (.h) y en otros el fichero fuente (.c), de forma que veo en todo momento las variables de una estructura, los #define, etc...)
 
C-x C-f >> Abrir un fichero en un nuevo buffer
C-x C-s >> Salvar el fichero con el nombre actual
C-x C-w >> Salvar con nombre distinto (Save as)
C-x C-i >> Insertar un archivo en el buffer actual
C-x C-c >> Salir de emacs (Nota:Siempre pregunta si grabar buffers)
C-x k   >> Cerrar buffer actual.
Varios BuFFerS
 
C-x C-b >> Listar los buffers abiertos (abre otra ventana)
C-x s   >> Con este comando podrás salvar todos los buffers que tienes abiertos
Movimiento Por Pantalla
Aunque hay otras teclas rápidas que hacen las mismas funciones, he preferido elegir estas ya que para los usuarios que nos hemos migrado de WIN/DOS a Linux nos resulta más cómodo utilizar las flechas
 
Inicio        >> Va al Inicio del Documento (también C-<)
Fin          >> Va al final del Documento(también C->)    
C-Flecha-Izquierda  >> Ir al final de la palabra actual
C-Flecha-Derecha  >> Lo mismo que el anterior pero va al inicio
C-Flecha-Abajo      >> Avanzar al siguiente párrafo
C-Flecha-Arriba     >> Retroceder al párrafo anterior            
AvPag                      >> Avanzar una pantalla (también con C-v)
RePag                     >> Retroceder una pantalla (también con M-v)
C-a                           >> Ir al inicio de da línea actual
C-e                           >> Ir al final de la linea actual
M-a                          >> Ir al inicio de un párrafo
M-e                          >> Ir al Final de un párrafo
M-f                           >> Avanzar una palabra
M-b                          >> Retroceder una palabra
De todas formas, aquí incluyo las combinaciones alternativas, que según los autores de la ayua del editor, al final resultan más comodas, al no tener que llevar la mano hasta la zona de las flechas. Cuestión de gustos :-! (Nota: pegado de la ayuda incluida en el editor)
 
C-f Move forward a character
C-b Move backward a character
 
M-f Move forward a word
M-b Move backward a word
 
C-n Move to next line
C-p Move to previous line
 
Try M-< now, to move to the beginning of the tutorial. Then use C-v repeatedly to move back here.
 
Try M-> now, to move to the end of the tutorial. Then use M-v repeatedly to move back here.
Trabajando con varias ventanas
C-x 1 >> Ver una sóla ventana.
C-x 2   >> Divide la ventana actual en dos filas
C-x 3   >> Divide la ventana actual en dos columnas
C-x 0   >> (cero) Elimina la ventana actual.
C-x b   >> Cambiar el buffer de la venana actual. En minibuffer aparece prompt
C-x o   >> Cambiar de ventana cuando el aréa de trabajo está dividida en varias ventanas

MANUAL DE USUARIO EMACS EN ESPAÑOL

FUENTES:

http://www.merlos.org/documentos/linux/22-tutorial-de-emacs.html

http://es.wikipedia.org/wiki/Emacs

Editor nano

 

En informáticanano es un editor de texto para sistemas Unix basado en curses. Es un clon de Pico, el editor del cliente de correo electrónicoPine. nano trata de emular la funcionalidad y la interfaz de fácil manejo de Pico, pero sin la integración con Pine.

Liberado bajo los términos de la GNU General Public License, nano es software libre. Con la liberación de la versión 2.0.7 la licencia se cambió de GPLv2 a GPLv3.

más info

USO:

$ nano fichero

OPCIONES:

M = Esc/Alt | | Ctrl + g ----------- Invocar el menú de ayuda.
Ctrl + x ----------- Salir de nano.
Ctrl + o ----------- Escribir el fichero actual a disco.
Ctrl + r ----------- Insertar otro fichero en el actual.
Ctrl + w ----------- Buscar un texto en el editor.
Ctrl + y ----------- Moverse a la página anterior.
Ctrl + v ----------- Moverse a la página siguiente.
Ctrl + k ----------- Cortar la línea actual y guardarla en el cutbuffer.
Ctrl + u ----------- Pegar el cutbuffer en la línea actual.
Ctrl + l ----------- Redibujar la pantalla actual.
Ctrl + j ----------- Justificar el párrafo actual.
Ctrl + m ----------- Insertar un retorno de carro en la posición del cursor.
Ctrl + _ ----------- Ir a un número de línea en concreto.
M + g -------------- Ir a un número de línea en concreto.
M + i -------------- Auto indentar habilitar/deshabilitar.
M + x -------------- Modo ayuda habilitar/deshabilitar.
M + p -------------- Modo Pico habilitar/deshabilitar.
M + m -------------- Soporte para ratón habilitar/deshabilitar.
M + r -------------- Reemplazar texto en el editor.
M + e -------------- Expresiones regulares habilitar/deshabilitar.
M + b -------------- Respaldar ficheros habilitar/deshabilitar.
M + s -------------- Desplazamiento suave habilitar/deshabilitar.
M + h -------------- Tecla \'smart home\' habilitar/deshabilitar.
M + y -------------- Coloreado de sintaxis habilitar/deshabilitar.
M + p -------------- Mostrar blancos habilitar/deshabilitar.

Editor vim

Vim (del inglés Vi IMproved) es una versión mejorada del editor de texto vi, presente en todos los sistemas UNIX. Es el editor de texto para terminal más avanzado que hay, por lo menos que yo conozca.

Su autor, Bram Moolenaar, presentó la primera versión en 1991, fecha desde la que ha experimentado muchas mejoras. La principal característica tanto de Vim como de Vi consiste en que disponen de diferentes modos entre los que se alterna para realizar ciertas operaciones, lo que los diferencia de la mayoría de editores comunes, que tienen un sólo modo en el que se introducen las órdenes mediante combinaciones de teclas ointerfaces gráficas.

más info

USO:

$ vim nombre_de_archivo

Si queremos ejecutar la versión completa, con resaltado de sintaxis, ejecutamos este otro comando:

$ vim.full

Y para iniciarlo en modo gráfico, este otro:

$ gvim
(Si existe el archivo, aparece la primera pantalla y el archivo se almacena en un buffer intermedio).Todos los cambios que realiza el usuario se harán en el buffer intermedio.
Hasta que el usuario no lo indique no se registrarán los cambios en el archivo original. Los cambios van apareciendo en la pantalla de manera inmediata.
 

                                                                            Comandos en Vim
 
Comando Función
 :q Salir (si no se han hecho cambios).
 :q! Salir sin guardar los cambios.
 :u Deshacer el último cambio.
 :w <archivo> Guardar los cambios.
 :wq <archivo> Salir guardando los cambios.
 :x <archivo> Salir guardando los cambios.
:wq! :x!  Guardar y salir ( ! ) sin mostrar el mensaje de advertencia.
a Inserta texto despus del cursor.
A Inserta texto al final de la linea.
ESC Pasar a modo comando.
i Pasar a modo inserción, colocando el cursor en la ubicación actual.
I Pasar a modo insercin, colocando el cursor al principio de la linea.
v Pasar a modo visual, el cual permite seleccionar texto con el cursor.
/ <texto> / Buscar el texto indicado en el archivo.
n Encontrar el siguiente (busqueda).
N Encontrar el anterior (busqueda).
p Pegar después del cursor(o en la linea de abajo).
P Pegar antes del cursor(o en la linea de arriba).
D Cortar de la posición del cursor al final de la linea.
dw Quitar una palabra.
cw Cambiar una palabra.
dd Quitar una linea.
w W Moverse una palabra a la derecha.
h Moverse un caracter a la izquierda.
j Moverse una linea hacia abajo.
k Moverse una linea hacia arriba.
l Moverse una caracter hacia la derecha.
 
Los argumentos se encierran entre llaves (< >) para diferenciarse del nombre del comando,
por lo tanto estas llavesno se deben escribir.
 

Útiles para SSH

Los 25 Comandos más útiles SSH

OpenSSH es la versión gratuita de la herramienta para conectividad SSH que la mayoría de los usuarios utilizan con confianza. Es de los pocos protocolos que encriptan todo el trafico  incluida la autentificacion inicial. Esta pequeña pero potente herramienta se ha ganado el reconocimiento de la comunidad de Internet, incluyendo empresas de seguridad como Trend Micro. En definitiva una herramienta que cualquier administrador de sistemas ha de usar dia a día en las tareas cotidianas, Aquí os dejo una recopilación de los comando que mas me gustan:

1) Copia la clave de ssh a un servidor user@host para evitar meter la contraseña cada vez.

1
ssh-copy-id user@host

ssh-keygen genera las claves de forma local.

2) Abre un túnel para acceder desde un puerto local a uno de un servidor remoto

1
ssh -N -L 2001:localhost:80 somemachine

Ahora puedes entrar al servidor remoto con la direccion http://localhost:2001/

3) Conecta tu micrófono al altavoz de un equipo remoto.

1
dd if=/dev/dsp | ssh -c arcfour -C username@host dd of=/dev/dsp

La calidad no es del todo optima, pero escucharse, se escucha.

4)Compara un archivo remoto con uno local.

1
ssh user@host cat /path/to/remotefile | diff /path/to/localfile -

Util para comparar diferencias entre los archivos locales y remotos.

5) Monta el directorio/systemadearchivos via SSH

1
sshfs name@server:/path/to/folder /path/to/mount/point

Para instalar SSHFS ir a  http://fuse.sourceforge.net/sshfs.html
Para montar archivos por Internet de forma segura.

6) Conexion SSH a traves de un tercer equipo

1
ssh -t reachable_host ssh unreachable_host

Queremos conectar a un equipo al que no tenemos acceso y tenemos que conectarnos a través del equipo que puede acceder a dicho equipo de forma local. Este comando creaa una conexion al equipo que no tenemos acceso de forma oculta a través del equipo que si tiene acceso.

7) Copia del Host1 al Host2 a traves de nuestro equipo

1
ssh root@host1 "cd /somedir/tocopy/ &amp;&amp; tar -cf – ." | ssh root@host2 "cd /samedir/tocopyto/ &amp;&amp; tar -xf -"

Útil si tenemos acceso al host1 y host2, pero ellos no tienen acceso entre si, y tampoco tienen acceso a nosotros (ncat no funciona)

8)Ejecuta un programa con interfaz gráfica de forma remota

1
ssh -fX @

La configuración SSH necesita que:

X11Forwarding yes # por defecto en Debian

Aunque también es conveniente dejar activado:
Compression delayed

9) Crear una conexión persistente a un equipo

1
ssh -MNf @

Crea una conexion persistente SSH a un equipo. Combinado con la configuracion en nuestro ~/.ssh/config:
Host host
ControlPath ~/.ssh/master-%r@%h:%p
ControlMaster no
Todas las conexiones SSH hacia el equipo irán por la conexion persistente en el Socket. Esto es muy util si estamos usando SSH para sincronizar archivos (usando rsync/sftp/cvs/svn) de forma regular porque no crea un socket nuevo cada vez que abre una conexion SSH.

10) Conectar la pantalla via SSH

1
ssh -t remote_host screen -r

Con este comando podemos ajuntar un monitor local a una conexión remota vía ssh

11) Llamada a puertos!

1
knock  3000 4000 5000 &amp;&amp; ssh -p  user@host &amp;&amp; knock  5000 4000 3000

Llama a puertos para abrir un servicio (ssh por ejemplo) y llama de nuevo al puerto para cerrar el puerto, hay que tener instalado knockd.
Ejemplo del archivo de configuración:
[options]
logfile = /var/log/knockd.log
[openSSH]
sequence = 3000,4000,5000
seq_timeout = 5
command = /sbin/iptables -A INPUT -i eth0 -s %IP% -p tcp –dport 22 -j ACCEPT
tcpflags = syn
[closeSSH]
sequence = 5000,4000,3000
seq_timeout = 5
command = /sbin/iptables -D INPUT -i eth0 -s %IP% -p tcp –dport 22 -j ACCEPT
tcpflags = syn

12) Elimina una linea en un archivo de texto. Útil para solucionar problemas

1
ssh-keygen -R

En este caso es mejor usar herramientas dedicadas.

13) Ejecuta comando complejos de forma remota vía SSH, sin escapar las comillas

1
ssh host -l user $(

Más sencillo, más exportable: ssh host -l user “cat cmd.txt”

14) Copia una base de datos MySQL a un nuevo servidor via SSH en un solo comando

1
mysqldump –add-drop-table –extended-insert –force –log-error=error.log -uUSER -pPASS OLD_DB_NAME | ssh -C user@newhost "mysql -uUSER -pPASS NEW_DB_NAME"

Dumps una base de datos MySQL a través de un túnel ssh comprimido y lo usa como entrada a mysql – i tener en cuenta que es el método más rápido de migrar una base de datos a un nuevo servidor.

15) Elimina una liea en un archivo de texto. Útil para arreglar advertencias de cambios de claves ssh

1
sed -i 8d ~/.ssh/known_hosts

16) Comando para copiar nuestra clave pública ssh a un nuevo servidor y no tenemos el comando ssh-copy-id

1
cat ~/.ssh/id_rsa.pub | ssh user@machine "mkdir ~/.ssh; cat &gt;&gt; ~/.ssh/authorized_keys"

Si usamos Mac OS X o cualquier otra variante *nix que no posee el comando ssh-copy-id, en una sola linea escribimos nuestra clave pública a un equipo remoto para no tener que meter la contraseña para logearnos.

17) Prueba de red para ver las condiciones de una conexion ssh

1
yes | pv | ssh $host "cat &gt; /dev/null"

Conecta al equipo vía ssh y muestra la velocidad de transferencia, redirigiendo todos los datos transferidos a /dev/null
necesita tener pv instalado
Debian: ‘apt-get install pv’
Fedora: ‘yum install pv’ (puede que necesite los repos ‘extras’ habilitados)

18) Como establecer una conexion gáfica a la cual podamos conectarnos

1
ssh -t user@some.domain.com /usr/bin/screen -xRR

Mucho antes de que las terminales tabbed, la gente ha estado usando esto para abrir múltiples shells a través de un mismo terminal de texto. Combinado con ssh, nos da la posibilidad para abrir tantos shells como queramos en las opciones anteriores. Si nos deconectamos con “Ctrl-a d” o se cierra por accidente nuestra sesión ssh, todos los procesos que estemos ejecutando permanecen activos. otros comando gráficos útiles son “Ctrl-a c” (abre nuevo shell) y “Ctrl-a a” (alternar entre shells). Más comando gráficos aquí: http://aperiodic.net/screen/quick_reference

19) Resumir una copia via scp de un arvhivo de gran tamaño

1
rsync –partial –progress –rsh=ssh $file_source $user@$host:$destination_file

Puede resumir una copia fallida ( útil cuando se transfieren archivos grandes como db dumps a través de vpn ) usando rsync.
Necesita rsync instalado en ambos equipos.
rsync –partial –progress –rsh=ssh $file_source $user@$host:$destination_file local > remote
or
rsync –partial –progress –rsh=ssh $user@$host:$remote_file $destination_file remote > local

20) Analizar el tráfico remoto via ssh con wireshark

1
ssh root@server.com 'tshark -f "port !22" -w -' | wireshark -k -i -

Así capturamos trafico en un equipo remoto con tshark, envía los datos raw pcap a través del enlace ssh, y lo muestra en wireshark. Con ctrl+C paramos la captura pero tambien nos cierra la ventana de wireshark. Esto podemos evitarlo usando el comando -c # en tshark para solo capturar un número # de paquetes, o redirigiendo los datos a través de una named pipe en vez de directamente de ssh a wireshark. Recomiendo filtrar tanto como se pueda en el comando a tshark para preservar en ancho de banda. tshark puede ser substituido con tcpdump usando:

1
ssh root@server.com tcpdump -w – 'port !22' | wireshark -k -i -

21) Tener una conexión ssh abierta de forma permanente

1
autossh -M50000 -t server.example.com 'screen -raAd mysession'

Abre una sesión ssh de forma permanente, fantástico para portátiles que pierden conectividad a Internet cuando se cambian de puntos de acceso inhalámbricos.

22) Clientes SSH más fuertes, rápidos y seguros

1
ssh -4 -C -c blowfish-cbc

Con esto forzamos la compresion IPv4, especificamos el cifrado con Blowfish. Dejamos cosas como el master control sessions porque no es compatible con la mayoría de los shells y ademas acelera el proceso.

23) Ahorrar ancho de banda con cstream

1
tar -cj /backup | cstream -t 777k | ssh host 'tar -xj -C /backup'

Con esto comprimimos con bzips una carpeta y la transferimos a una conexion de 777k bit/s.
cstream hace mucho más, si quereis mas informacion podeis ir a:http://www.cons.org/cracauer/cstream.html#usage
por ejemplo:

1
echo w00t, i’m 733+ | cstream -b1 -t2

24) Transferir nuestra clave SSH publica a otro equipo en uno solo paso

1
ssh-keygen; ssh-copy-id user@host; ssh user@host

Este comando nos permite transferir en un sencillo paso nuestra clave publica ssh para acceder al equipo sin necesidad de contraseña. Tened cuidado si ya tenemos tenemos la clave publica en el directorio ~/.ssh directory, porque puede ser que ssh-keygen la sobrescriba. ssh-copy-id copia la clave y la introduce en el equipo remoto en el archivo ~/.ssh/authorized_keys.

25) Copiar stdin al bufer de X11

1
ssh user@host cat /path/to/some/file | xclip

Si has tenido que scp un archivo al equipo de trabajo para enviarlo por mail como adjunto, xclip nos puede ayudar porque copia su stdin al buffer de x11, con ello solo tenemos que pulsar el botón central para pegar el contenido de ese archivo gigante.

Fuente Original: http://kikoseijo.com/25-de-los-comandos-mas-utiles-de-ssh/

Otros post SSH en fruteroloco.es:

http://fruteroloco.es/content/copiar-archivos-remoto-desde-terminal-y-viceversa-comando-scp

http://fruteroloco.es/content/comandos-poco-usados

Hardware, Kernel y Logs

$ uname -a

Versión del kernel.

$ cat /proc/version

Versión del nucleo y compilador empleado.

$ lsmod

Lista los módulos cargados.

$ cat /proc/modules

Lista los módulos cargados.

$ lsmod | grep módulo

Ver si está cargado el módulo.

$ modinfo módulo

Muestra información sobre un módulo.

# modprobe módulo

Inserta un módulo en el kernel cargando antes los módulos de los cuales dependa.

# modprobe -r módulo

Elimina un módulo del kernel y si procede los que dependen del mismo.

# insmod módulo

Inserta un módulo en el kernel.

# rmmod módulo

Elimina un módulo del kernel.

# echo módulo >> /etc/modules

Inserta un módulo en el kernel de forma permanente.

# depmod módulo

Comprueba las dependencias del módulo.

# modconf

Programa gráfico para listar,cargar y descargar módulos del kernel.

# alsaconf

Programa interactivo que detecta las tarjetas de audio y carga los modulos adecuados.

# less /var/log/kern.log

Mensajes del nucleo (solo root o algun usuario que pertenesca al grupo adm tiene acceso a los logs)

# less /var/log/syslog

Registro de mensajes relativos a la seguridad.

# less /var/log/debug

Registro de información de depuración de los programas.

# less /var/log/messages

Mensajes del sistema de carácter informativo.

# less /var/log/user.log

Información del usuario.

# less /var/log/XFree86.0.log

Información sobre las X

# less /var/log/Xorg.0.log

Información sobre las X

# less /var/log/auth.log

Accesos al sistema(incluye los intentos fallidos).

# last

Lista los usuarios conectados/desconectados (fichero /var/log/wtmp).

# lastb

Muestra los intentos de conexión fallidos (fichero /var/log/btmp).

# hdparm /dev/hda

Verificar DMA

# hdparm -I /dev/hdx

Información sobre hdx

# hdparm -d1 /dev/hdx

Activar DMA en el disco duro o periférico.

$ dmesg

Ver la salida que el kernel produjo en el arranque.

$ dmesg | grep hd

Información sobre dispositivos IDE.

# sensors-detect

Detecta,instala y carga los sensores y los módulos necesarios(en un kernel 2.6)

# sensors

Tras ejecutar el anterior,muestra temperaturas, voltajes y revoluciones de ventilador.

# lsdev

Muestra información sobre los dispositivos(canales IRQ,DMA y puertos E/S que utilizan)

# lspci

Ver dispositivos conectados a la placa madre mediante un bus PCI.

# lsusb

Ver los buses USB y los dispositivos conectados a los mismos.

# cdda2wav -scanbus

Comprobar el interfaz SCSI.

# cdrecord -scanbus

Comprobar el interfaz SCSI.

$ cat /proc/meminfo

Información sobre la memoria.

$ cat /proc/cpuinfo

Información sobre el procesador.

$ cat /proc/devices

Información sobre dispositivos en uso.

Comandos poco usados

1- monta el directorio/sistema de ficheros a través de SSH.

sshfs user@host:/path/to/dir /path/to/mount/point

2- ejecuta el comando anterior reemplazando la cadena “foo” por “bar”.

!!:gs/foo/bar

3- muestra los sistemas de ficheros montados de una forma ordenada.

mount | column -t

4- Ejecuta un comando sin guardarlo en el historial.

[space] command

5- Compara un fichero remoto con un fichero local.

ssh user@host cat /path/to/remotefile | diff /path/to/localfile

6- captura el video de un escritorio Linux.

ffmpeg -f x11grab -s wxga -r 25 -I :0.0 -sameq /tmp/out.mpg

7- mtr combina la funcionalidad de traceroute y ping.

mtr google.com

8- Guarda un fichero que has editado en vim sin los permisos necesarios.

:w !sudo tee %

9- Ejecuta un servidor web en el directorio actual accesible mediante http://$HOSTNAME:8000/.

 python -m SimpleHTTPServer

10- Ejecuta el último comando como root.

sudo !!

11- Descarga un sitio web entero.

wget -random-wait -r -p -e robots=off -U mozilla http://www.example.com

12– lista el tamaño de todos los subdirectorios desde la posición actual.

du -h --max-depth=1

13– acceso rápido a la tabla ASCII.

man ascii

14- Apaga un Windows desde Linux.

net rpc shutdown -I WindowsIPAddr -U user%password

15- muestra el top 10 de procesos ordenados por uso de memoria.

ps -aux | sort -nk + 4 | tail

16– configura una alarma sonora cuando la dirección IP se pone en línea.

ping -i 60 -a IPAddr

17– arranca un sencillo servidor SMTPescuchando en el puerto 1025 de localhost.

python -m smtpd -n -c DebuggingServer localhost:1025

18- ver la actividad del servicio de red en tiempo real.

lsof -i

19– muestra la distribución Linux instalada.

cat /etc/issue

20– crea un backdoor para permitir conexiones remotas a bash con netcat

nc -w -l -p 1234 -e /bin/bash

FUENTE ORIGINAL

Los 50 comandos más usuados en UNIX & LINUX

1. tar ejemplos de comandos

Crear un nuevo archivo tar.
 
$ tar cvf archive_name.tar dirname/

Extraer archivo tar existente

$ tar xvf archive_name.tar

Ver un archivo tar existente

$ tar tvf archive_name.tar

Más ejemplos de tar: The Ultimate Tar Command Tutorial with 10 Practical Examples

2. grep ejemplos del comando

Búsqueda de una cadena dada en un archivo (caso de búsqueda en minúsculas)

$ grep -i "the" demo_file

Imprima la línea encajada, junto con las 3 líneas después de ella

$ grep -A 3 -i "example" demo_text

Búsqueda de una cadena dada en todos los archivos de forma recursiva

$ grep -r "ramesh" *

Más ejemplos del comando grep: Get a Grip on the Grep! – 15 Practical Grep Command Examples

3. Encontrar ejemplos de comandos

Buscar archivos usando file-name ( case in-sensitve find)

# find -iname "MyCProgram.c"

Ejecutar comandos en los archivos encontrados por el comando find

$ find -iname "MyCProgram.c" -exec md5sum {} \;

Buscar todos los archivos vacíos en el directorio principal

# find ~ -empty

Más ejemplos del comando find: Mommy, I found it! — 15 Practical Linux Find Command Examples

4. ssh ejemplos:

Login a host remoto

ssh -l jsmith remotehost.example.com

Debug ssh cliente

ssh -v -l jsmith remotehost.example.com

Versión del cliente de visualización ssh

$ ssh -V
OpenSSH_3.9p1, OpenSSL 0.9.7a Feb 19 2003

Más ejemplos del comando ssh: 5 Basic Linux SSH Client Commands

 

Ejemplos de comandos 5. Sed 
 
Cuando se copia un archivo de DOS a Unix, se puede encontrar \ r \ n al final de cada línea. En este ejemplo se convierte el formato de archivo de DOS para el formato de archivo de Unix utilizando comando sed.
$sed 's/.$//' filename

El contenido de archivos de impresión en orden inverso

$ sed -n '1!G;h;$p' thegeekstuff.txt

Añadir número de línea para todos las líneas no vacías de un archivo

$ sed '/./=' thegeekstuff.txt | sed 'N; s/\n/ /'

Más ejemplos del comando sed: Advanced Sed Substitution Examples

6. awk ejemplos del comando

Quite las líneas duplicadas usando awk

$ awk '!($0 in array) { array[$0]; print }' temp

Imprimir todas las líneas de /etc/passwd que tiene el mismo uid y gid

$awk -F ':' '$3==$4' passwd.txt

Imprimir único campo específico de un archivo.

$ awk '{print $2,$5;}' employee.txt

Más ejemplos del comando awk : 8 Powerful Awk Built-in Variables – FS, OFS, RS, ORS, NR, NF, FILENAME, FNR

7. vim ejemplos del comando

Ir a la línea 143 del archivo

$ vim +143 filename.txt

Ir al primer partido de la especificada

$ vim +/search-term filename.txt

Abra el archivo en modo de sólo lectura

$ vim -R /etc/passwd

Más ejemplos de vim: How To Record and Play in Vim Editor

8. diff command examples

Ignore white space while comparing.

# diff -w name_list.txt name_list_new.txt

2c2,3
< John Doe --- > John M Doe
> Jason Bourne

More diff examples: Top 4 File Difference Tools on UNIX / Linux – Diff, Colordiff, Wdiff, Vimdiff

9. sort command examples

Sort a file in ascending order

$ sort names.txt

Sort a file in descending order

$ sort -r names.txt

Sort passwd file by 3rd field.

$ sort -t: -k 3n /etc/passwd | more

10. export command examples

To view oracle related environment variables.

$ export | grep ORACLE
declare -x ORACLE_BASE="/u01/app/oracle"
declare -x ORACLE_HOME="/u01/app/oracle/product/10.2.0"
declare -x ORACLE_SID="med"
declare -x ORACLE_TERM="xterm"

To export an environment variable:

$ export ORACLE_HOME=/u01/app/oracle/product/10.2.0

11. xargs command examples

Copy all images to external hard-drive

# ls *.jpg | xargs -n1 -i cp {} /external-hard-drive/directory

Search all jpg images in the system and archive it.

# find / -name *.jpg -type f -print | xargs tar -cvzf images.tar.gz

Download all the URLs mentioned in the url-list.txt file

# cat url-list.txt | xargs wget –c

12. ls command examples

Display filesize in human readable format (e.g. KB, MB etc.,)

$ ls -lh
-rw-r----- 1 ramesh team-dev 8.9M Jun 12 15:27 arch-linux.txt.gz

Order Files Based on Last Modified Time (In Reverse Order) Using ls -ltr

$ ls -ltr

Visual Classification of Files With Special Characters Using ls -F

$ ls -F

More ls examples: Unix LS Command: 15 Practical Examples

13. pwd command

pwd is Print working directory. What else can be said about the good old pwd who has been printing the current directory name for ages.

14. cd command examples

Use “cd -” to toggle between the last two directories

Use “shopt -s cdspell” to automatically correct mistyped directory names on cd

More cd examples: 6 Awesome Linux cd command Hacks

15. gzip command examples

To create a *.gz compressed file:

$ gzip test.txt

To uncompress a *.gz file:

$ gzip -d test.txt.gz

Display compression ratio of the compressed file using gzip -l

$ gzip -l *.gz
         compressed        uncompressed  ratio uncompressed_name
              23709               97975  75.8% asp-patch-rpms.txt

16. bzip2 command examples

To create a *.bz2 compressed file:

$ bzip2 test.txt

To uncompress a *.bz2 file:

bzip2 -d test.txt.bz2

More bzip2 examples: BZ is Eazy! bzip2, bzgrep, bzcmp, bzdiff, bzcat, bzless, bzmore examples

17. unzip command examples

To extract a *.zip compressed file:

$ unzip test.zip

View the contents of *.zip file (Without unzipping it):

$ unzip -l jasper.zip
Archive:  jasper.zip
  Length     Date   Time    Name
 --------    ----   ----    ----
    40995  11-30-98 23:50   META-INF/MANIFEST.MF
    32169  08-25-98 21:07   classes_
    15964  08-25-98 21:07   classes_names
    10542  08-25-98 21:07   classes_ncomp

18. shutdown command examples

Shutdown the system and turn the power off immediately.

# shutdown -h now

Shutdown the system after 10 minutes.

# shutdown -h +10

Reboot the system using shutdown command.

# shutdown -r now

Force the filesystem check during reboot.

# shutdown -Fr now

19. ftp command examples

Both ftp and secure ftp (sftp) has similar commands. To connect to a remote server and download multiple files, do the following.

$ ftp IP/hostname
ftp> mget *.html

To view the file names located on the remote server before downloading, mls ftp command as shown below.

ftp> mls *.html -
/ftptest/features.html
/ftptest/index.html
/ftptest/othertools.html
/ftptest/samplereport.html
/ftptest/usage.html

More ftp examples: FTP and SFTP Beginners Guide with 10 Examples

20. crontab command examples

View crontab entry for a specific user

# crontab -u john -l

Schedule a cron job every 10 minutes.

*/10 * * * * /home/ramesh/check-disk-space

More crontab examples: Linux Crontab: 15 Awesome Cron Job Examples

21. service command examples

Service command is used to run the system V init scripts. i.e Instead of calling the scripts located in the /etc/init.d/ directory with their full path, you can use the service command.

Check the status of a service:

# service ssh status

Check the status of all the services.

service --status-all

Restart a service.

# service ssh restart

22. ps command examples

ps command is used to display information about the processes that are running in the system.

While there are lot of arguments that could be passed to a ps command, following are some of the common ones.

To view current running processes.

$ ps -ef | more

To view current running processes in a tree structure. H option stands for process hierarchy.

$ ps -efH | more

23. free command examples

This command is used to display the free, used, swap memory available in the system.

Typical free command output. The output is displayed in bytes.

$ free
             total       used       free     shared    buffers     cached
Mem:       3566408    1580220    1986188          0     203988     902960
-/+ buffers/cache:     473272    3093136
Swap:      4000176          0    4000176

If you want to quickly check how many GB of RAM your system has use the -g option. -b option displays in bytes, -k in kilo bytes, -m in mega bytes.

$ free -g
             total       used       free     shared    buffers     cached
Mem:             3          1          1          0          0          0
-/+ buffers/cache:          0          2
Swap:            3          0          3

If you want to see a total memory ( including the swap), use the -t switch, which will display a total line as shown below.

ramesh@ramesh-laptop:~$ free -t
             total       used       free     shared    buffers     cached
Mem:       3566408    1592148    1974260          0     204260     912556
-/+ buffers/cache:     475332    3091076
Swap:      4000176          0    4000176
Total:     7566584    1592148    5974436

24. top command examples

top command displays the top processes in the system ( by default sorted by cpu usage ). To sort top output by any column, Press O (upper-case O) , which will display all the possible columns that you can sort by as shown below.

Current Sort Field:  P  for window 1:Def
Select sort field via field letter, type any other key to return

  a: PID        = Process Id              v: nDRT       = Dirty Pages count
  d: UID        = User Id                 y: WCHAN      = Sleeping in Function
  e: USER       = User Name               z: Flags      = Task Flags
  ........

To displays only the processes that belong to a particular user use -u option. The following will show only the top processes that belongs to oracle user.

$ top -u oracle

More top examples: Can You Top This? 15 Practical Linux Top Command Examples

25. df command examples

Displays the file system disk space usage. By default df -k displays output in bytes.

$ df -k
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/sda1             29530400   3233104  24797232  12% /
/dev/sda2            120367992  50171596  64082060  44% /home

df -h displays output in human readable form. i.e size will be displayed in GB’s.

ramesh@ramesh-laptop:~$ df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda1              29G  3.1G   24G  12% /
/dev/sda2             115G   48G   62G  44% /home

Use -T option to display what type of file system.

ramesh@ramesh-laptop:~$ df -T
Filesystem    Type   1K-blocks      Used Available Use% Mounted on
/dev/sda1     ext4    29530400   3233120  24797216  12% /
/dev/sda2     ext4   120367992  50171596  64082060  44% /home

26. kill command examples

Use kill command to terminate a process. First get the process id using ps -ef command, then use kill -9 to kill the running Linux process as shown below. You can also use killall, pkill, xkill to terminate a unix process.

$ ps -ef | grep vim
ramesh    7243  7222  9 22:43 pts/2    00:00:00 vim

$ kill -9 7243

More kill examples: 4 Ways to Kill a Process – kill, killall, pkill, xkill

27. rm command examples

Get confirmation before removing the file.

$ rm -i filename.txt

It is very useful while giving shell metacharacters in the file name argument.

Print the filename and get confirmation before removing the file.

$ rm -i file*

Following example recursively removes all files and directories under the example directory. This also removes the example directory itself.

$ rm -r example

28. cp command examples

Copy file1 to file2 preserving the mode, ownership and timestamp.

$ cp -p file1 file2

Copy file1 to file2. if file2 exists prompt for confirmation before overwritting it.

$ cp -i file1 file2

29. mv command examples

Rename file1 to file2. if file2 exists prompt for confirmation before overwritting it.

$ mv -i file1 file2

Note: mv -f is just the opposite, which will overwrite file2 without prompting.

mv -v will print what is happening during file rename, which is useful while specifying shell metacharacters in the file name argument.

$ mv -v file1 file2

30. cat command examples

You can view multiple files at the same time. Following example prints the content of file1 followed by file2 to stdout.

$ cat file1 file2

While displaying the file, following cat -n command will prepend the line number to each line of the output.

$ cat -n /etc/logrotate.conf
    1	/var/log/btmp {
    2	    missingok
    3	    monthly
    4	    create 0660 root utmp
    5	    rotate 1
    6	}

31. mount command examples

To mount a file system, you should first create a directory and mount it as shown below.

# mkdir /u01

# mount /dev/sdb1 /u01

You can also add this to the fstab for automatic mounting. i.e Anytime system is restarted, the filesystem will be mounted.

/dev/sdb1 /u01 ext2 defaults 0 2

32. chmod command examples

chmod command is used to change the permissions for a file or directory.

Give full access to user and group (i.e read, write and execute ) on a specific file.

$ chmod ug+rwx file.txt

Revoke all access for the group (i.e read, write and execute ) on a specific file.

$ chmod g-rwx file.txt

Apply the file permissions recursively to all the files in the sub-directories.

$ chmod -R ug+rwx file.txt

More chmod examples: 7 Chmod Command Examples for Beginners

33. chown command examples

chown command is used to change the owner and group of a file. \

To change owner to oracle and group to db on a file. i.e Change both owner and group at the same time.

$ chown oracle:dba dbora.sh

Use -R to change the ownership recursively.

$ chown -R oracle:dba /home/oracle

34. passwd command examples

Change your password from command line using passwd. This will prompt for the old password followed by the new password.

$ passwd

Super user can use passwd command to reset others password. This will not prompt for current password of the user.

# passwd USERNAME

Remove password for a specific user. Root user can disable password for a specific user. Once the password is disabled, the user can login without entering the password.

# passwd -d USERNAME

35. mkdir command examples

Following example creates a directory called temp under your home directory.

$ mkdir ~/temp

Create nested directories using one mkdir command. If any of these directories exist already, it will not display any error. If any of these directories doesn’t exist, it will create them.

$ mkdir -p dir1/dir2/dir3/dir4/

36. ifconfig command examples

Use ifconfig command to view or configure a network interface on the Linux system.

View all the interfaces along with status.

$ ifconfig -a

Start or stop a specific interface using up and down command as shown below.

$ ifconfig eth0 up

$ ifconfig eth0 down

More ifconfig examples: Ifconfig: 7 Examples To Configure Network Interface

37. uname command examples

Uname command displays important information about the system such as — Kernel name, Host name, Kernel release number,
Processor type, etc.,

Sample uname output from a Ubuntu laptop is shown below.

$ uname -a
Linux john-laptop 2.6.32-24-generic #41-Ubuntu SMP Thu Aug 19 01:12:52 UTC 2010 i686 GNU/Linux

38. whereis command examples

When you want to find out where a specific Unix command exists (for example, where does ls command exists?), you can execute the following command.

$ whereis ls
ls: /bin/ls /usr/share/man/man1/ls.1.gz /usr/share/man/man1p/ls.1p.gz

When you want to search an executable from a path other than the whereis default path, you can use -B option and give path as argument to it. This searches for the executable lsmk in the /tmp directory, and displays it, if it is available.

$ whereis -u -B /tmp -f lsmk
lsmk: /tmp/lsmk

39. whatis command examples

Whatis command displays a single line description about a command.

$ whatis ls
ls		(1)  - list directory contents

$ whatis ifconfig
ifconfig (8)         - configure a network interface

40. locate command examples

Using locate command you can quickly search for the location of a specific file (or group of files). Locate command uses the database created by updatedb.

The example below shows all files in the system that contains the word crontab in it.

$ locate crontab
/etc/anacrontab
/etc/crontab
/usr/bin/crontab
/usr/share/doc/cron/examples/crontab2english.pl.gz
/usr/share/man/man1/crontab.1.gz
/usr/share/man/man5/anacrontab.5.gz
/usr/share/man/man5/crontab.5.gz
/usr/share/vim/vim72/syntax/crontab.vim

41. man command examples

Display the man page of a specific command.

$ man crontab

When a man page for a command is located under more than one section, you can view the man page for that command from a specific section as shown below.

$ man SECTION-NUMBER commandname

Following 8 sections are available in the man page.

  1. General commands
  2. System calls
  3. C library functions
  4. Special files (usually devices, those found in /dev) and drivers
  5. File formats and conventions
  6. Games and screensavers
  7. Miscellaneous
  8. System administration commands and daemons

For example, when you do whatis crontab, you’ll notice that crontab has two man pages (section 1 and section 5). To view section 5 of crontab man page, do the following.

$ whatis crontab
crontab (1)          - maintain crontab files for individual users (V3)
crontab (5)          - tables for driving cron

$ man 5 crontab

42. tail command examples

Print the last 10 lines of a file by default.

$ tail filename.txt

Print N number of lines from the file named filename.txt

$ tail -n N filename.txt

View the content of the file in real time using tail -f. This is useful to view the log files, that keeps growing. The command can be terminated using CTRL-C.

$ tail -f log-file

More tail examples: 3 Methods To View tail -f output of Multiple Log Files in One Terminal

43. less command examples

less is very efficient while viewing huge log files, as it doesn’t need to load the full file while opening.

$ less huge-log-file.log

One you open a file using less command, following two keys are very helpful.

CTRL+F – forward one window
CTRL+B – backward one window

More less examples: Unix Less Command: 10 Tips for Effective Navigation

44. su command examples

Switch to a different user account using su command. Super user can switch to any other user without entering their password.

$ su - USERNAME

Execute a single command from a different account name. In the following example, john can execute the ls command as raj username. Once the command is executed, it will come back to john’s account.

[john@dev-server]$ su - raj -c 'ls'

[john@dev-server]$

Login to a specified user account, and execute the specified shell instead of the default shell.

$ su -s 'SHELLNAME' USERNAME

45. mysql command examples

mysql is probably the most widely used open source database on Linux. Even if you don’t run a mysql database on your server, you might end-up using the mysql command ( client ) to connect to a mysql database running on the remote server.

To connect to a remote mysql database. This will prompt for a password.

$ mysql -u root -p -h 192.168.1.2

To connect to a local mysql database.

$ mysql -u root -p

If you want to specify the mysql root password in the command line itself, enter it immediately after -p (without any space).

46. yum command examples

To install apache using yum.

$ yum install httpd

To upgrade apache using yum.

$ yum update httpd

To uninstall/remove apache using yum.

$ yum remove httpd

47. rpm command examples

To install apache using rpm.

# rpm -ivh httpd-2.2.3-22.0.1.el5.i386.rpm

To upgrade apache using rpm.

# rpm -uvh httpd-2.2.3-22.0.1.el5.i386.rpm

To uninstall/remove apache using rpm.

# rpm -ev httpd

More rpm examples: RPM Command: 15 Examples to Install, Uninstall, Upgrade, Query RPM Packages

48. ping command examples

Ping a remote host by sending only 5 packets.

$ ping -c 5 gmail.com

More ping examples: Ping Tutorial: 15 Effective Ping Command Examples

49. date command examples

Set the system date:

# date -s "01/31/2010 23:59:53"

Once you’ve changed the system date, you should syncronize the hardware clock with the system date as shown below.

# hwclock –systohc

# hwclock --systohc –utc

50. wget command examples

The quick and effective method to download software, music, video from internet is using wget command.

$ wget http://prdownloads.sourceforge.net/sourceforge/nagios/nagios-3.2.1.tar.gz

Download and store it with a different name.

$ wget -O taglist.zip http://www.vim.org/scripts/download_script.php?src_id=7701

More wget examples: The Ultimate Wget Download Guide With 15 Awesome Examples

Did I miss any frequently used Linux commands? Leave a comment and let me know.

FUENTE ORIGINAL