// cd: change Directory, permite cambiar de directorio
//para ingresar al directorio home del usuario podemos utilizar cd
cd
//Parámetros
// Podemos utilizar una ruta absoluta
cd /home/tavo/Escritorio
// o podemos utilizar una ruta relativa
// .: significa a partir de la ubicación actual
cd ./Escritorio
// ..: Significa que regresa un directorio
cd ..
// Regresar 2 directorios
cd ../..
//Ir a home del usuario
cd
//Ir a la ubicación anterior
cd -
ls
// Listar archivos de un directorio
ls
//Parámetros:
//l: long muestra la información completa de los archivos
ls -l
//h: lectura humana, el peso se los archivos de muestra en bits, podemos utilizar h para mostrarlos en kilobytes, megabytes, etc
ls -lh
//a: mostrar archivos ocultos
ls -la
//S: size muestra los archivos por orden de tamaño
ls -lS
// Lo podemos combinar
ls -lSh
//r: reverse mostrar en orden inverso
ls -lr
tree
// tree: muestra el arbol completo de todos los directorios del directorio actual
/ Puede ser muy amplo pero podemos limitar la profundidad con el parámetro "L" y el nivel de profundidad
tree -L 2
// Resultado
├── bash-it
│ ├── aliases
│ ├── bash_it.sh
│ ├── clean_files.txt
│ ├── completion
│ ├── custom
│ ├── docs
│ ├── enabled
│ ├── hooks
│ └── vendor
├── Descargas
│ ├── prueba_2022-02-14-16-41-56.mp4
│ └── Win10_21H2_Spanish(Mexico)_x64.iso
├── Documentos
├── Escritorio ...
clear
// Limpiar terminar
clear
// Existe el comando CTRL+L para limpiar
pwd
// pwd: Print Working Directory, nos muestra la ruta del directorio donde estamos
pwd
file
// file: archivo, nos muestra la información de un archivo
file linux_signing_key.pub
// Resultado
linux_signing_key.pub: PGP public key block Public-Key (old)
//Ejemplo #2
file nodesource_setup.sh
nodesource_setup.sh: Bourne-Again shell script, UTF-8 Unicode text executable, with very long lines
CAT
Permite leer archivos
// Obtiene toda la información de los logeos en el sistema operativo
cat /var/log/auth.log
Copiar en terminar
Podemos hacer clic derecho copiar
O podemos hacer CRTL+SHIFT+C
mkdir
// Permite crear directorios
mkdir miDirectorio
// Si requerimos crear una carpeta con espacios en blanco lo hacemos con comillas
mkdir "mi Directorio"
// Si deseamos crear varios directorios
mkdir dir1 dir2 dir3
touch
// touch: permite crear un archivo vació
touch nombreArchivo
// Si deseamos crear varios
touch file1 file2 file3
//podemos crear archivos de un tipo específico
touch file.docx
//Cambiar la fecha y hora de modificación (sobre un archivo existente)
touch file.docx
cp
//cp: copy: permite copiar archivos
cp file1 file1.bak
// Si desea copiar en otro directorio
cp file1 ../dir2/file1
mv
//mv: move: permite mover un archivo
mv file1 ./dir2
// También sirve para renombrar archivos
mv file1 file4
rm
// rm: remove: permite eliminar un archivo o directorio
rm file1
//Parámetros
//i: interactivo
rm -i file1
//Resultado
rm: ¿borrar el fichero regular vacío 'file1'? (s/n)
//r:recursive: para aplicar el comando de forma recursiva
rm -r dir1
//f: force: permite eliminar de forma forzada
rm -rf
// Podemos eliminar varios archivos y directorios
rm -r dir1 dir2 dir3 file 1
head
//head: muestra las 10 primeras lineas de un archivo de texto
head file1
// Si deseamos más lineas, pasamos el parámetro de "-n" y el número de filas
head file -n 15
tail
// tail: muestra las 10 últimas lineas de un archivo
tail file1
//Si deseamos más lineas, pasamos el parámetro de "-n" y el número de filas
tail /var/log/apache2/error.log -n 15
//Si deseamos hacer un seguimiento del archivo utilizamos -f
tail -f /var/log/apache2/error.log
//También podemos hacer seguimiento a más de una archivo a la vez
tail -f /var/log/auth.log /var/log/dpkg.log
less
// es mas recomendado para leer archivos grandes
less /var/log/auth.log
// less: ingresa en un modo interactivo que permite recorrer el archivo
less file1
// Podemos utilizar las flechas para subir y bajar
// Podemos utilizar las barras espaciadora y hace salto de página
// Si ponemos el slach "/" y una palabra la podemos buscar
/1914 (ENTER)
//para buscar /criterio_busqueda
//n: para buscar la siguiente considencia
/shift+n: para invertido
// q: quit para salir
xdg-open
// Permite abrir un archivo en la interfaz gráfica con el editor de texto predefinido
xdg-open file1
Nautilus
// Permite abrir el explorador de archivos
nautilus
// O podemos abrir un carpeta específica
nautilus Documents
¿Que es un comando?
Un programa ejecutable
Un comando de shell
Una función del shell
Un alias
type
// permite ver el tipo de comando
type cd
//Resultado
cd es una orden interna del intérprete de ordenes
// Ejemplo2
type mkdir
// Resultado nos indica donde esta
mkdir is /usr/bin/mkdir
// Ejemplo 3 alias
type ls
// Resultado
ls es un alias de `ls --color=auto'
Alias
// Alias permite crear una alias de un comando pero de forma TEMPORAL
alias nombreAlias="comando"
// Ejemplo (lsa= list server alias)
alias lsa="ls /etc/apache2/sites-available/"
//Ya los podemos utilizar
lsa
//Resultado
000-default.conf default-ssl.conf
help
//help: ayuda: permite mostrar la ayuda de un comando
help cd
// También la podemos solicitar así
cd --help
man
// Este comando permite ver el manual del usuario de un comando
man cd
//q para salir
info
//info: muestra la misma información que man
info cd
whatis
// Brinda una descripción corta del significado del comando
whatis pwd
//Resultado
pwd (1) - print name of current/working directory
En el ejemplo anterior nos devolvió todos los que dijeran «datos» y todo el resto, pero si solo queremos lo que digan datos y un caracter
// Si queremos solo que de un carácter
ls datos?
// Si queremos 3 caracteres
ls datos ???
Mayúscula
Si deseamos listar archivos y carpetas que inicien con mayúscula
ls [[:upper:]]*
Si deseamos solo carpetas usamos la flag -d
ls -d [[:upper:]]*
Minúscula
Si deseamos listar archivos y carpetas que inicien con minúscula
ls [[:lower:]]*
Si deseamos solo carpetas usamos la flag -d
ls -d [[:lower:]]*
Clases
Archivos que inicien con una «a» o una «d»
ls [ad]*
Funcionamiento de los comandos
Todo comando tiene:
stdin (standar input = 0): comando a ejecutar
stdout (standar out = 1): salida correcta del comando
stderr (standar error = 2): salida de error del comando
Redirecciones
Si queremos redirigir la salida de un comando por ejemplo a un archivo de texto
Si ejecutamos el comando
ls Imágenes/
Pero digamos que yo quiero guardar eso a un archivo, podemos hacer
ls Imágenes/ > misArchivos.txt
Pero digamos que también quiero guardar mis descargas
ls Descargas/ > misArchivos.txt
Esto reescribe el archivo
Por eso si deseamos concatenar debemos utilizar doble símbolo mayor que >>
ls Descargas/ >> misArchivos.txt
Ahora si trato de listar los archivos de un directorio que no existe
ls dirNoExiste
Resultado: error
ls: no se puede acceder a 'dirNoExiste': No existe el archivo o el directorio
Ahora digamos que deseamos almacenar el error en un archivo
ls dirNoExiste > error.txt
Y listamos su contenido
cat error.txt
El archivo esta vació, por que para esto necesitamos pasar el «standerr» que para este ejemplo es el «2»
ls dirNoExiste 2> error.txt
Ahora si lo podemos consultar
cat error.txt
//Resultado
ls: no se puede acceder a 'dirNoExiste': No existe el archivo o el directorio
Ahora si deseamos almacenar ya sea el éxito o error debemos hacer
ls dirNoExiste > salida.txt 2>&1
Donde indicamos 2>&1 (si da error redirija a éxito)
Operadores de control
1-Ejecutar comandos uno después del otro (sincronos)
Para hacer esto los separamos por «;»
ls; mkdir hoy; cal
Resultado
bash-it error.txt Imágenes miImagenes.txt Público
Descargas Escritorio KVM Música snap
Documentos file1 linux_signing_key.pub Plantillas Vídeos
Marzo 2022
do lu ma mi ju vi sá
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
2- Ejecutar comandos de forma asíncrona
Para ejecutar comandos de forma asíncrona (Es decir que bash utilice un hilo por aparte por cada comando) los separamos por «&»
ls & date & cal
Resultado
[1] 19181 // Número de proceso
[2] 19182 // Número de proceso
lun 7 mar 10:01:51 CST 2022
bash-it error.txt hoy linux_signing_key.pub Plantillas Vídeos
Descargas Escritorio Imágenes miImagenes.txt Público
Documentos file1 KVM Música snap
Marzo 2022
do lu ma mi ju vi sá
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
[1]- Hecho ls --color=auto
[2]+ Hecho date
3- Comandos condicionales
if
Utilizamos el símbolo «&&»
Por ejemplo si queremos que se cree un directorio y si se crea de forma correcta ingresemos en él
mkdir test && cd test
Si ocurre un error que pasa?
digamos que ejecutamos el ingreso a un directorio que no existe y si es correcto cree un archivo «archivo.txt» y si es correcto nos de un mensaje de «Archivo creado»
cd dirNoExiste && touch archivo.txt && echo "Archivo creado"
Resultado (No se crea el archivo)
bash: cd: dirNoExiste: No existe el archivo o el directorio
Or
Utilizamos el símbolo «||»
Para el ejemplo utilizamos el anterior
cd dirNoExiste || touch archivo.txt || echo "Archivo creado"
Resultado: crea el archivo mas no tira el mensaje
ls
//Resultado
archivo.txt
Manejos de permisos
Tipos de archivos
Tipos de modo
r: read
w: write
X: execute
Modo octal
Modo Simbólico
Manejo de permisos
primero creamos una carpeta «micarpeta» y adentro un archivo llamado «mitexto.txt»
mkdir micarpeta && cd micarpeta && touch mitexto.txt && ls
Le ingresamos algún contenido con «cat»
cat > mitexto.txt (ENTER para empezar a escribir)
Hola amigos
Este es el contenido del archivo
Fin
( CTRL+D para finalizar)
Consultamos los permisos
ls -la
//Resultado: permisos por defecto
-rw-r--r-- 1 root root 50 mar 8 09:32 mitexto.txt
chmod
Permite modificar los permisos de un archivo:
u: rwx = 7
g: r-x: 5
o: r-x: 5
chmod 755 mitexto.txt
// Consultamos los permisos
ls -la
//Resultado
-rwxr-xr-x 1 root root 50 mar 8 09:32 mitexto.txt
Ahora digamos que al usuario le deseamos quitar el permiso de r (lectura)
chmod u-r mitexto.txt
//Consultamos los permisos
ls -la
//Resultado
--wxr-xr-x 1 root root 50 mar 8 09:32 mitexto.txt
//Ahora si intentamos leer
cat mitexto.txt
//Resultado
cat: mitexto.txt: Permiso denegado
Ahora para poder agregarle el permiso
chmod u+r mitexto.txt
Una forma más avanzada, pero esto sobre escribe todos los permisos para go ya que tiene «=»
chmod u-x,go=w mitexto.txt
//Resultado
ls -la
-rw--w--w- 1 tavo tavo 50 mar 8 09:32 mitexto.txt
whoami
permite saber en la termina cual usuario estamos utilizando
whoami
//Resultado
tavo
id
Este es otro comando para saber información del usuario actual
id
//Resultado
uid=1000(tavo) gid=1000(tavo) grupos=1000(tavo),4(adm),24(cdrom),27(sudo),30(dip),33(www-data),46(plugdev),108(kvm),120(lpadmin),131(lxd),132(sambashare),135(libvirt)
Esto nos da:
uid: id del usuario normalmente inicia con 1000 el primer usuario
gid: id del grupo del usuario
grupos: todos los grupos a los que pertenece el usuario
su (switch user):
Nos permite cambiar de usuario
//Cambiarnos a root
sudo su
//De momento root no tiene password la cambiamos
passwd root
Nueva contraseña:
Vuelva a escribir la nueva contraseña:
passwd: contraseña actualizada correctamente
//Salimos
exit
//Y ya podemos ingresar como root
su root
Ahora vamos a crear un archivo en la carpeta del usuario pero que le pertenece al usuario root
//Ingresamos a la carpeta del usuario
cd /home/tavo/micarpeta/
//Creamos el archivo
touch rootfile
//listamos los archivos
ls -la
//resultado
-rw-r--r-- 1 root root 0 mar 8 10:12 footfile
//Cambiamos a usuario normal
su tavo
//Si intentamos eliminar el archivo nos da error
rm rootfile
// Si lo deseamos eliminar podemos utilizar el comando sudo
sudo rm rootfile
passwd
Nos permite cambiar una contraseña
passwd tavo
Nueva contraseña:
Vuelva a escribir la nueva contraseña:
passwd: contraseña actualizada correctamente
ln: Link simbólicos
Permite crear «Accesos Directos»
Para crearlo hacemos
ln -s /var/www/html/ Desarrollo
// esto crea un acceso directo de nombre "Desarrollo" que apunta a /var/www/html
// Así podemos ingresar
cd Desarrollo
// Lo podemos ver así
ls -la
lrwxrwxrwx 1 tavo tavo 14 mar 9 09:46 Desarrollo -> /var/www/html/
Si deseamos modificar una variable de entorno necesitamos ubicar el archivo
cd /home/tavo
// Listamos
ls -la
//encontramos el archivo
.bashrc
// Lo abrimos
code .bashrc
Aquí podemos crear alias, por ejemplo
//lsa: lista el directorio de sites-availabe de apache
alias lsa='ls /etc/apache2/sites-available/'
Podemos crear nuevas variables de entorno, por ejemplo
DHTML="/var/www/html/"
// Por lo que podríamos hacer
cd $DHTML
Para concatenar a la variable PATH
//Concatenamos lo que tiene $PATH la nueva ruta
PATH=$PATH:/home/tavo/bin/
//Para recargar bash
bash
//Para consultar
echo $PATH
Comandos de búsqueda
which
Permite encontrar los binarios de un programa, por ejemplo
which code
//R
/usr/bin/code
which php
//R
/usr/bin/php
which apache2
//R
/usr/sbin/apache2
find
Nos permite buscar un archivo
find "ruta_inicio" -name "nombre_archivo"
Por ejemplo buscar desde home
find ./ -name file
Podemos utilizar «Wildcards»
find ./ -name *.txt
find ./ -name *.txt | less
Buscar por tipo Archivo / directorio -type
find ./ -type fd -name Documentos
//f: solo busque archivos
//d: solo directorios
Buscar solo archivos log’s
find ./ -type f -name *.log
Archivos por tamaño -size
find ./ -size 20M
Utilidades de Red
ifconfig
//Muestra información de red
ifconfig
Ping
//Muestra si existe conexión IP a un servicio o servidor
ping www.siua.ac.cr
curl
//Trae el contenido de un archivo desde la web
curl www.siua.ac.cr
//Lo podemos almacenar
curl www.siua.ac.cr > index.html
wget
//Trae el archivo desde internet
wget www.siua.ac.cr
traceroute
//Nos lista todos los servidores por donde se fue la llamada
traceroute www.siua.ac.cr
netstat -i
//Nos lista nuestros dispositivos de red
netstat -i
Comprimir Archivos
Primero creamos una carpeta y creamos archivos
mkdir toCompress
cd toCompress
touch file1 file2 file3
cd ..
tree tOCompress
//Resultado
toCompress
├── file1
├── file2
└── file3
0 directories, 3 files
.tar
//permite comprimir
tar -cvf nombreArchivoSalida.tar Carpeta_o_Archivo
tar -cvf toCompress.tar toCompress
c:Comprimir
v:vervose (ver el output)
f: file
//Resultado
ls
//Podemos mejorarlo con gzip
tar -cvzf nombreArchivoSalida.tar.gz Carpeta_o_Archivo
//z:gzip
//Para descomprimir
//Eliminamos la carpeta
rm -r toCompress
//.tar
tar -xvf toCompress.tar
x: descomprimir
//.tar.gz
tar -xzvf toCompress.tar.gz
x: descomprimir
.zip
//Requerimos una aplicación
apt install zip
//Comprimir
zip -r nombreArchivoSalida.zip nombreCarpeta_o_Archivo
//Ejemplo
zip -r toCompress.zip toCompress
//Por se un carpeta debe llevar la
//r: recursivo
//Descomprimir
unzip nombreArchivo
//Ejemplo
unzio toCompress.zip
Manejo de procesos
PS:
Lista los procesos que se están ejecutando en la terminal