¿Qué es Shell? ¡Empiece rápidamente con Shell!

Shell es un intérprete de línea de comandos que acepta comandos de aplicación / usuario y luego llama al kernel del sistema operativo. Es un lenguaje de programación poderoso, fácil de escribir, fácil de depurar y muy flexible.
Inserte la descripción de la imagen aquí
Hay seis analizadores de shell proporcionados por Linux:cat /etc/shells

  • /bin/sh
  • /bin/bash, El analizador predeterminado en CentOS es bash
  • /sbin/nologin
  • /bin/dash
  • /bin/tcsh
  • /bin/csh

Formato de secuencia de comandos

  • El guión #!/bin/bashcomienza con

    #!/bin/bash
    
    echo "hello world"
    
  • Ejecute el archivo de script sh xx.shpor: bash xx.sh,,./xx.sh(注意需要.sh具备执行权限[x],chmod 777)

  • Por touch xx.shla creación de archivos de comandos, mediante vim xx.shla edición de archivos de comandos.

Variable de sistema

  • $HOME, El directorio de inicio del usuario actualmente conectado
  • $PWD, La ruta del directorio actual
  • $SHELL, El analizador de shell predeterminado
  • $USER, El usuario que ha iniciado sesión actualmente

Variable personalizada

  • Gramática básica
    • Definir variable: variable = valor
    • Deshacer variable:unset 变量名
    • Declare variables estáticas: readonly 变量名tenga en cuenta que las variables estáticas no se pueden deshacer y el reinicio no es válido.
    • Reglas de definición de variables: compuestas por letras, números y guiones bajos, y no pueden comenzar con un número. Se recomienda que las variables de entorno estén en mayúscula.
    • Sin espacios alrededor del signo igual, requisitos estrictos
    • Las variables son de tipo cadena por defecto y las operaciones numéricas no se pueden realizar directamente.
    • Si el valor de la variable de espacio, necesita comillas comillas
    • Promueva las variables locales en el script a variables globales:export 变量名

Variable especial

  • $n

    • Descripción de la función: n es un número. $0, En nombre del nombre del script ;, $1-$9en nombre del primero al noveno parámetros; los parámetros por encima del décimo deben ${10}expresarse.

      touch partmeter.sh

      vim partmeter.sh

      #!/bin/bash
      
      echo "$0 $1 $2"
      

      bash partmeter.sh p1 p2

      partmeter.sh p1 p2

  • $#

    • Descripción de la función: obtenga el número de todos los parámetros de entrada, que se utilizan a menudo en bucles

      #!/bin/bash
      
      echo "$#"
      

      bash partmeter.sh p1 p2

      2

  • $*

    • Descripción de la función: obtenga todos los parámetros en la línea de comando y trate todas las entradas como un todo

      #!/bin/bash
          
      echo "$*"
      

      bash partmeter.sh p1 p2
      p1 p2

  • $@

    • Descripción de la función: obtenga todos los parámetros en la línea de comando y trate todos los parámetros de entrada de manera diferente

      #!/bin/bash
      
      echo "$@"
      

      bash partmeter.sh p1 p2
      p1 p2

  • $?

    • Descripción de la función: el estado de retorno del último comando ejecutado. Si el valor de la variable es 0, prueba que el último comando se ejecutó correctamente; si el valor de la variable es distinto de cero, prueba que hubo un error en la ejecución del comando anterior.

Operador

  • Gramática básica
    • $((运算式))o$[运算式]
    • exprOperación ( debe haber espacios entre operadores )
      • +,más
      • -,Menos
      • \*, Multiplicar
      • /,excepto
      • %, Toma el resto
      • Símbolo de ejecución de la operación: `expr 2 + 3

Juicio condicional

  • Gramática básica
    • [ condition ], Tenga en cuenta que debe haber espacios antes y después de la expresión
    • [ test ], Si la condición no está vacía, es verdadera; [], si la condición está vacía, es falsa;
  • Condiciones de juicio de uso común
    • = Comparación de cadenas
    • -lt, Menos que
    • -le, Menos que o igual a
    • -eq,igual
    • gt, más que el
    • ge, mayor o igual a
    • ne,no igual a
    • -r, Tiene permiso de lectura
    • -w, Tener permiso de escritura
    • -x, Tener permiso para ejecutar
    • -f, El archivo existe y es un archivo normal.
    • -e, El archivo existe
    • -d, El archivo existe y es un directorio
  • Juicio de múltiples condiciones
    • &&, El siguiente comando se ejecutará solo cuando el comando anterior se ejecute con éxito
    • ||, El siguiente comando se ejecutará cuando el comando anterior falle

Control de procesos

si
  • Sintaxis básica: debe haber un espacio después y debe haber un espacio antes y después de la ifexpresión condicional ;, significa else if; al final.[]eliffi

    #!/bin/bash
    
    if [ condition1 ];then
        content1
    elif [ condition2 ]
    then
        content2
    fi
    
caso
  • Sintaxis básica: case $变量名 in value)formato, ;;fin de caso, similar a romper; *)representa la rama predeterminada; esacfin;

    #!/bin/bash
    
    case $1 in
    1)
    	content1
    	;;
    2)
    	content2
    	;;
    3)
    	content3
    	;;
    *)
    	content4
    	;;
    esac
    
por
  • Gramática básica 1: for((初始值;循环控制条件;变量变化))formato; docuerpo del método; donefin; acumulación específica de 1-100 suma:

    #!/bin/bash
    
    s=0
    for((i=1;i<=100;i++))
    do
    	s=$[$s+$i]
    done
    
    echo $s
    
  • Sintaxis básica 2: for 变量 in value1 value2 value3formato; $@cada parámetro de entrada se procesa por separado y $*el parámetro de entrada se procesa como un todo

    #!/bin.bash
    
    for i in "$*"
    do
    	echo "ceshi * $*"
    done
    
    for j in "$@"
    do 
    	echo "ceshi @ $@"
    done
    

    bash ceshi.sh zs ls

    El resultado de salida es:

    ceshi * zs ls

    ceshi @ zs

    ceshi @ ls

tiempo
  • Gramática básica: while [ condition ]formato; docuerpo del método; donefin; la suma de la acumulación concreta 1-100:

    #!/bin/bash
    
    s=0
    i=0
    while [ $i -le 100]
    do
    	s=$[$s+$i]
    	i=$[$i+1]
    done
    

Leer para leer la entrada de la consola

  • Sintaxis básica:read(选项)(参数)

    • Opciones
      • -p, Especifique la solicitud al leer el valor
      • -t, Especifique el tiempo de espera al leer el valor (segundos)
    • parámetro
      • Variable: especifique el nombre de la variable para leer el valor
  • Ejemplo: ingrese el nombre en la consola en siete segundos

    #!/bin/bash
    
    read -t 7 -p "input your name in 7 seconds" name
    
    echo $name
    

función

Función del sistema
  • basename [string/pathname][suffix], Intercepta el nombre del archivo en la ruta especificada
  • dirname 文件绝对路径, Extraiga la ruta del archivo del nombre de archivo dado que contiene la ruta absoluta
Función personalizada
  • Gramática básica

    // 声明函数
    function funname[()]{
          
          
    	action;
    	[return int;]
    }
    funname // 执行函数
    

Herramienta Shell

comando de corte
  • Corte bytes, caracteres y campos de cada línea del archivo y genere estos bytes, caracteres y campos.

  • Uso básico

    • cut [选项参数] filename

    • Parámetro de opción

      • -f, Número de columna, qué columna extraer
      • -d, Separador, divida la columna de acuerdo con el separador especificado, el separador predeterminado es una pestaña\t
    • Ejemplo: use el espacio como separador para cortar la segunda columna del contenido del archivo y generar el siguiente contenido

      cut -d " " -f 2- cut.txt

y
  • Editor de transmisiones, que procesa una línea de contenido a la vez. Al procesar el contenido de la línea, almacene el contenido de la línea actual en un área de búfer temporal llamada "espacio de modo", luego use el comando sed para procesar el contenido en el búfer y envíe el contenido después de que se complete el procesamiento. Luego procesa la siguiente línea hasta el final del texto.

  • Uso básico

    • sed [选项参数] "命令功能" filename

    • Parámetro de opción

      • -e, Edite directamente la acción de sed en el modo de columna especificado
    • Función de comando (de uso común)

      • a, Agregar
      • d,Eliminar
      • s, Encontrar y reemplazar
    • Por ejemplo:

      • Agregue contenido en la segunda línea del archivo: agregue contenido

        sed "2a add contend" filename

      • Elimina la línea que contiene wo en el archivo.

        sed "/wo/d" filename

      • Reemplace wo en el archivo con ni

        sed "s/wo/ni/g" filename, gQue significa reemplazo global

      • Elimine la segunda línea del archivo y reemplace wo en el archivo con ni

        sed -e "2d" -e "s/wo/ni/g" filename

awk
  • La herramienta de análisis de texto lee el archivo línea por línea. De forma predeterminada, cada línea se corta con un espacio como separador y la parte cortada se puede analizar y procesar.

  • El uso básico: awk [选项参数] 'pattern1{action1} pattern2{action2} ...' filename; pattern; coincide con la expresión regular actioncontenidos comando correspondiente de acuerdo con la ejecución.

    • Parámetro de opción

      • -F, Especifique el separador del archivo de entrada
      • -v, Copiar una variable definida por el usuario
    • Variables integradas

      • FILENAME,nombre del archivo
      • NR, El número de registros leídos
      • NF, La cantidad de dominios en el registro de navegación (después de cortar, la cantidad de columnas)
    • Ejemplo: busque todas las líneas en el archivo que comiencen con la raíz y genere la séptima columna de la línea

      awk -F : '/^root/{print $7}' filename

clasificar
  • Los archivos se clasifican y emiten de acuerdo con el estándar de resultados de clasificación

  • Uso básico

    • sort(选项)(参数)

      • Opciones

      • -n, Ordenado por valor numérico

      • -r, Ordenar en orden inverso

      • -t, Establezca el carácter separador utilizado para ordenar

      • -k, Especifique la columna a ordenar

      • parámetro

        • Especifique la lista de archivos que se ordenarán
      • Ejemplo: los archivos se dividen por dos puntos y la tercera columna se ordena en orden inverso

        sort -t : -nrk 3 filename

Supongo que te gusta

Origin blog.csdn.net/Nerver_77/article/details/106987280
Recomendado
Clasificación