GNU/Linux Tutorial
Empezando con GNU / Linux
Buscar..
Hola Mundo
Escriba el siguiente código en su terminal, luego presione Enter :
echo "Hello World"
Esto producirá la siguiente salida:
Hello World
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 un explorador de archivos gráfico.
Crea un archivo de texto vacío llamado myFile
:
touch myFile
Renombrar 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 varias líneas de un archivo:
tail myFirstFile
Editar un archivo:
vi myFirstFile
Vea qué archivos están en su directorio de trabajo actual:
ls
Cree un directorio vacío llamado myFirstDirectory
:
mkdir myFirstDirectory
Crear un directorio de múltiples rutas: (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:
user@linux-computer:~$ mv myFirstFile secondFileName
Cambie el directorio de trabajo actual a myFirstDirectory
:
cd myFirstDirectory
Eliminar un archivo:
rm myFirstFile
Mover al directorio padre (que se representa como ..
):
cd ..
Eliminar un directorio vacío:
rmdir myFirstDirectory
Eliminar un directorio no vacío (es decir, contiene archivos y / u otros directorios):
rm -rf myFirstDirectory
Tenga en cuenta que al eliminar directorios, borre ./
no /
que borrará todo el sistema de archivos.
Detalles de 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 de 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:
user@linux-computer:~$ ls -l
Saldría 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 de drwxrwxrwx
. El primer carácter representa el tipo de archivo d
si es un directorio -
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
significa si un archivo puede leerse, la w
representa si el archivo puede modificarse, y la x
significa si el archivo puede ejecutarse. Si no se otorga ningún permiso a -
estará en lugar de r
, w
, o x
.
Entonces, desde arriba, el user
puede leer y modificar algunos someFile.txt
pero el grupo solo tiene derechos de solo lectura.
Para cambiar los derechos, puede utilizar 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 el contenido del directorio de 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 haciendo un ls -l
mostraría algo como
drwxr-xr-x 2 user users 4096 Jul 21 07:20 test
Tamaño legible
Utilizada junto con la opción l
opción h
muestra los tamaños de archivo que son legibles por humanos. Corriendo
user@linux-computer:~$ ls -lh
Sería de 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 utilizan la a
opción. Por ejemplo
user@linux-computer:~$ ls -a
Podria lista
.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).
user@linux-computer:~$ ls -s
Salidas
total 4166
someFile.txt test
Vista recursiva
Digamos que el directorio de test
tenía un archivo en anotherFile
archivo y que quería verlo desde la carpeta raíz, podría usar la opción R
que mostraría el árbol recursivo.
user@linux-computer:~$ ls -R
Salidas
.:
someFile.txt test
./test:
anotherFile
Utilidades básicas de Linux
Linux tiene un comando para casi cualquier tarea y la mayoría de ellas son intuitivas y fáciles de interpretar.
Obtención de ayuda en Linux
Mando | Usabilidad |
---|---|
man <name> | Lea la página del manual de <nombre>. |
man <section> <name> | Lea la página del manual de <nombre>, relacionada con la sección dada. |
man -k <editor> | Genere todo el software cuyas páginas man contengan la palabra clave <editor>. |
man -K <keyword> | Muestra todas las páginas del manual que contienen <palabras clave> dentro de ellas. |
apropos <editor> | Muestra todas las aplicaciones cuya descripción de una línea coincida con el editor de palabras. Cuando no pueda recuperar el nombre de la aplicación, use este comando. |
help | En el shell Bash, esto mostrará la lista de todos los comandos de bash disponibles. |
help <name> | En el shell Bash, esto mostrará la información sobre el comando bash <name>. |
info <name> | Ver toda la información sobre <nombre>. |
dpkg -l | Genere una lista de todos los paquetes instalados en un sistema basado en Debian. |
dpkg -L packageName | Enumera los archivos instalados y los detalles de la ruta de un paquete determinado en Debian. |
dpkg -l | grep -i <edit> | Devuelva todos los paquetes instalados con .deb con <edit> independientemente de los casos. |
less /var/lib/dpkg/available | Devolver descripciones de todos los paquetes disponibles. |
whatis vim | Listar una descripción de una línea de vim. |
<command-name> --help | Mostrar información de uso sobre el <tool-name>. A veces, el command -h también funciona, pero no para todos los comandos. |
Identificación del usuario y quién es quién en el mundo Linux.
Mando | Usabilidad |
---|---|
hostname | Mostrar nombre de host del sistema. |
hostname -f | Muestra el nombre de dominio completo (FQDN) del sistema. |
passwd | Cambiar contraseña del usuario actual. |
whoami | Nombre de usuario de los usuarios registrados en el terminal. |
who | Lista de todos los usuarios actualmente conectados como usuario. |
w | Muestra el estado actual del sistema, la hora, la duración, la lista de los usuarios que actualmente han iniciado sesión en el sistema y otra información del usuario. |
last | Quien recientemente utilizó el sistema. |
last root | ¿Cuándo fue la última vez que root se conectó como usuario? |
lastb | Muestra todos los intentos de inicio de sesión incorrectos en el sistema. |
chmod | Cambio de permisos: lectura, escritura, ejecución de un archivo o directorio. |
Información relacionada con el proceso
Mando | Usabilidad |
---|---|
top | Listar todos los procesos ordenados por su uso actual de recursos del sistema. Muestra una visualización de procesos continuamente actualizada (por defecto, 3 segundos). Utilice la tecla q para salir de la parte superior. |
ps | Lista de procesos actualmente en ejecución en la sesión de shell actual |
ps -u root | Listar todos los procesos y comandos que la raíz está ejecutando. |
ps aux | Listar todos los procesos por todos los usuarios en el sistema actual. |
Comandos de gestión de archivos
Linux usa algunas convenciones para los directorios presentes y padres. Esto puede ser un poco confuso para los principiantes.
Cuando esté en un 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 mensaje podría parecerse a uno de los siguientes:
user@host ~/somedir $
user@host somedir $
user@host /home/user/somedir $
que dice que su directorio de trabajo actual es /home/user/somedir
.
En Linux ..
representa el directorio padre y .
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.
Navegación del directorio
Mando | Utilidad |
---|---|
pwd | Obtenga la ruta completa del directorio de trabajo actual. |
cd - | Vaya al último directorio en el que estaba trabajando. |
cd ~ o simplemente cd | Navegue al directorio de inicio del usuario actual. |
cd .. | Vaya al directorio principal del directorio actual (tenga en cuenta el espacio entre cd y .. ) |
Listado de archivos dentro de un directorio
Mando | Utilidad |
---|---|
ls -l | 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 dir-name | Listar información sobre el directorio dir-name lugar de su contenido. |
ls -a | Enumere todos los archivos, incluidos los ocultos (los nombres de archivo que comienzan con a . Son archivos ocultos en Linux). |
ls -F | Agrega un símbolo al final de un nombre de archivo para indicar su tipo ( * significa ejecutable, / significa directorio, @ significa enlace simbólico, = significa socket, | significa canalización, > significa puerta). |
ls -lt | Enumere los archivos ordenados por última vez modificada con los últimos archivos modificados que se muestran en la parte superior (recuerde -l opción proporciona el formato largo que tiene una mejor legibilidad). |
ls -lh | Listar los tamaños de archivo en formato legible por humanos. |
ls -lR | Muestra todos los subdirectorios de forma recursiva. |
tree | Generará una representación de árbol del sistema de archivos a partir del directorio actual. |
Archivo / directorio crear, copiar y eliminar
Mando | Utilidad |
---|---|
cp -p source destination | Copiará el archivo de source a 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 source_dir destination_dir | Copiará el directorio de origen al destino especificado de forma recursiva. |
mv file1 file2 | En Linux no existe un comando de cambio de nombre como tal. Por lo tanto, mv mueve / renombra el archivo1 a archivo2. |
rm -i filename | Le pide antes de cada eliminación de archivos para su confirmación. SI ES USUARIO NUEVO EN LA LÍNEA DE COMANDOS LINUX, SIEMPRE DEBE USAR rm -i . Puede especificar múltiples archivos. |
rm -R dir-name | Se eliminará el directorio dir-name recursiva. |
rm -rf dir-name | Eliminará el directorio dir de forma recursiva, haciendo caso omiso de ficheros que no existen y nunca le pedirá para cualquier cosa. ¡TENGA CUIDADO DE USAR ESTE MANDO! Puede especificar múltiples directorios. |
rmdir dir-name | Se eliminará el directorio dir-name , si está vacío. Este comando solo puede eliminar directorios vacíos. |
mkdir dir-name | Crear un directorio dir-name . |
mkdir -p dir-name/dir-name | Crear una jerarquía de directorios. Cree directorios principales según sea necesario, si no existen. Puede especificar múltiples directorios. |
touch filename | Cree un filename archivo de filename , si no existe, de lo contrario cambie la marca de tiempo del archivo a la hora actual. |
Ficheros y grupos de archivos / directorios
Mando | Utilidad |
---|---|
chmod <specification> filename | Cambiar los permisos de archivo. Especificaciones = u usuario, grupo g , o otro, + permiso para agregar, - eliminar, r leer, escribir w , ejecutar x . |
chmod -R <specification> dir-name | Cambia recursivamente los permisos de un directorio. Para cambiar el permiso de un directorio y todo dentro de ese directorio, use este comando. |
chmod go=+r myfile | Añadir permiso de lectura para el propietario y el grupo. |
chmod a +rwx myfile | Permitir que todos los usuarios lean, escriban o ejecuten myfile . |
chmod go -r myfile | Eliminar permiso de lectura del grupo y otros. |
chown owner1 filename | Cambiar la propiedad de un archivo al usuario owner1 . |
chgrp grp_owner filename | Cambie la propiedad del grupo primario del filename de filename para agrupar grp_owner . |
chgrp -R grp_owner dir-name | Cambie la propiedad del grupo primario del directorio dir-name para agrupar grp_owner recursivamente. Para cambiar la propiedad de grupo de un directorio y todo lo que esté dentro de ese directorio, use este comando. |
Atajos útiles
Usando el terminal
Los ejemplos en este documento asumen que está utilizando un shell compatible con POSIX (como bash , sh , zsh , ksh ).
Grandes porciones de la funcionalidad de GNU / Linux se logran usando 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 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 de emacs (establecidas de forma predeterminada):
Terminal abierta
- Ctrl + Alt + T o Super + 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 Mover entre el principio de la línea y la posición actual del cursor.
- Alt + F Mueve el cursor hacia adelante una palabra 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 hacia adelante un carácter 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 Cortar la línea desde la posición actual hasta el principio de la línea, agregá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 Eliminar la palabra antes del cursor, agregándola al portapapeles.
- Ctrl + Y Pegar lo último del portapapeles que cortó recientemente (deshacer la última eliminación en la posición actual del cursor).
- Alt + T Intercambia las dos últimas palabras antes del cursor.
- Alt + L Hacer minúsculas desde el cursor hasta el final de la palabra.
- Alt + U Hacer mayúsculas desde el cursor hasta el final de la palabra.
- Alt + C Poner en mayúscula hasta el 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 Intercambia los dos últimos caracteres antes del cursor.
Acceso a la historia
- Ctrl + R Le permite buscar comandos usados previamente.
- Ctrl + G Deja el 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 hacer modificaciones antes de ejecutar el comando.
- Alt + R Revertir cualquier cambio a un comando que haya extraído de su historial, si lo ha editado.
- Ctrl + P Muestra el último comando ejecutado, es decir, retroceder a través del historial de comandos (similar a la flecha hacia arriba).
- Ctrl + N Muestra el siguiente comando ejecutado, es decir, caminar hacia adelante a través del historial de comandos (similar a la flecha hacia abajo).
Control terminal
- Ctrl + L Borra la pantalla, similar al comando de borrar.
- Ctrl + S Detiene todas las salidas a la pantalla. Esto es útil cuando se ejecutan comandos con mucha salida larga. Pero esto no detiene el comando de ejecución.
- Ctrl + Q Reanuda la salida a la pantalla después de detenerla con Ctrl + S.
- Ctrl + C Finaliza el proceso en ejecución y devuelve el indicador.
- Ctrl + D Cerrar sesión de la sesión de shell actual, similar al comando exit o logout. En algunos comandos, actúa como señal de fin de archivo para indicar que se ha alcanzado un final de archivo.
- Ctrl + Z Suspende (pausa) el proceso en primer plano que se ejecuta actualmente, que devuelve el indicador de comandos del shell. Luego puede usar el comando
bg
permitiendo que el proceso se ejecute en segundo plano. Para volver a poner ese proceso en primer plano, use el comandofg
. Para ver todos los procesos en segundo plano, use el comandojobs
. - Pestaña Autocompletar archivos y nombres de directorio.
- Pestaña Pestaña Muestra todas las posibilidades, cuando los caracteres escritos no coinciden de forma exclusiva con el nombre de un archivo o directorio.
Caracteres especiales
- Ctrl + H Igual que Retroceso.
- Ctrl + J Igual que Return (históricamente Line Feed).
- Ctrl + M Igual que Retorno (históricamente Retorno de carro).
- Ctrl + I Igual que Tab.
- Ctrl + G Carácter campana.
- Ctrl + @ Null Character.
- Esc Deadkey equivalente al modificador Alt .
Cerrar terminal
- Ctrl + Shift + W Para cerrar la pestaña terminal.
- Ctrl + Shift + Q Para cerrar toda la terminal.
Alternativamente, puede cambiar a las combinaciones de teclas vi en bash usando set -o vi
. Use set -o emacs
para volver a las combinaciones de teclas de emacs .
Buscando 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 cierto texto. Hay 2 comandos con los que debes familiarizarte para lograr esto:
Buscar archivos por nombre
find /var/www -name '*.css'
Esto imprimirá la ruta completa / nombre de archivo a todos los archivos en /var/www
que terminan en .css
. Ejemplo de salida:
/var/www/html/text-cursor.css
/var/www/html/style.css
Para más información:
man find
Encuentra archivos que contengan texto
grep font /var/www/html/style.css
Esto imprimirá todas las líneas que contienen la font
del patrón en el archivo especificado. Ejemplo de salida:
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
Necesita grep
recursivamente para que funcione, usando la opción -R
:
grep -R font /var/www/html/
Hola bien 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;
Observe que cuando grep
coincide con varios archivos, prefija 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