Ejemplos de scripts en Bash y preguntas frecuentes sobre Linux

Enviado por Programa Chuletas y clasificado en Informática y Telecomunicaciones

Escrito el en español con un tamaño de 7,19 KB

1. Mover un archivo a la papelera antes de borrarlo

#!/bin/bash
if [ $# -ne 1 ]; then
  echo "Indique el archivo como parámetro"
elif [ -f $1 ]; then
  echo "Copio el fichero $1 al directorio papelera y lo borro."
  if [ ! -d papelera ]; then
    mkdir papelera
  fi
  cp $1 papelera
  rm -f $1
else
  echo "El parámetro $1 no es un fichero"
fi

2. Comparar dos números

#!/bin/bash
if [ $# -eq 2 ]; then
  echo "Primer número: $1"
  echo "Segundo número: $2"
  case $1 in
    [0-9])
      case $2 in
        [0-9])
          if [ $1 -eq $2 ]; then
            relacion="="
          else
            if [ $1 -gt $2 ]; then
              relacion=">"
            else
              relacion="<"
            fi
          fi
          echo "$1 $relacion $2"
          ;;
        *) echo "$2 no es un número"
          ;;
      esac
      ;;
    *) echo "$1 no es un número"
      ;;
  esac
else
  echo "Debe indicar dos parámetros numéricos"
fi

3. Crear directorio, archivo y llenarlo con información

#!/bin/bash
if [ -d dir1 ]; then
  echo "El directorio ya existe"
else
  mkdir dir1
  echo "Creado el directorio dir1"
fi
cd dir1
touch fich1
echo "Creado el fichero fich1"
ls /dev/t*[0-9] >> fich1
cat /etc/passwd | cut -d":" -f1,6 >> fich1
echo "Llenado el fichero fich1"
echo "Contenido del fichero fich1"
more fich1

4. Copiar un archivo en otro

#!/bin/bash
if [ $# -eq 2 ]; then
  if [ -f $1 -a -f $2 ]; then
    echo "¿Quieres sobrescribir el contenido de $2 con $1? (S/N)"
    read resp
    if [ $resp = "S" -o $resp = "s" ]; then
      cat $1 > $2
      echo "Contenido de $2 sobreescrito con contenido de $1"
    else
      cat $1 >> $2
      echo "Contenido de $1 añadido a $2"
    fi
  else
    echo "Alguno de los parámetros no es un fichero"
  fi
else
  echo "Debe incluir SOLO dos ficheros como parámetros"
fi

5. Menú interactivo

#!/bin/bash
opc=0
while [ $opc -ne 3 ]; do
  echo "Menú"
  echo "1. Conexiones actuales"
  echo "2. Contenido del directorio actual"
  echo "3. Limpiar la pantalla y salir del menú"
  echo "4. Submenú"
  echo "Elige una opción"
  read opc
  case $opc in
    1) echo "Conexiones actuales:"
       who
       ;;
    2) echo "Contenido del directorio actual:"
       ls
       ;;
    3) clear
       ;;
    4) salir=0
       while [ $salir -ne 4 ]; do
         echo "Submenú"
         echo "1. Dar todos los permisos de lectura."
         echo "2. Dar todos los permisos de escritura."
         echo "3. Dar todos los permisos de ejecución."
         echo "4. Salir submenú"
         echo "Elija su opción: "; read salir
         case $salir in
           1) echo "Indique el archivo: "; read arch
              if [ -f $arch ]; then
                chmod u+r,g+r,o+r $arch
                echo "Concedidos permisos de lectura"
              else
                echo "$arch no es un archivo"
              fi
              ;;
           2) echo "Indique el archivo: "; read arch
              if [ -f $arch ]; then
                chmod u+w,g+w,o+w $arch
                echo "Concedidos permisos de escritura"
              else
                echo "$arch no es un archivo"
              fi
              ;;
           3) echo "Indique el archivo: "; read arch
              if [ -f $arch ]; then
                chmod u+x,g+x,o+x $arch
                echo "Concedidos permisos de ejecución"
              else
                echo "$arch no es un archivo"
              fi
              ;;
           4) clear
              ;;
           *) echo "Opción inválida"
              ;;
         esac
       done
       ;;
    *) echo "Opción inválida"
       ;;
  esac
done

Administración de usuarios y comandos

Añadir el usuario Antonio al grupo principal profesores:
adduser Antonio profesores

Cambiar el nombre del usuario Antonio por Toni:
usermod -l toni -d /home/toni -m antonio 

Eliminar el usuario antonio del grupo lp:
deluser antonio lp

Contar las líneas de archivo.txt:
wc -l < archivo.txt

Mostrar la ayuda del comando ifconfig de forma paginada:
man ifconfig | less

Número de usuarios que utilizan /bin/bash como shell:
grep /bin/bash /etc/passwd | wc -l

Preguntas frecuentes sobre Linux

  1. ¿Qué otro nombre recibe el núcleo del sistema operativo Linux?
    Kernel
  2. ¿Cuál es el sistema de archivos recomendado para versiones de Linux superiores a la 11.10?
    ext4
  3. ¿El archivo donde se encuentran los repositorios se llama... y está en...?
    sources.list, /etc/apt
  4. Indica cuál de las siguientes afirmaciones es cierta:
    Los directorios son ficheros que contienen listas de ficheros.
  5. ¿En qué directorio encontramos archivos simbólicos que representan partes del hardware, discos duros, memoria,...?
    /dev
  6. ¿En qué directorio encontramos los directorios de los usuarios?
    /home
  7. ¿Con qué comando podemos visualizar todos los archivos, incluidos los ocultos?
    ls -a
  8. ¿Cómo se borra un árbol de directorios si están vacíos?
    rmdir -p
  9. ¿Qué opción del comando cp sirve para copiar la estructura de directorios?
    -r
  10. ¿Qué es el UID?
    Número único dado a cada usuario del sistema.
  11. ¿Qué es el GID?
    Número único dado a cada grupo del sistema.
  12. Toda la información relacionada con el usuario la podemos encontrar en:
    /etc/passwd
  13. ¿Qué fichero debemos mirar si queremos cambiar la duración de una contraseña?
    /etc/shadow
  14. La opción -g en el comando useradd nos indica que vamos a crear un usuario y...
    Su grupo inicial.
  15. ¿Qué resultado obtenemos si aplicamos chmod 555 fichero?
    r-xr-xr-x
  16. ¿Qué resultado obtenemos si aplicamos chmod g+rw o+x?
    r--rw-r-x
  17. ¿Qué función tiene el comando chown?
    Modificar el propietario de un fichero.
  18. El directorio de trabajo del administrador del equipo Linux es:
    /root
  19. Queremos cambiar el nombre "contabilidad" por "hipoteca":
    mv contabilidad hipoteca
  20. Mostrar a partir del tercer campo del fichero /etc/passwd:
    cut -d: -f3- /etc/passwd
  21. Número de líneas y de palabras del fichero /etc/passwd:
    wc -l -w /etc/passwd
  22. Mostrar los archivos d1t07.mp3 y d1t08.mp3:
    ls d1t0{7,8}.mp3
  23. Crear una jerarquía de directorios de una sola vez:
    mkdir -p dir1/dir2/dir3
  24. Eliminar todos los archivos y directorios dentro de un directorio sin confirmación:
    rm -rf directorio

Entradas relacionadas: