Primeros pasos con GNULinux

Atajos útiles

Uso de la terminal

Los ejemplos en este documento asumen que está utilizando un shell compatible con POSIX (como bash, sh, zsh, ksh).

Gran parte de la funcionalidad de GNU/Linux se logra mediante el terminal. La mayoría de las distribuciones de Linux incluyen emuladores de terminal que permiten a los usuarios interactuar con un shell desde su entorno de escritorio. Un shell es un intérprete de línea de comandos que ejecuta los comandos ingresados ​​por el usuario. Bash (Bourne Again SHell) es un shell predeterminado común entre muchas distribuciones de Linux y es el shell predeterminado para macOS.

Estos accesos directos funcionarán si está utilizando Bash con las combinaciones de teclas emacs (configuradas de manera predeterminada):

Abrir terminal

  • Ctrl + Alt + T o Súper + T

Movimiento del cursor

  • Ctrl + A Ir al principio de la línea en la que está escribiendo actualmente.
  • Ctrl + E Ir al final de la línea en la que está escribiendo actualmente.
  • Ctrl + XX Moverse entre el comienzo de la línea y la posición actual del cursor.
  • Alt + F Mueve el cursor una palabra hacia adelante en la línea actual.
  • Alt + B Mueve el cursor hacia atrás una palabra en la línea actual.
  • Ctrl + F Mueve el cursor un carácter hacia adelante en la línea actual.
  • Ctrl + B Mueve el cursor hacia atrás un carácter en la línea actual.

Manipulación de texto

  • Ctrl + U Corta la línea desde la posición actual hasta el comienzo de la línea, añadiéndola al portapapeles. Si está al final de la línea, corte toda la línea.
  • Ctrl + K Corta la línea desde la posición actual hasta el final de la línea, agregándola al portapapeles. Si está al principio de la línea, corte toda la línea.
  • Ctrl + W Borra la palabra anterior al cursor, añadiéndola al portapapeles.
  • Ctrl + Y Pega lo último del portapapeles que hayas cortado recientemente (deshacer la última eliminación en la posición actual del cursor).
  • Alt + T Intercambiar las dos últimas palabras antes del cursor.
  • Alt + L Poner en minúsculas desde el cursor hasta el final de la palabra.
  • Alt + U Poner en mayúsculas desde el cursor hasta el final de la palabra.
  • Alt + C Mayúsculas al final de la palabra que comienza en el cursor (palabra completa si el cursor está al principio de la palabra).
  • Alt + D Eliminar hasta el final de la palabra que comienza en el cursor (palabra completa si el cursor está al principio de la palabra).
  • Alt + . Imprime la última palabra escrita en el comando anterior.
  • Ctrl + T Cambia los dos últimos caracteres antes del cursor.

Acceso al historial

  • Ctrl + R Le permite buscar a través de comandos utilizados anteriormente.
  • Ctrl + G Salir del modo de búsqueda de historial sin ejecutar un comando.
  • Ctrl + J Le permite copiar el comando coincidente actual a la línea de comando sin ejecutarlo, lo que le permite realizar modificaciones antes de ejecutar el comando.
  • Alt + R Revierte cualquier cambio en un comando que hayas sacado de tu historial, si lo has editado.
  • Ctrl + P Muestra el último comando ejecutado, es decir, retrocede a través del historial de comandos (similar a la flecha hacia arriba).
  • Ctrl + N Muestra el siguiente comando ejecutado, es decir, avance a través del historial de comandos (similar a la flecha hacia abajo).

Control de terminales

  • Ctrl + L Borra la pantalla, similar al comando borrar.
  • Ctrl + S Detiene todas las salidas a la pantalla. Esto es útil cuando se ejecutan comandos con muchos resultados largos. Pero esto no detiene el comando en ejecución.
  • Ctrl + Q Reanuda la salida a la pantalla después de detenerla con Ctrl+S.
  • Ctrl + C Finaliza el proceso que se está ejecutando actualmente y devuelve el aviso.
  • Ctrl + D Cierra la sesión de shell actual, similar al comando de salida o cierre de sesión. En algunos comandos, actúa como señal de fin de archivo para indicar que se ha llegado al final de un archivo.
  • Ctrl + Z Suspende (pausa) el proceso en primer plano que se está ejecutando actualmente, lo que devuelve el indicador de shell. Luego puede usar el comando bg permitiendo que ese proceso se ejecute en segundo plano. Para volver a poner ese proceso en primer plano, use el comando fg. Para ver todos los procesos en segundo plano, utilice el comando jobs.
  • Tab Autocompletar archivos y nombres de directorios.
  • TabTab Muestra todas las posibilidades, cuando los caracteres escritos no coinciden únicamente con un nombre de archivo o directorio.

Caracteres especiales

  • Ctrl + H Igual que Retroceso.
  • Ctrl + J Igual que Retorno (históricamente Avance de línea).
  • Ctrl + M Igual que Retorno (históricamente Retorno de carro).
  • Ctrl + I Igual que Tab.
  • Ctrl + G Carácter de campana.
  • Ctrl + @ Carácter nulo.
  • Esc [Deadkey] (https://en.wikipedia.org/wiki/Dead_key) es equivalente al modificador Alt.

Cerrar terminal

  • Ctrl + Shift + W Para cerrar la pestaña del terminal.
  • Ctrl + Shift + Q Para cerrar todo el terminal.

Alternativamente, puede cambiar a las combinaciones de teclas vi en bash usando set -o vi. Utilice set -o emacs para volver a las combinaciones de teclas emacs.

Comandos de gestión de archivos

Linux usa algunas convenciones para los directorios principales y actuales. Esto puede ser un poco confuso para los principiantes.

Siempre que esté en una terminal en Linux, estará en lo que se llama el directorio de trabajo actual. A menudo, su símbolo del sistema mostrará el directorio de trabajo completo o solo la última parte de ese directorio. Su indicador podría parecerse a uno de los siguientes:

[email protected] ~/somedir $
[email protected] somedir $
[email protected] /home/user/somedir $

que dice que su directorio de trabajo actual es /home/user/somedir.

En Linux .. representa el directorio principal y <código> . representa el directorio actual.

Por lo tanto, si el directorio actual es /home/user/somedir, cd ../somedir no cambiará el directorio de trabajo.

La siguiente tabla enumera algunos de los comandos de administración de archivos más utilizados

Comando Utilidad
<código>contraseña</código> Obtenga la ruta completa del directorio de trabajo actual.
<código>cd -</código> Navegue hasta el último directorio en el que estaba trabajando.
cd ~ o simplemente cd Navegue al directorio de inicio del usuario actual.
<código>cd ..</código> Vaya al directorio principal del directorio actual (tenga cuidado con el espacio entre cd y ..)

Listado de archivos dentro de un directorio

Comando Utilidad
<código>ls -l</código> Enumere los archivos y directorios en el directorio actual en formato largo (tabla) (se recomienda usar -l con ls para una mejor legibilidad).
ls -ld nombre-directorio Muestra información sobre el directorio dir-name en lugar de su contenido.
<código>ls -a</código> Enumere todos los archivos, incluidos los ocultos (los nombres de archivo que comienzan con . son archivos ocultos en Linux).
<código>ls -F</código> Agrega un símbolo al final del nombre de un archivo para indicar su tipo (* significa ejecutable, / significa directorio, @ significa enlace simbólico, = significa socket, | significa tubería con nombre, > significa puerta).
<código>ls -lt</código> Enumere los archivos ordenados por última hora de modificación con los archivos modificados más recientemente que se muestran en la parte superior (recuerde que la opción -l proporciona el formato largo que tiene una mejor legibilidad).
<código>ls -lh</código> Enumere los tamaños de archivo en formato legible por humanos.
<código>ls -lR</código> Muestra todos los subdirectorios recursivamente.
<código>árbol</código> Generará una representación de árbol del sistema de archivos a partir del directorio actual.

Archivo/directorio crear, copiar y eliminar

Comando Utilidad
cp -p origen destino Copiará el archivo desde el origen al destino. -p significa preservación. Conserva los atributos originales del archivo mientras se copia como propietario del archivo, marca de tiempo, grupo, permisos, etc.
cp -R fuente_dir destino_dir Copiará el directorio de origen al destino especificado de forma recursiva.
mv archivo1 archivo2 En Linux no existe el comando renombrar como tal. Por lo tanto, mv mueve/cambia el nombre del archivo1 a archivo2.
rm -i nombre de archivo Le pregunta antes de cada eliminación de archivos para su confirmación. SI USUARIO NUEVO EN LA LÍNEA DE COMANDOS DE LINUX, SIEMPRE DEBE UTILIZAR rm -i. Puede especificar varios archivos.
rm -R nombre-directorio Eliminará el directorio dir-name recursivamente.
rm -rf nombre-directorio Eliminará el directorio dir de forma recursiva, ignorando los archivos inexistentes y nunca solicitará nada. ¡TENGA CUIDADO AL USAR ESTE COMANDO! Puede especificar varios directorios.
rmdir nombre-directorio Eliminará el directorio dir-name, si está vacío. Este comando solo puede eliminar directorios vacíos.
mkdir dir-name Crea un directorio dir-name.
mkdir -p dir-name/dir-name Crea una jerarquía de directorios. Cree directorios principales según sea necesario, si no existen. Puede especificar varios directorios.
touch filename Cree un archivo filename, si no existe, de lo contrario, cambie la marca de tiempo del archivo a la hora actual.

Permisos y grupos de archivos/directorios

Comando Utilidad
chmod <especificación> nombre de archivo Cambie los permisos del archivo. Especificaciones = u usuario, g grupo, o otro, + agregar permiso, - eliminar, r leer, w escribir, x ejecutar.
chmod -R <especificación> nombre-directorio Cambiar los permisos de un directorio recursivamente. Para cambiar el permiso de un directorio y todo dentro de ese directorio, use este comando.
chmod go=+r miarchivo Agregue permiso de lectura para el propietario y el grupo.
chmod a +rwx myfile Permite que todos los usuarios lean, escriban o ejecuten myfile.
chmod go -r myfile Eliminar permiso de lectura del grupo y otros.
chown own1 filename Cambiar la propiedad de un archivo al usuario propietario1.
chgrp grp_owner filename Cambiar la propiedad del grupo principal del archivo filename al grupo grp_owner.
chgrp -R grp_owner dir-name Cambia la propiedad del grupo principal del directorio dir-name al grupo grp_owner de forma recursiva. Para cambiar la propiedad del grupo de un directorio y todo dentro de ese directorio, use este comando.

Hola Mundo

Escriba el siguiente código en su terminal, luego presione Enter:

echo "Hello World"

Esto producirá la siguiente salida:

Hello World

Utilidades básicas de Linux

Linux tiene un comando para casi todas las tareas y la mayoría de ellas son intuitivas y fáciles de interpretar.

Obtención de ayuda en Linux

Comando Usabilidad
hombre <nombre> Lea la página del manual de <nombre>.
hombre <sección> <nombre> Lea la página del manual de <nombre>, relacionada con la sección dada.
hombre -k <editor> Muestra todo el software cuyas páginas man contienen la palabra clave <editor>.
man -K <palabra clave> Muestra todas las páginas man que contienen <palabra clave> dentro de ellas.
a propósito del <editor> Muestra todas las aplicaciones cuya descripción de una línea coincida con la palabra editor. Cuando no pueda recordar el nombre de la aplicación, use este comando.
ayuda En el shell Bash, esto mostrará la lista de todos los comandos bash disponibles.
ayuda <nombre> En el shell Bash, esto mostrará la información sobre el comando bash <name>.
info <nombre> Ver toda la información sobre <nombre>.
dpkg-l Muestra una lista de todos los paquetes instalados en un sistema basado en Debian.
dpkg -L nombrePaquete Enumerará los archivos instalados y los detalles de la ruta para un paquete determinado en Debian.
<código>dpkg -l | grep -i <editar></código> Devuelve todos los paquetes instalados .deb con <edit> independientemente de los casos.
menos /var/lib/dpkg/disponible Devuelve las descripciones de todos los paquetes disponibles.
qué es vim Enumere una descripción de una línea de vim.
<nombre-comando> --help Mostrar información de uso sobre <tool-name>. A veces command -h también funciona, pero no para todos los comandos.
Identificación de usuario y quién es quién en el mundo Linux
Comando Usabilidad
nombre de host Muestra el nombre de host del sistema.
nombre de host -f Muestra el nombre de dominio completo (FQDN) del sistema.
contraseña Cambiar contraseña del usuario actual.
whoami Nombre de usuario de los usuarios registrados en el terminal.
quien Lista de todos los usuarios actualmente conectados como usuario.
w Muestra el estado actual del sistema, la hora, la duración, la lista de usuarios actualmente conectados al sistema y otra información del usuario.
último Quién usó recientemente el sistema.
última raíz ¿Cuándo fue la última vez que root inició sesión como usuario?
últimob Muestra todos los malos intentos de inicio de sesión en el sistema.
chmod Cambio de permisos: lectura, escritura, ejecución de un archivo o directorio.

Información relacionada con el proceso

Comando Usabilidad
superior Enumere todos los procesos ordenados por su uso actual de recursos del sistema. Muestra una pantalla de procesos continuamente actualizada (por defecto 3 segundos). Use la tecla q para salir de la parte superior.
pd Enumerar los procesos que se ejecutan actualmente en la sesión de shell actual
ps -u raíz Enumere todos los procesos y comandos que ejecuta root
ps aux Listar todos los procesos de todos los usuarios en el sistema actual

Búsqueda de archivos por patrones en nombre/contenido

Una tarea común de alguien que usa la línea de comandos de Linux (shell) es buscar archivos/directorios con un nombre determinado o que contengan un texto determinado. Hay 2 comandos con los que debe familiarizarse para lograr esto:


Buscar archivos por nombre

find /var/www -name '*.css'

Esto imprimirá la ruta/nombre de archivo completo de todos los archivos en /var/www que terminen en .css. Salida de ejemplo:

/var/www/html/text-cursor.css
/var/www/html/style.css

Para más información:

man find

Buscar archivos que contengan texto

grep font /var/www/html/style.css 

Esto imprimirá todas las líneas que contengan el patrón fuente en el archivo especificado. Salida de ejemplo:

font-weight: bold;
font-family: monospace;

Otro ejemplo:

grep font /var/www/html/

Esto no funciona como esperabas. Usted obtiene:

grep: /var/www/html/: Is a directory

Necesitas grep recursivamente para que funcione, usando la opción -R:

grep -R font /var/www/html/

hola lindo! Echa un vistazo a la salida de este:

/var/www/html/admin/index.php:  echo '<font color=red><b>Error: no dice</b></font><br/>';
/var/www/html/admin/index.php:  echo '<font color=red><b>Error: try again</b></font><br/>';
/var/www/html/style.css:  font-weight: bold;
/var/www/html/style.css:  font-family: monospace;

Tenga en cuenta que cuando grep coincide con varios archivos, antepone las líneas coincidentes con los nombres de archivo. Puedes usar la opción -h para deshacerte de eso, si quieres.

Para más información:

man grep

Manipulación de archivos

Los archivos y directorios (otro nombre para las carpetas) están en el corazón de Linux, por lo que poder crearlos, verlos, moverlos y eliminarlos desde la línea de comandos es muy importante y bastante poderoso. Estos comandos de manipulación de archivos le permiten realizar las mismas tareas que realizaría un explorador gráfico de archivos.

Cree un archivo de texto vacío llamado myFile:

touch myFile

Cambie el nombre de myFile a myFirstFile:

mv myFile myFirstFile 

Ver el contenido de un archivo:

cat myFirstFile

Ver el contenido de un archivo con buscapersonas (una pantalla a la vez):

less myFirstFile

Ver las primeras líneas de un archivo:

head myFirstFile

Ver las últimas líneas de un archivo:

tail myFirstFile

Editar un archivo:

vi myFirstFile

Vea qué archivos hay en su directorio de trabajo actual:

ls

Cree un directorio vacío llamado myFirstDirectory:

mkdir myFirstDirectory

Crear directorio de rutas múltiples: (crea dos directorios, src y myFirstDirectory)

mkdir -p src/myFirstDirectory

Mueve el archivo al directorio:

mv myFirstFile myFirstDirectory/

También puede cambiar el nombre del archivo:

[email protected]:~$ mv myFirstFile secondFileName

Cambie el directorio de trabajo actual a myFirstDirectory:

cd myFirstDirectory

Eliminar un archivo:

rm myFirstFile

Mover al directorio principal (que se representa como ..):

cd ..

Eliminar un directorio vacío:

rmdir myFirstDirectory

Elimine un directorio que no esté vacío (es decir, que contenga archivos y/u otros directorios):

rm -rf myFirstDirectory

Tenga en cuenta que al eliminar directorios, elimine ./ no / que borrará todo su sistema de archivos.

Detalles del archivo/directorio

El comando ls tiene varias opciones que se pueden usar juntas para mostrar más información.

Detalles/Derechos

La opción l muestra los permisos del archivo, el tamaño y la última fecha de modificación. Entonces, si el directorio raíz contenía un directorio llamado test y un archivo someFile, el comando:

[email protected]:~$ ls -l

Daría como resultado algo como

-rw-r--r-- 1 user users   70 Jul 22 13:36 someFile.txt
drwxrwxrwx 2 user users 4096 Jul 21 07:18 test

Los permisos están en formato drwxrwxrwx. El primer carácter representa el tipo de archivo d si es un directorio - de lo contrario. Los siguientes tres rwx son los permisos que el usuario tiene sobre el archivo, los siguientes tres son los permisos que el grupo tiene sobre el archivo y los últimos tres son los permisos que todos los demás tienen sobre el archivo.

La r de rwx indica si un archivo se puede leer, la w representa si el archivo se puede modificar y la x indica si el archivo se puede ejecutar. Si no se concede ningún permiso, aparecerá un - en lugar de r, w o x.

Entonces, desde arriba, el usuario puede leer y modificar someFile.txt pero el grupo solo tiene derechos de solo lectura.

Para cambiar los derechos, puede usar el comando chmod ### fileName si tiene derechos sudo. r está representado por un valor de 4, w está representado por 2 y x está representado por un 1. Entonces, si solo desea poder modificar los contenidos en el directorio test

Owner rwx = 4+2+1 = 7
Group r-x = 4+0+1 = 5
Other r-x = 4+0+1 = 5

Así que todo el comando es

chmod 755 test

Ahora, hacer ls -l mostraría algo como

drwxr-xr-x 2 user users 4096 Jul 21 07:20 test

Tamaño legible

Usada junto con la opción l, la opción h muestra tamaños de archivo que son legibles por humanos. Correr

[email protected]:~$ ls -lh

Daría salida:

total 4166
-rw-r--r-- 1 user users   70 Jul 22 13:36 someFile.txt
drwxrwxrwx 2 user users 4.0K Jul 21 07:18 test

Oculto

Para ver los archivos ocultos, use la opción a. Por ejemplo

[email protected]:~$ ls -a

Podría listar

.profile
someFile.txt
test

Tamaño total del directorio

Para ver el tamaño del directorio actual, use la opción s (la opción h también se puede usar para hacer que el tamaño sea más legible).

[email protected]:~$ ls -s

Salidas

total 4166
someFile.txt      test

Vista recursiva

Digamos que el directorio test tenía un archivo anotherFile y querías verlo desde la carpeta raíz, podrías usar la opción R que listaría el árbol recursivo.

[email protected]:~$ ls -R

Salidas

.:
someFile.txt    test

./test:
anotherFile