🐧 Línea de Comandos de Linux

Multilingual DevOps cheat sheet: Linux, Docker, Git, Kubernetes, Helm, Terraform, practical scenarios & templates.
Fecha de publicación

31 de agosto de 2025

Comandos básicos y avanzados para navegación, archivos, procesos, redes, monitoreo, paquetes y automatización. Adecuado para flujos de trabajo DevOps.

🔹 Comandos básicos

Comando

Ejemplo

Descripción

cat Mostrar el contenido de un archivo o concatenar varios archivos
cat file.txt

Ver contenido de un archivo

cat file1 file2

Concatenar y mostrar dos archivos

cat file1 file2 > merged.txt

Concatenar archivos y guardar en un nuevo archivo

cd Cambiar el directorio de trabajo actual
cd /etc

Ir a la ruta absoluta /etc

cd ~

Ir al directorio de inicio

cd ..

Subir un nivel

cd -

Regresar al directorio anterior

clear Limpiar la pantalla de la terminal
cp Copiar archivos y directorios
cp file1.txt file2.txt

Copiar un archivo con un nuevo nombre

cp -r dir1 dir2

Copiar recursivamente un directorio

cp -i file.txt /tmp/

Copiar con confirmación antes de sobrescribir

echo Imprimir una cadena o variable de entorno
echo "Hello, World!"

Imprimir una cadena simple

echo $HOME

Mostrar la ruta del directorio de inicio

echo -e "1\t2\n3"

Interpretar secuencias de escape ( )

history Mostrar el historial de comandos
id Mostrar UID, GID y grupos del usuario actual
ls Listar archivos y directorios
ls -l

Listado largo con permisos y propietarios

ls -a

Mostrar archivos ocultos

ls -lh

Tamaños en formato legible

mkdir Crear directorios
mkdir folder

Crear un solo directorio

mkdir -p a/b/c

Crear directorios anidados

mkdir dir{1,2,3}

Crear múltiples directorios a la vez

mv Mover o renombrar archivos/directorios
mv oldname.txt newname.txt

Renombrar un archivo

mv file.txt /path/to/dir/

Mover un archivo a otro directorio

mv *.txt archive/

Mover todos los archivos .txt a la carpeta archive

pwd Mostrar el directorio de trabajo actual
pwd -P

Mostrar la ruta física (sin enlaces simbólicos)

cd /tmp && pwd

Mostrar ruta después de cambiar a /tmp

rm Eliminar archivos o directorios
rm file.txt

Eliminar un archivo

rm -i file.txt

Eliminar un archivo con confirmación

rm -r folder/

Eliminar recursivamente un directorio

rm -rf folder/

Forzar eliminación sin confirmación

rmdir Eliminar un directorio vacío
rmdir emptydir

Eliminar el directorio emptydir

touch Crear archivos vacíos o actualizar la hora de modificación
touch newfile.txt

Crear un archivo vacío nuevo si no existe

touch a b c

Crear múltiples archivos a la vez

touch -c file.txt

Actualizar hora sin crear archivo si no existe

whereis Localizar el binario, código fuente y páginas man de un comando
whereis ls

Encontrar ubicaciones de ls

whereis bash

Mostrar rutas del binario y docs de Bash

whereis -b bash

Buscar solo el binario

which Mostrar la ruta del ejecutable de un comando
which python3

Ruta a python3

which grep

Ruta a grep

which --skip-alias ls

Omitir alias al buscar

whoami Mostrar el nombre de usuario efectivo

🔸 Nivel intermedio

Comando

Ejemplo

Descripción

chmod Cambiar permisos de archivos o directorios
chmod 755 file

Asignar permisos con notación octal (ej. 755)

chmod +x script.sh

Agregar el bit de ejecución a un script

chmod -R 644 dir/

Asignar permisos recursivamente en un directorio

chown Cambiar propietario y grupo de un archivo
chown user file

Cambiar el propietario de un archivo

chown user:group file

Cambiar propietario y grupo

chown -R user:group dir/

Cambiar propietario y grupo recursivamente

curl Transferir datos desde/hacia un servidor (HTTP, HTTPS, etc.)
curl -I https://example.com

Enviar una petición HEAD (solo encabezados)

curl -O https://example.com/file.txt

Descargar un archivo y mantener su nombre

curl -d "a=1&b=2" -X POST URL

Enviar una petición POST con datos de formulario

df Reportar el uso de espacio en disco del sistema de archivos
df -h

Tamaños en formato legible

df /home

Uso de un punto de montaje específico

df -T

Mostrar tipos de sistemas de archivos

diff Comparar archivos o directorios
diff file1 file2

Comparar dos archivos

diff -u old.c new.c

Diff unificado (estilo parche)

diff -r dir1 dir2

Comparación recursiva de directorios

du Estimar el uso de espacio de archivos y directorios
du -sh *

Mostrar tamaño de los elementos en el directorio actual

du -h file.txt

Mostrar tamaño de un solo archivo

du -sh --max-depth=1 /var

Resumir tamaños de subdirectorios de primer nivel

find Buscar archivos/directorios por nombre, tamaño, tiempo, etc.
find . -name "*.log"

Encontrar todos los archivos .log en el directorio actual

find / -type f -size +100M

Encontrar archivos mayores a 100 MB

find . -mtime -1

Archivos modificados en el último día

free Mostrar la memoria libre y usada
free -h

Unidades de memoria legibles

free -m

Mostrar valores en MB

watch -n 2 free -h

Refrescar salida cada 2 segundos

grep Buscar texto usando patrones (expresiones regulares)
grep "error" logfile

Encontrar líneas que contengan error

grep -r "error" /var/log

Búsqueda recursiva en un directorio

grep -i "fail" file

Búsqueda sin distinguir mayúsculas

head Mostrar las primeras líneas de un archivo
head -n 10 file

Primeras 10 líneas

head -n 20 file.txt

Primeras 20 líneas

head -c 100 file

Primeros 100 bytes

hostname Mostrar o asignar el nombre del host del sistema
hostname newname

Asignar temporalmente el nombre del host hasta reinicio

hostname -I

Mostrar direcciones IP

kill Enviar señales a procesos
kill -9 1234

Forzar terminación de un proceso por PID

kill -TERM 1234

Terminar con gracia con SIGTERM

pkill -f python

Matar procesos que coincidan con un patrón

ping Verificar conectividad de red con peticiones ICMP
ping 8.8.8.8

Hacer ping a una dirección

ping -c 4 ya.ru

Enviar 4 paquetes

ping -i 2 1.1.1.1

Intervalo de 2 segundos

ps Mostrar estado de procesos
ps aux

Listar todos los procesos

ps -ef | grep nginx

Filtrar por nombre usando grep

ps -u $USER

Procesos del usuario actual

rsync Transferencia rápida de archivos incremental
rsync -av src/ dst/

Sincronizar directorios localmente

rsync -avz user@host:/src /dst

Sincronizar con un host remoto vía SSH

rsync --delete src/ dst/

Eliminar archivos en destino que faltan en origen

scp Copia segura (programa de copia remota)
scp file user@host:/path

Copiar un archivo a un host remoto

scp user@host:/file.txt .

Copiar un archivo desde un host remoto

scp -r dir user@host:/path

Copiar un directorio recursivamente

sort Ordenar líneas de texto
sort file.txt

Orden alfabético

sort -r file.txt

Orden inverso

sort -n numbers.txt

Orden numérico

tail Mostrar el final de archivos; seguir cambios
tail -f logfile.log

Seguir un log en tiempo real

tail -n 20 file.txt

Mostrar las últimas 20 líneas

tail -c 100 file.txt

Mostrar los últimos 100 bytes

tar Crear, listar o extraer archivos tar
tar -czf archive.tgz dir/

Crear un archivo comprimido .tgz

tar -xzf archive.tgz

Extraer un archivo .tgz

tar -tf archive.tgz

Listar contenido de un archivo

tee Leer desde stdin y escribir en stdout y archivos
echo "test" | tee out.txt

Escribir salida en out.txt y mostrarla

ls | tee list.txt

Guardar salida de ls en un archivo y mostrarla

command | tee -a log.txt

Añadir salida al final de log.txt

top Mostrar tareas de Linux (visor interactivo de procesos)
top

Iniciar top

htop

Visor interactivo alternativo (htop)

top -o %MEM

Ordenar por uso de memoria

uptime Mostrar cuánto tiempo ha estado encendido el sistema
uptime -p

Tiempo de actividad legible

uptime -s

Hora de arranque del sistema

wget Descargador de red no interactivo
wget https://site.com/file.zip

Descargar un archivo por URL

wget -c file.zip

Reanudar una descarga interrumpida

wget -O saved.txt URL

Guardar con un nombre diferente

wc Imprimir conteo de líneas, palabras y bytes de archivos
wc -l file

Contar líneas

wc -w file

Contar palabras

wc -m file

Contar caracteres

uniq Reportar o filtrar líneas repetidas (duplicados adyacentes)
uniq file.txt

Eliminar duplicados adyacentes

sort file | uniq

Eliminar duplicados después de ordenar

sort file | uniq -c

Contar ocurrencias de cada línea

yes Imprimir una cadena repetidamente hasta detener; útil en scripts
yes "y" | command

Responder siempre “y” a los avisos

yes | rm -i *

Auto-confirmar eliminaciones interactivas

yes no | command

Responder “no” a los avisos

🔧 Comandos avanzados

Comando

Ejemplo

Descripción

at Programar un comando de una sola vez para ejecutarse en un momento dado
at now + 1 minute

Ejecutar un comando un minuto a partir de ahora

atq

Listar trabajos pendientes

atrm

Eliminar un trabajo pendiente

awk Lenguaje de escaneo de patrones y procesamiento
awk '{print $1}' file

Imprimir la primera columna

ps aux | awk '$3 > 50'

Filtrar procesos por uso de CPU

cat file.txt | awk '{print $2}'

Imprimir el segundo campo de cada línea

awk '/error/ {print $0}' logfile

Imprimir líneas que coincidan con un patrón

crontab Instalar, listar o eliminar trabajos cron por usuario
crontab -e

Editar el crontab del usuario actual

crontab -l

Listar trabajos cron

crontab -r

Eliminar el crontab del usuario actual

cut Eliminar o seleccionar secciones de cada línea de archivos
cut -d':' -f1 /etc/passwd

Imprimir nombres de usuario desde /etc/passwd

echo "a:b:c" | cut -d':' -f2

Cortar el segundo campo usando ‘:’ como delimitador

cut -c1-5 filename

Seleccionar caracteres por posición

df Reportar uso de espacio en disco del sistema de archivos
df -h

Tamaños en formato legible

df -T

Mostrar tipos de sistemas de archivos

df /home

Uso del directorio home

env Ejecutar un comando en un entorno modificado o mostrar variables
env | grep PATH

Mostrar entradas de PATH

env -i bash

Iniciar un shell limpio con entorno vacío

export Establecer variables de entorno para la shell/sesión actual
export VAR=value

Definir una variable para esta shell

export PATH=$PATH:/new/path

Agregar un directorio a PATH

export -p

Listar variables exportadas

free Mostrar uso de memoria
free -m

Mostrar en MB

free -h

Unidades legibles

free -s 5

Muestrear cada 5 segundos

hostnamectl Consultar y cambiar el nombre de host y configuraciones relacionadas
hostnamectl status

Mostrar estado del nombre de host

hostnamectl set-hostname newname

Definir un nuevo nombre de host estático

ifconfig / ip Herramientas IP para ver/gestionar interfaces y direcciones
ifconfig

Mostrar interfaces de red (legacy)

ip a

Mostrar direcciones con ip

ip link set eth0 up

Activar una interfaz

iostat Reportar estadísticas de CPU e I/O
iostat -x 2

Estadísticas extendidas cada 2 segundos

iostat -d 5 3

Estadísticas de dispositivos (intervalo 5s, 3 reportes)

iptables Herramienta de administración para filtrado de paquetes IPv4 y NAT
iptables -L

Listar reglas actuales

iptables -A INPUT -p tcp --dport 22 -j ACCEPT

Permitir conexiones SSH entrantes en el puerto 22

iptables -F

Eliminar todas las reglas

journalctl Consultar el journal de systemd
journalctl -xe

Mostrar errores recientes con contexto

journalctl -u nginx.service

Mostrar logs de un servicio

journalctl --since "2 hours ago"

Mostrar logs desde un tiempo relativo

ln Crear enlaces entre archivos
ln -s target link

Crear un enlace simbólico

ln file.txt backup.txt

Crear un enlace duro

ln -sf target link

Recrear un enlace simbólico forzadamente

sed Editor de flujo para filtrar y transformar texto
sed 's/old/new/g' file

Reemplazar una cadena globalmente

sed -n '1,5p' file

Imprimir solo un rango de líneas

sed '/pattern/d' file

Eliminar líneas que coincidan

systemctl Controlar el sistema y gestor de servicios systemd
systemctl status nginx

Mostrar estado de un servicio

systemctl start nginx

Iniciar un servicio

systemctl enable nginx

Habilitar un servicio al arrancar

tr Traducir o eliminar caracteres
tr a-z A-Z

Convertir minúsculas a mayúsculas

echo "hello" | tr 'h' 'H'

Reemplazar un carácter

echo "abc123" | tr -d '0-9'

Eliminar dígitos

type Describir cómo se interpretaría un nombre en la shell
type ls

Mostrar cómo se resuelve ls

type cd

Mostrar cómo se resuelve cd

type python3

Mostrar cómo se resuelve python3

ulimit Obtener o establecer límites de recursos de procesos de usuario
ulimit -n

Mostrar máximo de archivos abiertos

ulimit -c unlimited

Habilitar core dumps

ulimit -u 4096

Limitar el número de procesos de usuario

uptime Mostrar tiempo encendido del sistema y carga promedio
uptime -p

Tiempo legible de actividad

uptime -s

Mostrar hora de arranque

xargs Construir y ejecutar líneas de comando desde la entrada estándar
xargs -n 1 echo

Imprimir cada argumento en una línea separada

echo "a b c" | xargs -n 1

Dividir palabras en argumentos separados

find . -name '*.txt' | xargs rm

Buscar archivos y eliminarlos con xargs

🌐 Comandos de red

Comando

Ejemplo

Descripción

curl Transferir datos desde/hacia servidores
curl -X POST -d "a=1" URL

Petición POST con datos de formulario

curl -I URL

Obtener solo encabezados

curl -o file.html URL

Descargar y guardar en un archivo

dig Utilidad de consulta DNS
dig openai.com

Consultar registros A

dig +short openai.com

Respuesta corta

dig @8.8.8.8 openai.com

Usar un servidor DNS específico

ftp Cliente de Protocolo de Transferencia de Archivos
ftp host

Conectarse a un servidor FTP

ftp -n host

Conectarse sin auto-login

ftp> get file.txt

Descargar un archivo en una sesión FTP

ip address Mostrar/manipular direcciones IP
ip addr show eth0

Mostrar info de dirección para eth0

ip addr

Listar todas las direcciones

ip link Mostrar/manipular dispositivos de red
ip link show

Mostrar enlaces de red

ip link set eth0 up

Activar una interfaz

ip route Mostrar/manipular la tabla de enrutamiento IP
ip route list

Listar tabla de enrutamiento

ip route add default via 192.168.1.1

Agregar una ruta por defecto

nc Conexiones TCP/UDP arbitrarias y escucha
nc -zv host 22

Escanear puertos de un host

nc -l 1234

Escuchar en un puerto TCP

nc host 1234 < file

Enviar un archivo a un puerto remoto

nmap Herramienta de exploración de red y escáner de puertos/seguridad
nmap -sP 192.168.1.0/24

Ping scan a una subred

nmap -sV 192.168.1.1

Detección de servicios/versiones

nmap -O 192.168.1.1

Detección de sistema operativo

nslookup Consultar servidores de nombres de dominio de Internet
nslookup google.com

Consultar un nombre de dominio

nslookup 8.8.8.8

Consulta inversa de una IP

ssh Cliente de inicio de sesión remoto OpenSSH
ssh user@host

Conectarse a un host

ssh -p 2222 user@host

Conectarse usando un puerto no predeterminado

ssh -i ~/.ssh/id_rsa user@host

Iniciar sesión con una clave privada específica

ss Utilidad para investigar sockets
ss -tuln

Listar puertos TCP/UDP en escucha

ss -s

Estadísticas de resumen

ss -l

Listar sockets en escucha

telnet Interfaz de usuario para el protocolo TELNET
telnet host 80

Conectarse a un host en el puerto 80

telnet example.com 443

Conectarse al 443

telnet localhost 25

Conectarse al SMTP local

traceroute Rastrear la ruta hacia un host de red
traceroute 8.8.8.8

Rastrear ruta hacia una IP

traceroute -m 15 8.8.8.8

Limitar saltos máximos

wget Recuperar archivos desde la web
wget -O file.txt URL

Guardar salida en un archivo

wget URL

Descargar al directorio actual

wget -c URL

Continuar una descarga parcial

🔍 Búsqueda y gestión de archivos

Comando

Ejemplo

Descripción

basename Quitar directorio y sufijo de nombres de archivo
basename /path/to/file

Imprimir el nombre de archivo desde una ruta

basename /path/to/file .txt

Quitar un sufijo del nombre

dirname Quitar el último componente de una ruta
dirname /path/to/file

Mostrar parte de directorio de la ruta

dirname /etc/passwd

Mostrar padre de /etc/passwd

du Estimar uso de espacio en archivos
du -sh folder/

Mostrar tamaño de un directorio

du -h *

Mostrar tamaño de elementos en el directorio actual

du -c folder1 folder2

Tamaño acumulado de múltiples directorios

file Determinar tipo de archivo
file some.bin

Detectar tipo de archivo

file *

Detectar tipos para todos los archivos en el directorio

file -i file.txt

Mostrar tipo MIME

find Buscar archivos
find /path -type f -name "*.sh"

Buscar scripts shell por nombre

find . -size +10M

Buscar archivos mayores de 10 MB

find /tmp -mtime -1

Buscar archivos modificados en el último día

locate Encontrar archivos por nombre usando base de datos
locate filename

Localizar un nombre de archivo

locate *.conf

Búsqueda con comodines

locate -i README

Búsqueda sin distinguir mayúsculas

realpath Imprimir la ruta absoluta resuelta
realpath file

Resolver ruta de un archivo

realpath ../relative/path

Resolver una ruta relativa

stat Mostrar estado de archivo o sistema de archivos
stat file

Mostrar estado detallado de un archivo

stat -c %s file

Imprimir solo tamaño de archivo

stat -f file

Mostrar estado del sistema de archivos

tree Listar contenido de directorios en formato de árbol
tree

Imprimir árbol de directorios

tree -L 2

Limitar profundidad mostrada

tree -a

Incluir archivos ocultos

📊 Monitoreo del sistema

Comando

Ejemplo

Descripción

dmesg Imprimir o controlar el búfer de anillo del kernel
dmesg | tail

Mostrar los últimos mensajes del kernel

dmesg | grep usb

Filtrar mensajes de USB

free Mostrar uso de memoria
free -h

Unidades legibles

free -m

Mostrar en MB

htop Visor interactivo de procesos
htop

Ejecutar htop

iotop Mostrar uso de E/S por procesos
iotop

Ejecutar iotop

iotop -o

Mostrar solo procesos que hacen E/S

lsof Listar archivos abiertos
lsof -i :80

Mostrar procesos que usan el puerto 80

lsof -u username

Mostrar archivos abiertos por un usuario

uptime Mostrar tiempo activo del sistema y carga promedio
vmstat Reportar estadísticas de memoria virtual
vmstat 1

Refrescar cada 1 segundo

vmstat 5 3

Intervalo de cinco segundos, 3 reportes

watch Ejecutar un programa periódicamente, mostrando salida
watch -n 1 df -h

Monitorear uso de disco

watch -d free -h

Resaltar diferencias y monitorear memoria

📦 Gestión de paquetes

Comando

Ejemplo

Descripción

apt Administrador de paquetes APT (Debian/Ubuntu)
apt install curl

Instalar un paquete

apt remove curl

Eliminar un paquete

apt update && apt upgrade

Actualizar listas de paquetes y actualizar

dnf Dandified YUM (familia Fedora/RHEL)
dnf install curl

Instalar un paquete

dnf upgrade

Actualizar paquetes

rpm Administrador de paquetes RPM
rpm -ivh package.rpm

Instalar un paquete RPM

rpm -e package

Eliminar un paquete

snap Administrador de paquetes Snappy
snap install app

Instalar un snap

snap remove app

Eliminar un snap

yum Yellowdog Updater Modified (RHEL/CentOS)
yum install curl

Instalar un paquete

yum remove curl

Eliminar un paquete

💽 Sistemas de archivos

Comando

Ejemplo

Descripción

blkid Localizar/imprimir atributos de dispositivos de bloque
blkid

Listar dispositivos de bloque y atributos

df Reportar uso de espacio en disco del sistema de archivos
df -Th

Tamaños legibles por tipo

fsck Verificar y reparar un sistema de archivos Linux
fsck /dev/sda1

Verificar un dispositivo

lsblk Listar información sobre dispositivos de bloque
lsblk

Listar dispositivos en forma de árbol

mkfs Construir un sistema de archivos Linux
mkfs.ext4 /dev/sdb1

Crear un sistema de archivos ext4

mount Montar un sistema de archivos
mount /dev/sdb1 /mnt

Montar un dispositivo en /mnt

mount | grep /mnt

Mostrar sistemas de archivos montados filtrados por ruta

parted Programa de manipulación de particiones
parted /dev/sdb

Abrir un disco para particionar

umount Desmontar sistemas de archivos
umount /mnt

Desmontar un punto de montaje

🤖 Scripts y automatización

Comando

Ejemplo

Descripción

alias Definir o mostrar alias de shell
alias ll='ls -la'

Crear un alias útil

alias

Listar alias definidos

bash / sh Ejecutar scripts de shell
bash script.sh

Ejecutar un script con Bash

sh script.sh

Ejecutar un script con sh

crontab Tablas cron por usuario
crontab -e

Editar el crontab del usuario actual

read Solicitar entrada del usuario en scripts de shell
read name

Leer en una variable

set Configurar opciones/argumentos posicionales de la shell
set -e

Salir al primer error

source Leer y ejecutar comandos desde un archivo en la shell actual
source ~/.bashrc

Recargar configuración de la shell

trap Capturar señales y ejecutar comandos
trap "echo 'exit'" EXIT

Ejecutar un comando al salir de la shell

🛠 Desarrollo y depuración

Comando

Ejemplo

Descripción

gcc Compilador GNU C
gcc main.c -o app

Compilar un archivo fuente en C

gdb Depurador GNU
gdb ./app

Depurar un binario compilado

git Sistema de control de versiones distribuido
git status

Mostrar estado del árbol de trabajo

git commit -m "msg"

Hacer commit con un mensaje

ltrace Rastreador de llamadas a librerías
ltrace ./app

Rastrear llamadas de librería de un binario

make Utilidad para mantener grupos de programas
make

Construir según Makefile

shellcheck Análisis estático para scripts de shell
shellcheck script.sh

Analizar un script de shell

strace Rastrear llamadas al sistema y señales
strace ./app

Rastrear syscalls de un programa

valgrind Framework de instrumentación para herramientas de análisis dinámico
valgrind ./app

Ejecutar un programa bajo Valgrind

vim / nano Editores de texto en línea de comandos
vim file.sh

Editar con Vim

nano file.sh

Editar con Nano

📌 Misceláneos

Comando

Ejemplo

Descripción

cal Mostrar un calendario
cal 2025

Mostrar calendario de un año

cal 08 2025

Mostrar un mes específico

date Mostrar o configurar la fecha y hora del sistema
date +%T

Imprimir hora actual (HH:MM:SS)

date -d "next friday"

Imprimir fecha de un día relativo

factor Factorizar enteros
factor 100

Factorizar un número

man Formatear y mostrar páginas de manual en línea
man tar

Abrir una página man

man -k copy

Buscar manuales por palabra clave

man 5 passwd

Abrir una sección de manual específica

seq Imprimir secuencias de números
seq 1 5

Contar de 1 a 5

seq 1 2 9

Contar con paso

seq -s ',' 1 5

Unir números con un separador personalizado

yes Imprimir una cadena repetidamente hasta detener
yes | rm -r dir

Auto-confirmar una eliminación recursiva

📚 Recursos adicionales

📘 páginas man - manuales detallados de comandos:

man ls
man rm

📙 TLDR - ejemplos concisos de uso de comandos populares:

🧠 Tip: Instala tldr para ayuda estilo hoja de trucos:

sudo apt install tldr   # o: npm install -g tldr
tldr tar                # ejemplo de un resumen corto para el comando tar

🌐 Enlaces útiles

Páginas man de Linux en línea — manuales oficiales, buscables por nombre de comando:
https://man7.org/linux/man-pages/

Páginas man simplificadas y comunitarias — ayuda mantenida por la comunidad con ejemplos prácticos:
https://tldr.sh/