Curso correspondiente https://www.bilibili.com/video/BV18p4y167Md
Curso por correspondencia sobre sistemas operativos Conferencias prácticas sobre sistemas operativos 45
Tabla de contenido CSAPP Una comprensión profunda de los sistemas informáticos proviene de la clase abierta del jefe de Microsoft
yangminz
, https://www.bilibili.com/video/BV17K4y1N7Q2 (en actualización)
Índice de contenidos Serie de programación orientada a objetos C++ de la serie de programación orientada a objetos CPP del maestro Hou Jie (completada)
Una introducción al uso básico y las opciones de los comandos.
Man es la abreviatura de manual, que muestra la información específica de la instrucción.
Cuando se ejecuta man date, aparece DATE (1). El número que contiene representa el tipo de instrucción y sus tipos son los siguientes:
nombre en clave | tipo |
---|---|
1 | Instrucciones o archivos ejecutables que los usuarios pueden operar en el entorno shell |
5 | Archivo de configuración |
8 | Comandos administrativos disponibles para los administradores del sistema |
info es similar a man, pero info divide el documento en páginas y se puede saltar cada página.
/usr/share/doc almacena un conjunto completo de documentación para el software.
Antes de cerrar, debe usar el comando who para verificar si hay otros usuarios en línea.
Para acelerar la lectura y escritura de archivos de disco, los datos del archivo ubicados en la memoria no se sincronizarán con el disco inmediatamente, por lo que se requiere una operación de sincronización antes de apagar.
# # shutdown [-krhc] 时间 [信息] |
-k : 不会关机,只是发送警告信息,通知所有在线的用户
-r : 将系统的服务停掉后就重新启动
-h : 将系统的服务停掉后就立即关机
-c : 取消已经在进行的 shutdown 指令内容
La ruta al archivo ejecutable se declara en PATH, separada por :.
/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/dmtsai/.local/bin:/home/dmtsai/bin
sudo permite a los usuarios normales utilizar comandos ejecutables raíz, pero sólo los usuarios agregados en el archivo de configuración /etc/sudoers pueden utilizar este comando.
RPM y DPKG son los dos tipos más comunes de herramientas de gestión de paquetes de software:
Una distribución de Linux es una versión integrada del kernel de Linux y varias aplicaciones de software. Herramientas de gestión de paquetes basadas en Distribuciones comerciales Distribuciones comunitarias RPM Red Hat Fedora/CentOS DPKG Ubuntu Debian
Orden | efecto |
---|---|
:v | escribir en el disco |
:v! | Fuerza la escritura en el disco cuando el archivo es de solo lectura. Si se puede escribir depende de los permisos del usuario sobre el archivo. |
:q | dejar |
:q! | Obligado a irse sin guardar |
:wq | Escribir en el disco y salir. |
:wq! | Forzar la escritura en el disco y luego salir |
El Proyecto GNU, traducido como Proyecto Genuino, tiene como objetivo crear un sistema operativo completamente libre llamado GNU, y su software de contenido está completamente liberado bajo la GPL. El nombre completo de GPL es Licencia Pública General GNU, que incluye los siguientes contenidos: libertad para ejecutar este programa para cualquier propósito; libertad para mejorar este programa y publicar mejoras; ¶Elija una licencia de código abierto (se abre en una ventana nueva) ¿Cómo elegir una licencia de código abierto (se abre en una ventana nueva)
IDE (ATA) significa Accesorio de tecnología avanzada. La velocidad máxima de la interfaz es de 133 MB/s porque el cable del puerto paralelo tiene un rendimiento antiinterferente deficiente y el cable ocupa mucho espacio, lo que no favorece la disipación de calor interna. la computadora, ha sido reemplazada gradualmente por SATA.
El nombre completo de SATA es Serial ATA, que es una interfaz ATA que utiliza un puerto serie. Tiene una fuerte antiinterferencia, tiene requisitos mucho más bajos para la longitud del cable de datos que ATA y admite funciones intercambiables en caliente y otras. La velocidad de interfaz de SATA-II es de 300MiB/s, mientras que el nuevo estándar SATA-III puede alcanzar una velocidad de transmisión de 600MiB/s. Los cables de datos SATA también son mucho más delgados que los ATA, lo que favorece la circulación del aire en el chasis y facilita la organización de los cables.
El nombre completo de SCSI es Small Computer System Interface. Ha experimentado muchas generaciones de desarrollo, desde el primer SCSI-II hasta el actual Ultra320 SCSI y Fiber-Channel, con varios tipos de interfaz. Los discos duros SCSI se utilizan ampliamente en servidores y computadoras personales a nivel de estaciones de trabajo. Por lo tanto, utilizan tecnologías más avanzadas, como una alta velocidad de disco de 15.000 rpm, y tienen un menor uso de CPU durante la transmisión. Discos duros ATA y SATA de la misma capacidad. Más caros.
Cada pieza de hardware en Linux se trata como un archivo, incluidos los discos. Los discos reciben nombres según el tipo de interfaz del disco. Los nombres de archivos de disco comunes son los siguientes:
La determinación del número de serie después del nombre del archivo está relacionada con el orden en que el sistema detecta los discos y no tiene nada que ver con la posición de la ranura en la que se insertan los discos.
Hay dos formatos principales de tablas de particiones de disco, uno es la tabla de particiones MBR más restrictiva y el otro es la tabla de particiones GPT más nueva y menos restrictiva.
En el MBR, el primer sector es el más importante. Contiene el registro de arranque maestro (MBR) y la tabla de particiones. El registro de arranque maestro ocupa 446 bytes y la tabla de particiones ocupa 64 bytes.
La tabla de particiones tiene solo 64 bytes y solo puede almacenar hasta 4 particiones, que son la partición primaria (Primaria) y la partición extendida (Extendida). Solo hay una partición extendida, que utiliza otros sectores para registrar tablas de particiones adicionales. Por lo tanto, se pueden dividir más particiones mediante particiones extendidas. Estas particiones se denominan particiones lógicas.
Linux también trata las particiones como archivos. El método de denominación de los archivos de partición es: nombre del archivo del disco + número, como /dev/sda1. Tenga en cuenta que la numeración de las particiones lógicas comienza desde 5.
Los diferentes discos tienen diferentes tamaños de sector, por ejemplo, 512 bytes y 4k para los discos más recientes. Para ser compatible con todos los discos, GPT utiliza direcciones de bloque lógico (Dirección de bloque lógico, LBA) en sectores definidos. El tamaño predeterminado de LBA es 512 bytes.
El primer bloque de GPT registra el registro de arranque principal (MBR), seguido de 33 bloques para registrar información de la partición, y los últimos 33 bloques se utilizan para hacer una copia de seguridad de la información de la partición. El primero de estos 33 bloques es el registro de encabezado GPT. Esta parte registra la ubicación y el tamaño de la tabla de particiones y la ubicación de la partición de respaldo. También contiene el código de verificación (CRC32) de la tabla de particiones. utilice este código de verificación para determinar si el GPT es correcto. Si hay un error, puede usar la partición de respaldo para restaurarlo.
GPT no tiene el concepto de particiones extendidas. Todas son particiones primarias. Cada LAB se puede dividir en 4 particiones, por lo que se pueden dividir un total de 4 * 32 = 128 particiones.
MBR no admite discos duros de más de 2,2 TB, mientras que GPT admite hasta 233 TB = 8 ZB.
BIOS (Sistema básico de entrada/salida) es un firmware (software integrado en el hardware). El programa BIOS se almacena en una memoria de solo lectura cuyo contenido no se perderá después de un corte de energía.
BIOS es el primer programa que ejecuta la computadora cuando se enciende. Este programa conoce el disco que se puede iniciar y lee el registro de inicio principal (MBR) del primer sector del disco. programa de administración de arranque., este programa de administración de arranque cargará los archivos principales del sistema operativo.
El administrador de arranque en el Registro de arranque principal (MBR) proporciona las siguientes funciones:
menú, cargar archivos principales y transferirlos a otros programas de administración de arranque. La función de transferencia se puede utilizar para implementar el arranque múltiple. Solo necesita instalar el programa de administración de arranque de otro sistema operativo en el sector de arranque de otra partición. Al iniciar el programa de administración de arranque, puede elegir iniciar el sistema operativo actual o. Inicie el sistema operativo actual a través del menú. Transfiéralo a otros programas de administración de arranque para iniciar otro sistema operativo.
En la siguiente figura, el programa de administración de arranque en el registro de arranque principal (MBR) del primer sector proporciona dos menús: M1, M2 apunta al sistema operativo Windows y M2 apunta a los sectores de arranque de otras particiones, que contienen. Otro programa de administración de arranque proporciona un menú que apunta a Linux.
Para instalar el arranque múltiple, lo mejor es instalar primero Windows y luego Linux. Debido a que el registro de arranque principal (MBR) se sobrescribirá al instalar Windows, Linux puede optar por instalar el programa de administración de arranque en el registro de arranque principal (MBR) o en el sector de arranque de otras particiones, y puede configurar el menú del programa de administración de arranque. .
BIOS no puede leer la tabla de particiones GPT, pero UEFI sí.
Formatear una partición es crear un sistema de archivos en la partición. Por lo general, una partición solo se puede formatear con un sistema de archivos, pero tecnologías como las matrices de discos pueden formatear una partición con múltiples sistemas de archivos.
Los componentes más importantes son los siguientes:
Además, también incluye:
Significa que el bloque donde se encuentra el contenido de un archivo está demasiado disperso.
Los tamaños de bloque admitidos en el sistema de archivos Ext2 son 1K, 2K y 4K. Los diferentes tamaños limitan el tamaño máximo de un solo archivo y del sistema de archivos.
tamaño | 1 KB | 2 KB | 4 KB |
---|---|---|---|
archivo único más grande | 16GB | 256GB | 2TB |
Sistema de archivos máximo 2 TB 8 TB 16 TB Un bloque solo puede ser utilizado por un archivo y la parte no utilizada se desperdicia directamente. Por lo tanto, si necesita almacenar una gran cantidad de archivos pequeños, lo mejor es elegir un bloque más pequeño.
El inodo contiene específicamente la siguiente información:
El inodo tiene las siguientes características:
El inodo registra el número de bloque donde se encuentra el contenido del archivo, pero cada bloque es muy pequeño. Un archivo grande requiere cientos de miles de bloques. Un inodo tiene un tamaño limitado y no puede hacer referencia directa a tantos números de bloque. Por lo tanto, se introdujeron referencias indirectas, dobles indirectas y triples indirectas. Referencia indirecta significa que el bloque de referencia registrado por el inodo registra información de referencia.
Cuando se crea un directorio, se asignan un inodo y al menos un bloque. El contenido registrado por bloque es el número de inodo y el nombre de archivo de todos los archivos en el directorio. Se puede ver que el inodo del archivo en sí no registra el nombre del archivo, pero el nombre del archivo se registra en el directorio. Por lo tanto, operaciones como agregar archivos, eliminar archivos y cambiar nombres de archivos están relacionadas con el permiso w. el directorio.
Si hay un corte de energía repentino, se producirá un error en el sistema de archivos. Por ejemplo, el mapa de bits del bloque solo se modificó antes del corte de energía, pero los datos en realidad no se escribieron en el bloque. El sistema de archivos ext3/ext4 introduce una función de registro, que se puede utilizar para reparar el sistema de archivos.
El montaje utiliza un directorio como punto de entrada al sistema de archivos, es decir, después de ingresar al directorio, se pueden leer los datos del sistema de archivos.
Para mantener la coherencia en la estructura de directorios de diferentes distribuciones de Linux, el Estándar de jerarquía del sistema de archivos (FHS) especifica la estructura de directorios de Linux.
Los tres directorios más básicos son los siguientes:
Hay tres tipos de usuarios: propietarios de archivos, grupos y otros. Diferentes usuarios tienen diferentes permisos de archivos.
Cuando use ls para ver un archivo, se mostrará la información de un archivo, como drwxr-xr-x. 3 root root 17 May 6 00:14 .config
.
Los tipos de archivos comunes y sus significados son:
En el campo de permiso de archivo de 9 dígitos, cada 3 dígitos están en un grupo y hay 3 grupos en total. Cada grupo representa los permisos de archivo para el propietario del archivo, el grupo al que pertenece y otras personas. Los tres dígitos en un conjunto de permisos son permisos r, w y x, lo que indica legible, escribible y ejecutable.
Hay tres tipos de tiempos de archivo:
Enumere la información de un archivo o directorio. La información del directorio son los archivos que contiene.
# # ls [-aAdfFhilnrRSt] file|dir
-a : 列出全部的文件
-d : 仅列出目录本身
-l : 以长数据串行列出,包含文件的属性与权限等等数据
cd [相对路径或绝对路径]
# # mkdir [-mp] 目录名称
-m : 配置目录权限
-p : 递归创建目录
rmdir [-p] 目录名称
-p : 递归删除目录
# # touch [-acdmt] filename
-a : 更新 atime
-c : 更新 ctime,若该文件不存在则不建立新文件
-m : 更新 mtime
-d : 后面可以接更新日期而不使用当前日期,也可以使用 --date= "日期或时间"
-t : 后面可以接更新时间而不使用当前时间,格式为[YYYYMMDDhhmm]
Copie el archivo. Si hay más de dos archivos de origen, el archivo de destino debe ser un directorio.
cp [-adfilprsu] source destination
-a : 相当于 -dr --preserve=all 的意思,至于 dr 请参考下列说明
-d : 若来源文件为链接文件,则复制链接文件属性而非文件本身
-i : 若目标文件已经存在时,在覆盖前会先询问
-p : 连同文件的属性一起复制过去
-r : 递归持续复制
-u : destination 比 source 旧才更新 destination,或 destination 不存在的情况下才复制
--preserve=all : 除了 -p 的权限相关参数外,还加入 SELinux 的属性, links, xattr 等也复制了
# # rm [-fir] 文件或目录
-r : 递归删除
Mover archivos.
# # mv [-fiu] source destination
# # mv [options] source1 source2 source3 .... directory
-f : force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖
Un conjunto de permisos se puede representar mediante números. En este momento, los tres bits de un conjunto de permisos se consideran bits de un número binario. El peso de cada bit de izquierda a derecha es 4, 2 y 1. es decir, el peso digital correspondiente a cada permiso. Los valores son r: 4, w: 2, x: 1.
# # chmod [-R] xyz dirname/filename
Ejemplo: cambie los permisos del archivo .bashrc a -rwxr-xr--.
# # chmod 754 .bashrc
También puede utilizar símbolos para establecer permisos.
# # chmod [ugoa] [+-=] [rwx] dirname/filename
- u: 拥有者
- g: 所属群组
- o: 其他人
- a: 所有人
- +: 添加权限
- -: 移除权限
- =: 设定权限
Ejemplo: agregue permisos de escritura al archivo .bashrc para todos los usuarios.
# # chmod a+w .bashrc
**Los nombres de los archivos no se almacenan en el contenido de un archivo, sino en el directorio en el que se encuentra el archivo. **Por lo tanto, tener el permiso w en el archivo no puede modificar el nombre del archivo. Los directorios almacenan listas de archivos y los permisos de un directorio son los permisos en su lista de archivos.
** Por lo tanto, el permiso r del directorio significa que la lista de archivos se puede leer; el permiso w significa que la lista de archivos se puede modificar, específicamente, agregar, eliminar archivos y modificar el nombre del archivo puede hacer que el permiso x; directorio un directorio de trabajo, y el permiso x puede convertir el directorio en un directorio de trabajo. Es la base de los permisos r y w. Si un directorio no se puede convertir en un directorio de trabajo, no habrá forma de leer la lista de archivos o modificarlo. lista de archivos. **
# # ln [-sf] source_filename dist_filename
-s : 默认是 hard link,加 -s 为 symbolic link
-f : 如果目标文件存在时,先删除目标文件
Cree una entrada en el directorio para registrar el nombre del archivo y el número de inodo. Este inodo es el inodo del archivo fuente. Elimine cualquier entrada y el archivo seguirá existiendo, siempre que el número de referencias no sea cero. Tiene las siguientes restricciones: no puede abarcar sistemas de archivos ni vincular directorios.
# # ln /etc/crontab .
# # ll -i /etc/crontab crontab
34474855 -rw-r--r--. 2 root root 451 Jun 10 2014 crontab
34474855 -rw-r--r--. 2 root root 451 Jun 10 2014 /etc/crontab
El archivo de enlace simbólico guarda la ruta absoluta del archivo fuente y se ubicará en el archivo fuente al leerlo. Puede entenderse como un acceso directo a Windows. Cuando se elimina el archivo fuente, el archivo vinculado no se puede abrir. Se pueden realizar enlaces a directorios.
# # ll -i /etc/crontab /root/crontab2
34474855 -rw-r--r--. 2 root root 451 Jun 10 2014 /etc/crontab
53745909 lrwxrwxrwx. 1 root root 12 Jun 23 22:31 /root/crontab2 - > /etc/crontab
# # cat [-AbEnTv] filename
-n : 打印出行号,连同空白行也会有行号,-b 不会
# # head [-n number] filename
-n : 后面接数字,代表显示几行的意思
Búsqueda de comandos.
# # which [-a] command
-a : 将所有指令列出,而不是只列第一个
Búsqueda de archivos. Es más rápido porque sólo busca en unos pocos directorios específicos. ## dónde está [-bmsu] nombre de directorio/nombre de archivo
Búsqueda de archivos. Puede buscar mediante palabras clave o expresiones regulares. localizar utiliza la base de datos /var/lib/mlocate/ para buscar. Se almacena en la memoria y se actualiza una vez al día, por lo que no puede utilizar la localización para buscar archivos recién creados. Puede utilizar actualizadob para actualizar la base de datos inmediatamente.
# # locate [-ir] keyword
-r: 正则表达式
Búsqueda de archivos. Puede buscar utilizando las propiedades y permisos del archivo.
# # find [basedir] [option]
example: find . -name " shadow* "
(1) Opciones relacionadas con el tiempo
-mtime n : 列出在 n 天前的那一天修改过内容的文件
-mtime +n : 列出在 n 天之前 (不含 n 天本身) 修改过内容的文件
-mtime -n : 列出在 n 天之内 (含 n 天本身) 修改过内容的文件
-newer file : 列出比 file 更新的文件
(2) Opciones relacionadas con propietarios y grupos de archivos
-uid n
-gid n
-user name
-group name
-nouser : 搜索拥有者不存在 /etc/passwd 的文件
-nogroup: 搜索所属群组不存在于 /etc/group 的文件
(3) Opciones relacionadas con permisos y nombres de archivos
-name filename
-size [+-]SIZE: 搜寻比 SIZE 还要大 (+) 或小 (-) 的文件。这个 SIZE 的规格有: c: 代表 byte,k: 代表 1024bytes。所以,要找比 50KB 还要大的文件,就是 -size +50k
-type TYPE
-perm mode : 搜索权限等于 mode 的文件
-perm -mode : 搜索权限包含 mode 的文件
-perm /mode : 搜索权限包含任一 mode 的文件
Hay muchos nombres de archivos comprimidos en Linux, los más comunes son los siguientes:
extensión | Compresor |
---|---|
*.Z | comprimir |
*.cremallera | cremallera |
*.gz | zip |
*.bz2 | bzip2 |
*.xz | xz |
*.alquitrán | Los datos empaquetados por el programa tar no están comprimidos. |
*.tar.gz | Archivos empaquetados por el programa tar y comprimidos por gzip |
*.tar.bz2 | Archivos empaquetados por el programa tar y comprimidos por bzip2 |
*.tar.xz | Archivos empaquetados por el programa tar y comprimidos por xz |
gzip es el comando de compresión más utilizado en Linux y puede descomprimir archivos comprimidos mediante compress, zip y gzip.
Después de la compresión gzip, el archivo fuente ya no existe. Hay 9 niveles de compresión diferentes disponibles. Puede utilizar zcat, zmore y zless para leer el contenido de archivos comprimidos.
$ gzip [-cdtv#] filename
-c : 将压缩的数据输出到屏幕上
-d : 解压缩
-t : 检验压缩文件是否出错
-v : 显示压缩比等信息
-# # : ## 为数字的意思,代表压缩等级,数字越大压缩比越高,默认为 6
Proporciona una relación de compresión más alta que gzip. Ver comandos: bzcat, bzmore, bzless, bzgrep.
$ bzip2 [-cdkzv#] filename
-k : 保留源文件
Proporciona una mejor relación de compresión que bzip2. Se puede ver que las relaciones de compresión de gzip, bzip2 y xz se optimizan constantemente. Sin embargo, cabe señalar que cuanto mayor sea la relación de compresión, mayor será el tiempo de compresión.
Ver comandos: xzcat, xzmore, xzless, xzgrep.
$ xz [-dtlkc#] filename
El comando de compresión solo puede comprimir un archivo, mientras que el paquete puede empaquetar varios archivos en un archivo grande. Tar no solo se puede usar para empaquetar, sino que también puede usar gip, bzip2 y xz para comprimir los archivos empaquetados.
$ tar [-z | -j | -J] [cv] [-f 新建的 tar 文件] filename... ==打包压缩
$ tar [-z | -j | -J] [tv] [-f 已有的 tar 文件] ==查看
$ tar [-z | -j | -J] [xv] [-f 已有的 tar 文件] [-C 目录] ==解压缩
-z : 使用 zip;
-j : 使用 bzip2;
-J : 使用 xz;
-c : 新建打包文件;
-t : 查看打包文件里面有哪些文件;
-x : 解打包或解压缩的功能;
-v : 在压缩/解压缩的过程中,显示正在处理的文件名;
-f : filename: 要处理的文件;
-C 目录 : 在特定目录解压缩。
Uso | Orden |
---|---|
Empacar y comprimir | tar -jcv -f filename.tar.bz2 El nombre del archivo o directorio que se va a comprimir |
Controlar | tar -jtv -f nombre de archivo.tar.bz2 |
Abrir la cremallera | tar -jxv -f nombre de archivo.tar.bz2 -C Directorio para descomprimir |
Puede solicitar que el kernel proporcione servicios a través de Shell, y Bash es un tipo de Shell.
Historial de comandos: registrar los comandos utilizados Finalización de comandos y archivos: Tecla de acceso directo: pestaña Alias de nombres: por ejemplo, lm es el alias de ls -al scripts de shell Comodín: por ejemplo, ls -l /usr/bin/X* enumera /usr/ bin Todos los archivos siguientes que comienzan con X
$
antes de la variable, o puede usar el formulario ${}
;$ x=abc
$ echo $x
$ echo ${x}
Si hay espacios en el contenido de la variable, se deben utilizar comillas dobles o comillas simples.
x="lang is $LANG"
, entonces el valor de x is lang es zh_TW.UTF-8;x='lang is $LANG'
, entonces el valor de x is lang es $LANG
. 指令
o $(指令)
para asignar los resultados de ejecución de las instrucciones a variables. Por ejemplo, versión=$(uname -r), el valor de la versión es 4.15.0-22-generic. Puede utilizar el comando de exportación para convertir variables personalizadas en variables de entorno. Las variables de entorno se pueden utilizar en subprogramas. Los llamados subprogramas son sub-Bash generados por el Bash actual. Las variables de Bash se pueden declarar como matrices y números enteros. Tenga en cuenta que los tipos numéricos no tienen números de punto flotante. Si no se declara, el valor predeterminado es el tipo cadena. Las variables se declaran usando el comando declarar: $ declare [-aixr] variable
-a : 定义为数组类型
-i : 定义为整数类型
-x : 定义为环境变量
-r : 定义为 readonly 类型
Utilice [ ] para indexar una matriz:
$ array[1]=a
$ array[2]=b
$ echo ${array[1]}
$PATH
y ejecútela.La redirección se refiere al uso de archivos en lugar de entrada estándar, salida estándar y salida de error estándar.
1 | código | operador |
---|---|---|
Entrada estándar (stdin) | 0 | < o << |
Salida estándar (stdout) | 1 | > o >> |
Salida de error estándar (stderr) | 2 | 2> o 2>> |
Entre ellos, una flecha indica la redirección de forma sobrescrita, mientras que dos flechas indican la redirección de forma anexada.
La salida estándar innecesaria y la salida de error estándar se pueden redirigir a /dev/null, lo que equivale a tirarlos a la papelera. Si necesita redirigir la salida estándar y la salida de error estándar a un archivo al mismo tiempo, debe convertir una salida en otra salida. Por ejemplo, 2>&1 significa convertir la salida de error estándar en salida estándar.
$ find /home -name .bashrc > list 2>&1
$ nohup latte-dock --replace > /dev/null 2>&1 & # 没有任何输出的后台任务
La canalización consiste en utilizar la salida estándar de un comando como entrada estándar de otro comando. La canalización se puede utilizar cuando los datos deben procesarse en varios pasos antes de que podamos obtener lo que queremos.
Utilice | entre comandos para separar comandos de canalización individuales.
$ ls -al /etc | less
cut divide los datos y extrae la parte deseada. El proceso de segmentación avanza línea por línea.
$ cut
-d : 分隔符
-f : 经过 -d 分隔后,使用 -f n 取出第 n 个区间
-c : 以字符为单位取出区间
$ last
root pts/1 192.168.201.101 Sat Feb 7 12:35 still logged in
root pts/1 192.168.201.101 Fri Feb 6 12:13 - 18:46 (06:33)
root pts/1 192.168.201.254 Thu Feb 5 22:37 - 23:53 (01:16)
$ last | cut -d ' ' -f 1
$ export
declare -x HISTCONTROL= " ignoredups "
declare -x HISTSIZE= " 1000 "
declare -x HOME= " /home/dmtsai "
declare -x HOSTNAME= " study.centos.vbird "
.....(其他省略).....
$ export | cut -c 12-
utilizado para clasificar.
$ sort [-fbMnrtuk] [file or stdin]
-f : 忽略大小写
-b : 忽略最前面的空格
-M : 以月份的名字来排序,例如 JAN,DEC
-n : 使用数字
-r : 反向排序
-u : 相当于 unique,重复的内容只出现一次
-t : 分隔符,默认为 tab
-k : 指定排序的区间
$ cat /etc/passwd | sort -t ' : ' -k 3
root:x:0:0:root:/root:/bin/bash
dmtsai:x:1000:1000:dmtsai:/home/dmtsai:/bin/bash
alex:x:1001:1002::/home/alex:/bin/bash
arod:x:1002:1003::/home/arod:/bin/bash
Solo puede tomar un dato duplicado.
$ uniq [-ic]
-i : 忽略大小写
-c : 进行计数
$ last | cut -d ' ' -f 1 | sort | uniq -c
1
6 (unknown
47 dmtsai
4 reboot
7 root
1 wtmp
La redirección de salida redirigirá el contenido de salida a un archivo, y no solo puede completar esta función, sino también preservar la salida en la pantalla. Es decir, utilizando el comando tee, se envía una salida tanto al archivo como a la pantalla.
$ tee [-a] file
Se utiliza para eliminar caracteres en una línea o reemplazar caracteres.
$ tr [-ds] SET1 ...
-d : 删除行中 SET1 这个字符串
$ last | tr ' [a-z] ' ' [A-Z] '
Convierte caracteres de tabulación en caracteres de espacio.
$ col [-xb]
-x : 将 tab 键转换成对等的空格键
Convierta pestañas a una cierta cantidad de espacios, el valor predeterminado es 8.
$ expand [-t] file
-t : tab 转为空格的数量
Fusionar filas con los mismos datos.
$ join [-ti12] file1 file2
-t : 分隔符,默认为空格
-i : 忽略大小写的差异
-1 : 第一个文件所用的比较字段
-2 : 第二个文件所用的比较字段
Pega las dos líneas directamente juntas.
$ paste [-d] file1 file2
-d : 分隔符,默认为 tab
split divide un archivo en varios archivos.
$ split [-bl] file PREFIX
-b : 以大小来进行分区,可加单位,例如 b, k, m 等
-l : 以行数来进行分区。
- PREFIX : 分区文件的前导名称
g/re/p (busque globalmente una expresión regular e imprima), use expresiones regulares para buscar e imprimir globalmente.
$ grep [-acinv] [--color = auto] 搜寻字符串 filename
-c : 统计个数
-i : 忽略大小写
-n : 输出行号
-v : 反向选择,也就是显示出没有 搜寻字符串 内容的那一行
--color=auto : 找到的关键字加颜色显示
$ grep -n ' the ' regular_express.txt
8:I can ' t finish the test.
12:the symbol ' * ' is represented as start.
15:You are the best is mean you are the no. 1.
16:The world Happy is the same with "glad".
18:google is the best tools for search keyword
Debido a que { y } tienen un significado especial en el shell, se deben utilizar caracteres de escape como escape.
$ grep -n ' go{2,5}g ' regular_express.txt
Para salida formateada. No pertenece al comando de canalización. Debe utilizar el formulario $() al transmitir datos a printf.
$ printf ' %10s %5i %5i %5i %8.2f n ' $( cat printf.txt )
DmTsai 80 60 92 77.33
VBird 75 55 80 70.00
Ken 60 90 70 73.33
Fue creado por Alfred Aho, Peter Weinberger y Brian Kernighan. El nombre awk son las iniciales de los tres fundadores.
awk procesa una línea a la vez. La unidad más pequeña de procesamiento es un campo. El método de denominación de cada campo es.