Escriba scripts de shell y funciones de shell para realizar la compilación de ns3 en cualquier ruta

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.

  1. Kernel: como su nombre lo indica, el kernel de Linux es equivalente a su cerebro
  2. 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.
  3. Bash: Equivalente a un ojo grande y hermoso. Hay muchos tipos de ojos (incluidos zsh, etc.), pero a todos les gusta este tipo
  4. 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

enlace de blog de uso de $

  • $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 actual
  • set: 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



~/.bashrcAgregue 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.32la carpeta para ejecutar ./wafel 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

Guess you like

Origin blog.csdn.net/qq_20493631/article/details/111182647