Tabla de contenido
conceptos básicos de concha
shell, bash, núcleo
La relación entre Bash, Shell y Kernel es como la relación entre nuestros ojos, el procesamiento de señales de luz y el cerebro.
- Kernel: como su nombre lo indica, el kernel de Linux es equivalente a su cerebro
- Shell: es equivalente al procesador de señales de luz ocular que puede procesar las cosas coloridas que ven los ojos en un conjunto de comandos que el cerebro puede aceptar.
- Bash: Equivalente a un ojo grande y hermoso. Hay muchos tipos de ojos (incluidos zsh, etc.), pero a todos les gusta este tipo
- terminal: terminal, que equivale a la forma de existencia de tus ojos, es decir, puede haber múltiples terminales.
Explicación formal:
- Kernel:
Kernel, sus principales módulos (o componentes) incluyen las siguientes partes: administración de almacenamiento, administración de CPU y procesos, sistema de archivos, administración de dispositivos y controladores, comunicación de red e inicialización del sistema (arranque), llamadas al sistema, etc., para completar el control del hardware. - Shell:
comúnmente conocido como shell (usado para distinguirlo del kernel), es una capa de shell fuera de la máquina para la interacción humano-computadora. Es una interfaz para la interacción entre humanos y computadoras. El software (analizador de comandos) que "proporciona la interfaz de usuario" recibe los comandos del usuario y luego invoca la aplicación correspondiente. Su rendimiento es que el usuario ingresa un comando y el shell interpreta y ejecuta inmediatamente un comando. No se limita a conceptos tales como sistemas e idiomas, métodos de operación y métodos de desempeño. Por ejemplo, generalmente ingresamos comandos en el marco negro, llamado interfaz de línea de comandos (CLI); haga clic en la pantalla, llamada interfaz gráfica de usuario (GUI) - Bash:
Su nombre es una serie de abreviaturas: Bourne-Again SHell, como su nombre indica, es un Shell regenerado, por lo tanto, Bash es una especie de Shell, y es el shell más común, el shell por defecto en Mac es bash
El script de shell general es xx.sh y el método de ejecución recomendado es
el comienzo del archivo ./xx.sh:
#!/bin/bash
O por compatibilidad con diferentes entornos.
#!/bin/env bash
Por lo tanto, el archivo sh es solo un paquete de comandos de shell utilizados en la terminal, que es conveniente llamar
Uso de $ en script de shell
- $0: el comando del shell en sí. 1 a 9: Indica el número de parámetros del Shell
- $*: muestra todos los parámetros pasados al script como una sola cadena
- $? : Muestra la ejecución del último comando
- $#: el número de parámetros pasados al script
- $$: el número de identificación del proceso actual del script que se está ejecutando
- $!: El número de identificación del último proceso que se ejecuta en segundo plano
- $-: muestra las opciones actuales utilizadas por el shell
Al hacer referencia a variables, use el símbolo $ para hacer referencia directamente e incluya variables de bucle
[root@localhost ~]# x=1024
[root@localhost ~]# echo $x
1024
variable
variable local
Variable definida por el usuario, válida para el proceso actual, no válida para otros procesos y procesos secundarios del proceso actual
Variable ambiental
El proceso actual es válido y puede ser llamado por procesos secundarios
env
: Ver las variables de entorno del usuario actualset
: consulta todas las variables del usuario actual (variables temporales y variables de entorno)
export 变量名 = 变量值
或者
变量名 = 变量值 ; export 变量名
#系统中有一个PATH,环境变量
Adición temporal:
~$ echo $PATH # 显示当前环境变量
/usr/local/sbin:/usr/local/bin # 显示举例,多个路径中间用“:”隔开
~$ PATH="$PATH:/home/workdir" # 添加“/home/workdir”目录
/usr/local/sbin:/usr/local/bin:/home/workdir # 显示举例,多个路径中间仍用“:”隔开
~$ export PATH
~$ source ~/.bashrc
Haz un cambio permanente:
# 在相应文件中添加
PATH=$PATH:/home/workdir
variable global
Todos los usuarios y programas del mundo pueden usarlo, y los usuarios heredados y recién creados también pueden usarlo de manera predeterminada
Nombre del archivo | ilustrar | Observación |
---|---|---|
~/.bashrc | La información bash del usuario actual, leída cuando el usuario inicia sesión | Definir alias, umasks, funciones, etc. |
~/.bash_perfil | Variables de entorno para el usuario actual, se leen cuando el usuario inicia sesión | |
~/.bash_logout | Cuando el usuario actual sale del shell actual, última lectura | Definir el programa de ejecución cuando el usuario sale, etc. |
/ect/bashrc | Información global de bash, válida para todos los usuarios | |
/etc/perfil | Información de variables de entorno global | El sistema y todos los usuarios están en vigor |
~/.bashrc
Agregue la función de shell en
()
No importa si está aquí o no, y luego =
no deje espacios a su alrededor, y la sangría debe seguir su sangría automática, de lo contrario se informará un error.
function waff() {
ns_root="/opt/ns-allinone-3.32/ns-3.32/"
cd $ns_root && sudo ./waf $*
}
Cuando se ejecuta:
waff --run hello-simulator
De esta forma, no tienes que ir a ns-3.32
la carpeta para ejecutar ./waf
el comando.
Escriba scripts de shell y agregue variables de entorno
Esto es para agregar la ruta del script a la variable de entorno y luego compilar el archivo ejecutando el script.
~/.bashrc:
export PATH="/opt/ns-allinone-3.32/wafenv.sh:$PATH"
wafenv.sh:
#!/bin/bash
ns_root="/opt/ns-allinone-3.32/ns-3.32/"
cd $ns_root && sudo ./waf $*
implementar:
accelerator@LAB:/opt/ns-allinone-3.32$ wafenv.sh --run hello-simulator
Waf: Entering directory `/opt/ns-allinone-3.32/ns-3.32/build'
Waf: Leaving directory `/opt/ns-allinone-3.32/ns-3.32/build'
Build commands will be stored in build/compile_commands.json
'build' finished successfully (0.735s)
Hello Simulator