Cours correspondant https://www.bilibili.com/video/BV18p4y167Md
Cours par correspondance sur le système d'exploitation Cours pratiques sur le système d'exploitation 45
Table des matières CSAPP Une compréhension approfondie des systèmes informatiques vient de la classe ouverte du patron de Microsoft
yangminz
https://www.bilibili.com/video/BV17K4y1N7Q2 (en cours de mise à jour)
Table des matières Série de programmation orientée objet C++ de la série de programmation orientée objet CPP de Maître Hou Jie (terminée)
Une introduction à l'utilisation de base et aux options des commandes.
Man est l'abréviation de manuel, qui affiche les informations spécifiques de l'instruction.
Lorsque la date man est exécutée, DATE(1) apparaît. Le nombre qu'il contient représente le type d'instruction et leurs types sont les suivants :
nom de code | taper |
---|---|
1 | Instructions ou fichiers exécutables que les utilisateurs peuvent utiliser dans l'environnement shell |
5 | Fichier de configuration |
8 | Commandes d'administration disponibles pour les administrateurs système |
info est similaire à man, mais info divise le document en pages et chaque page peut être sautée.
/usr/share/doc stocke un ensemble complet de documentation pour le logiciel.
Avant de vous arrêter, vous devez utiliser la commande who pour vérifier s'il y a d'autres utilisateurs en ligne.
Afin d'accélérer la lecture et l'écriture des fichiers disque, les données des fichiers situées dans la mémoire ne seront pas immédiatement synchronisées avec le disque, une opération de synchronisation est donc requise avant l'arrêt.
# # shutdown [-krhc] 时间 [信息] |
-k : 不会关机,只是发送警告信息,通知所有在线的用户
-r : 将系统的服务停掉后就重新启动
-h : 将系统的服务停掉后就立即关机
-c : 取消已经在进行的 shutdown 指令内容
Le chemin d'accès au fichier exécutable est déclaré dans PATH, séparé par :.
/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/dmtsai/.local/bin:/home/dmtsai/bin
sudo permet aux utilisateurs ordinaires d'utiliser des commandes exécutables root, mais seuls les utilisateurs ajoutés dans le fichier de configuration /etc/sudoers peuvent utiliser cette commande.
RPM et DPKG sont les deux types d'outils de gestion de progiciels les plus courants :
Une distribution Linux est une version intégrée du noyau Linux et de divers logiciels d'application. Outils de gestion de paquets basés sur les distributions commerciales Distributions communautaires RPM Red Hat Fedora/CentOS DPKG Ubuntu Debian
Commande | effet |
---|---|
:w | écrire sur le disque |
:w! | Force l'écriture sur le disque lorsque le fichier est en lecture seule. La possibilité d'écrire dépend des autorisations de l'utilisateur sur le fichier. |
:q | partir |
:q! | Obligé de partir sans économiser |
:wq | Écrivez sur le disque et quittez |
:wq! | Forcer l'écriture sur le disque puis quitter |
Le projet GNU, traduit par Véritable Projet, vise à créer un système d'exploitation entièrement libre appelé GNU, et son logiciel de contenu est entièrement publié sous GPL. Le nom complet de GPL est GNU General Public License, qui inclut les contenus suivants : liberté d'exécuter ce programme à quelque fin que ce soit ; liberté de reproduire ce programme et de le publier publiquement. ¶Choisissez une licence open source (ouvre une nouvelle fenêtre) Comment choisir une licence open source (ouvre une nouvelle fenêtre)
IDE (ATA) signifie Advanced Technology Attachment. La vitesse d'interface maximale est de 133 Mo/s. Parce que le câble du port parallèle a de mauvaises performances anti-interférences et que le câble prend beaucoup de place, ce qui n'est pas propice à la dissipation thermique interne de. l'ordinateur, il a été progressivement remplacé par SATA.
Le nom complet de SATA est Serial ATA, qui est une interface ATA qui utilise un port série. Elle a une forte anti-interférence, a des exigences beaucoup plus faibles en termes de longueur de câble de données que ATA et prend en charge les fonctions remplaçables à chaud et autres. La vitesse d'interface du SATA-II est de 300 Mo/s, tandis que la nouvelle norme SATA-III peut atteindre une vitesse de transmission de 600 Mo/s. Les câbles de données SATA sont également beaucoup plus fins que les câbles ATA, ce qui favorise la circulation de l'air dans le châssis et facilite l'organisation des câbles.
Le nom complet de SCSI est Small Computer System Interface. Il a connu de nombreuses générations de développement, du premier SCSI-II aux actuels Ultra320 SCSI et Fibre-Channel, avec différents types d'interface. Les disques durs SCSI sont largement utilisés dans les ordinateurs personnels et les serveurs au niveau des postes de travail. Par conséquent, ils utilisent des technologies plus avancées, telles qu'une vitesse de disque élevée de 15 000 tr/min, et utilisent moins le processeur pendant la transmission. Cependant, le prix unitaire est également plus élevé. Disques durs ATA et SATA de même capacité Plus chers.
Chaque élément matériel sous Linux est traité comme un fichier, y compris les disques. Les disques sont nommés en fonction du type d'interface de disque. Les noms courants des fichiers de disque sont les suivants :
La détermination du numéro de série après le nom du fichier est liée à l'ordre dans lequel le système détecte les disques et n'a rien à voir avec la position de l'emplacement dans lequel les disques sont insérés.
Il existe deux formats principaux de tables de partition de disque, l'un est la table de partition MBR la plus restrictive et l'autre est la table de partition GPT la plus récente et la moins restrictive.
Dans le MBR, le premier secteur est le plus important. Il contient l'enregistrement de démarrage principal (MBR) et la table de partition. L'enregistrement de démarrage principal occupe 446 octets et la table de partition occupe 64 octets.
La table de partition ne fait que 64 octets et ne peut stocker que jusqu'à 4 partitions, qui sont la partition principale (Primary) et la partition étendue (Extended). Il n'existe qu'une seule partition étendue, qui utilise d'autres secteurs pour enregistrer des tables de partition supplémentaires. Par conséquent, plusieurs partitions peuvent être divisées via des partitions étendues. Ces partitions sont appelées partitions logiques.
Linux traite également les partitions comme des fichiers. La méthode de dénomination des fichiers de partition est la suivante : nom du fichier disque + numéro, tel que /dev/sda1. Notez que la numérotation des partitions logiques commence à 5.
Différents disques ont des tailles de secteur différentes, par exemple 512 octets et 4 Ko pour les disques les plus récents. Afin d'être compatible avec tous les disques, GPT utilise des adresses de blocs logiques (Logical Block Address, LBA) sur des secteurs définis. La taille par défaut de LBA est de 512 octets.
Le premier bloc de GPT enregistre l'enregistrement de démarrage principal (MBR), suivi de 33 blocs pour enregistrer les informations de partition, et les 33 derniers blocs sont utilisés pour sauvegarder les informations de partition. Le premier de ces 33 blocs est l'enregistrement d'en-tête GPT. Cette partie enregistre l'emplacement et la taille de la table de partition elle-même ainsi que l'emplacement de la partition de sauvegarde. Elle contient également le code de vérification (CRC32) de la table de partition. utilisez ce code de vérification pour déterminer si le GPT est correct. S'il y a une erreur, vous pouvez utiliser la partition de sauvegarde pour la restaurer.
GPT n'a pas le concept de partitions étendues. Ce sont toutes des partitions principales. Chaque LAB peut être divisé en 4 partitions, donc un total de 4 * 32 = 128 partitions peuvent être divisées.
MBR ne prend pas en charge les disques durs supérieurs à 2,2 To, tandis que GPT prend en charge jusqu'à 233 To = 8 ZB.
Le BIOS (Basic Input/Output System) est un firmware (logiciel intégré au matériel). Le programme BIOS est stocké dans une mémoire morte dont le contenu ne sera pas perdu après une panne de courant.
Le BIOS est le premier programme exécuté par l'ordinateur lorsqu'il est allumé. Ce programme connaît le disque qui peut être démarré et lit l'enregistrement de démarrage principal (MBR) du premier secteur du disque. L'enregistrement de démarrage principal (MBR) effectue le démarrage. programme de gestion de démarrage, ce programme de gestion de démarrage chargera les fichiers de base du système d'exploitation.
Le gestionnaire de démarrage du Main Boot Record (MBR) fournit les fonctions suivantes :
menu, chargez les fichiers de base et transférez-les vers d'autres programmes de gestion de démarrage. La fonction de transfert peut être utilisée pour implémenter le multi-boot. Il vous suffit d'installer le programme de gestion de démarrage d'un autre système d'exploitation sur le secteur de démarrage d'une autre partition. Lors du démarrage du programme de gestion de démarrage, vous pouvez choisir de démarrer le système d'exploitation actuel ou. démarrez le système d’exploitation actuel via le menu. Transférez-le vers d’autres programmes de gestion de démarrage pour démarrer un autre système d’exploitation.
Dans la figure ci-dessous, le programme de gestion de démarrage dans l'enregistrement de démarrage principal (MBR) du premier secteur propose deux menus : M1, M2 pointe vers le système d'exploitation Windows et M2 pointe vers les secteurs de démarrage d'autres partitions, qui contiennent. Un autre programme de gestion de démarrage fournit un menu pointant vers Linux.
Pour installer le multi-boot, il est préférable d'installer d'abord Windows, puis Linux. Étant donné que l'enregistrement de démarrage principal (MBR) sera écrasé lors de l'installation de Windows, Linux peut choisir d'installer le programme de gestion de démarrage dans l'enregistrement de démarrage principal (MBR) ou dans le secteur de démarrage d'autres partitions, et peut définir le menu du programme de gestion de démarrage. .
Le BIOS ne peut pas lire la table de partition GPT, mais l'UEFI le peut.
Formater une partition consiste à créer un système de fichiers sur la partition. Une partition ne peut généralement être formatée qu'avec un seul système de fichiers, mais des technologies telles que les baies de disques peuvent formater une partition avec plusieurs systèmes de fichiers.
Les composants les plus importants sont les suivants :
De plus, il comprend également :
Cela signifie que le bloc où se trouve le contenu d’un fichier est trop dispersé.
Les tailles de blocs prises en charge dans le système de fichiers Ext2 sont 1K, 2K et 4K. Différentes tailles limitent la taille maximale d'un seul fichier et du système de fichiers.
taille | 1 Ko | 2 Ko | 4 Ko |
---|---|---|---|
le plus gros fichier unique | 16 GB | 256 Go | 2 To |
Système de fichiers maximum 2 To 8 To 16 To Un bloc ne peut être utilisé que par un seul fichier, et la partie inutilisée est directement gaspillée. Par conséquent, si vous devez stocker un grand nombre de petits fichiers, il est préférable de choisir un bloc plus petit.
L'inode contient spécifiquement les informations suivantes :
l'inode a les caractéristiques suivantes :
L'inode enregistre le numéro de bloc où se trouve le contenu du fichier, mais chaque bloc est très petit. Un fichier volumineux nécessite des centaines de milliers de blocs. Un inode a une taille limitée et ne peut pas référencer directement autant de numéros de bloc. Par conséquent, des références indirectes, doubles indirectes et triples indirectes ont été introduites. La référence indirecte signifie que le bloc de référence enregistré par l'inode enregistre les informations de référence.
Lorsqu'un répertoire est créé, un inode et au moins un bloc sont alloués. Le contenu enregistré par bloc est le numéro d'inode et le nom de fichier de tous les fichiers du répertoire. On peut voir que l'inode du fichier lui-même n'enregistre pas le nom du fichier, mais le nom du fichier est enregistré dans le répertoire. Par conséquent, les opérations telles que l'ajout de fichiers, la suppression de fichiers et la modification des noms de fichiers sont liées à l'autorisation w de. le répertoire.
En cas de panne de courant soudaine, une erreur se produira dans le système de fichiers. Par exemple, le bitmap du bloc n'a été modifié qu'avant la panne de courant, mais les données n'ont pas été réellement écrites dans le bloc. Le système de fichiers ext3/ext4 introduit une fonction de journalisation, qui peut être utilisée pour réparer le système de fichiers.
Le montage utilise un répertoire comme point d'entrée au système de fichiers, c'est-à-dire qu'après avoir entré le répertoire, les données du système de fichiers peuvent être lues.
Afin de maintenir la cohérence dans la structure de répertoires des différentes distributions Linux, le Filesystem Hierarchy Standard (FHS) spécifie la structure de répertoires de Linux.
Les trois répertoires les plus basiques sont les suivants :
Il existe trois types d'utilisateurs : les propriétaires de fichiers, les groupes et autres. Différents utilisateurs ont des autorisations de fichiers différentes.
Lorsque vous utilisez ls pour afficher un fichier, les informations d'un fichier seront affichées, telles que drwxr-xr-x. 3 root root 17 May 6 00:14 .config
.
Les types de fichiers courants et leurs significations sont :
Dans le champ d'autorisation de fichier à 9 chiffres, tous les 3 chiffres appartiennent à un groupe, et il y a 3 groupes au total. Chaque groupe représente les autorisations de fichier pour le propriétaire du fichier, le groupe auquel il appartient et d'autres personnes. Les trois chiffres d'un ensemble d'autorisations sont les autorisations r, w et x, indiquant les autorisations en lecture, en écriture et en exécution.
Il existe trois types de temps de fichier :
Répertoriez les informations d'un fichier ou d'un répertoire. Les informations du répertoire correspondent aux fichiers qu'il contient.
# # 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]
Copiez le fichier. S'il existe plus de deux fichiers source, le fichier de destination doit être un répertoire.
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 : 递归删除
Déplacez les fichiers.
# # mv [-fiu] source destination
# # mv [options] source1 source2 source3 .... directory
-f : force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖
Un ensemble d'autorisations peut être représenté par des nombres. À ce stade, les trois bits d'un ensemble d'autorisations sont considérés comme les bits d'un nombre binaire. Le poids de chaque bit de gauche à droite est 4, 2 et 1, soit. c'est-à-dire le poids numérique correspondant à chaque autorisation. Les valeurs sont r : 4, w : 2, x : 1.
# # chmod [-R] xyz dirname/filename
Exemple : modifiez les autorisations du fichier .bashrc en -rwxr-xr--.
# # chmod 754 .bashrc
Vous pouvez également utiliser des symboles pour définir des autorisations.
# # chmod [ugoa] [+-=] [rwx] dirname/filename
- u: 拥有者
- g: 所属群组
- o: 其他人
- a: 所有人
- +: 添加权限
- -: 移除权限
- =: 设定权限
Exemple : ajoutez des autorisations d'écriture au fichier .bashrc pour tous les utilisateurs.
# # chmod a+w .bashrc
**Les noms de fichiers ne sont pas stockés dans le contenu d'un fichier, mais dans le répertoire dans lequel se trouve le fichier. **Par conséquent, avoir l'autorisation w sur le fichier ne peut pas modifier le nom du fichier. Les répertoires stockent des listes de fichiers et les autorisations d'un répertoire sont les autorisations sur sa liste de fichiers.
**Par conséquent, l'autorisation r du répertoire signifie que la liste des fichiers peut être lue ; l'autorisation w signifie que la liste des fichiers peut être modifiée, en particulier l'ajout, la suppression de fichiers et la modification du nom du fichier ; répertoire un répertoire de travail, et l'autorisation x peut faire du répertoire un répertoire de travail. C'est la base des autorisations r et w. Si un répertoire ne peut pas devenir un répertoire de travail, il n'y aura aucun moyen de lire la liste des fichiers ou de modifier le répertoire. liste de fichiers. **
# # ln [-sf] source_filename dist_filename
-s : 默认是 hard link,加 -s 为 symbolic link
-f : 如果目标文件存在时,先删除目标文件
Créez une entrée dans le répertoire pour enregistrer le nom du fichier et le numéro d'inode. Cet inode est l'inode du fichier source. Supprimez toute entrée et le fichier existera toujours, tant que le nombre de références n'est pas nul. Il a les restrictions suivantes : il ne peut pas s'étendre sur des systèmes de fichiers et ne peut pas lier des répertoires.
# # 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
Le fichier de lien symbolique enregistre le chemin absolu du fichier source et sera localisé dans le fichier source lors de la lecture. Il peut être compris comme un raccourci vers Windows. Lorsque le fichier source est supprimé, le fichier lié ne peut pas être ouvert. Des liens peuvent être créés vers des répertoires.
# # 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 : 后面接数字,代表显示几行的意思
Recherche de commandes.
# # which [-a] command
-a : 将所有指令列出,而不是只列第一个
Recherche de fichiers. C'est plus rapide car il ne recherche que quelques répertoires spécifiques. ## où est [-bmsu] nom de répertoire/nom de fichier
Recherche de fichiers. Vous pouvez effectuer une recherche à l'aide de mots-clés ou d'expressions régulières. Locate utilise la base de données /var/lib/mlocate/ pour effectuer la recherche. Elle est stockée en mémoire et mise à jour une fois par jour, vous ne pouvez donc pas utiliser Locate pour rechercher des fichiers nouvellement créés. Vous pouvez utiliser updateb pour mettre à jour la base de données immédiatement.
# # locate [-ir] keyword
-r: 正则表达式
Recherche de fichiers. Vous pouvez effectuer une recherche en utilisant les propriétés et les autorisations du fichier.
# # find [basedir] [option]
example: find . -name " shadow* "
(1) Options liées au temps
-mtime n : 列出在 n 天前的那一天修改过内容的文件
-mtime +n : 列出在 n 天之前 (不含 n 天本身) 修改过内容的文件
-mtime -n : 列出在 n 天之内 (含 n 天本身) 修改过内容的文件
-newer file : 列出比 file 更新的文件
(2) Options liées aux propriétaires de fichiers et aux groupes
-uid n
-gid n
-user name
-group name
-nouser : 搜索拥有者不存在 /etc/passwd 的文件
-nogroup: 搜索所属群组不存在于 /etc/group 的文件
(3) Options liées aux autorisations et aux noms de fichiers
-name filename
-size [+-]SIZE: 搜寻比 SIZE 还要大 (+) 或小 (-) 的文件。这个 SIZE 的规格有: c: 代表 byte,k: 代表 1024bytes。所以,要找比 50KB 还要大的文件,就是 -size +50k
-type TYPE
-perm mode : 搜索权限等于 mode 的文件
-perm -mode : 搜索权限包含 mode 的文件
-perm /mode : 搜索权限包含任一 mode 的文件
Il existe de nombreux noms de fichiers compressés sous Linux, les plus courants sont les suivants :
extension | Compresseur |
---|---|
*.Z | compresse |
*.fermeture éclair | fermeture éclair |
*.gz | gzip |
*.bz2 | bzip2 |
*.xz | xz |
*.goudron | Les données empaquetées par le programme tar ne sont pas compressées. |
*.tar.gz | Fichiers packagés par le programme tar et compressés par gzip |
*.tar.bz2 | Fichiers packagés par le programme tar et compressés par bzip2 |
*.tar.xz | Fichiers packagés par le programme tar et compressés par xz |
gzip est la commande de compression la plus utilisée sous Linux et peut décompresser des fichiers compressés par compress, zip et gzip.
Après compression gzip, le fichier source n'existe plus. Il existe 9 niveaux de compression différents disponibles. Vous pouvez utiliser zcat, zmore et zless pour lire le contenu des fichiers compressés.
$ gzip [-cdtv#] filename
-c : 将压缩的数据输出到屏幕上
-d : 解压缩
-t : 检验压缩文件是否出错
-v : 显示压缩比等信息
-# # : ## 为数字的意思,代表压缩等级,数字越大压缩比越高,默认为 6
Fournit un taux de compression plus élevé que gzip. Afficher les commandes : bzcat, bzmore, bzless, bzgrep.
$ bzip2 [-cdkzv#] filename
-k : 保留源文件
Fournit un meilleur taux de compression que bzip2. On constate que les taux de compression de gzip, bzip2 et xz sont constamment optimisés. Cependant, il convient de noter que plus le taux de compression est élevé, plus le temps de compression sera long.
Afficher les commandes : xzcat, xzmore, xzless, xzgrep.
$ xz [-dtlkc#] filename
La commande de compression ne peut compresser qu'un seul fichier, tandis que le pack peut regrouper plusieurs fichiers dans un seul gros fichier. Tar peut non seulement être utilisé pour l'empaquetage, mais vous pouvez également utiliser gip, bzip2 et xz pour compresser les fichiers empaquetés.
$ 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 目录 : 在特定目录解压缩。
Usage | Commande |
---|---|
Emballer et compresser | tar -jcv -f filename.tar.bz2 Le nom du fichier ou du répertoire à compresser |
Vérifier | tar -jtv -f nom de fichier.tar.bz2 |
Décompresser | tar -jxv -f filename.tar.bz2 -C Répertoire à décompresser |
Vous pouvez demander au noyau de fournir des services via Shell, et Bash est un type de Shell.
Historique des commandes : enregistre les commandes utilisées Complétion des commandes et des fichiers : Touche de raccourci : onglet Alias de nom : Par exemple, lm est l'alias des scripts shell ls -al Caractère générique : Par exemple, ls -l /usr/bin/X* listes /usr/ bin Tous les fichiers ci-dessous commençant par X
$
avant la variable, ou vous pouvez utiliser le formulaire ${}
;$ x=abc
$ echo $x
$ echo ${x}
S'il y a des espaces dans le contenu de la variable, des guillemets doubles ou simples doivent être utilisés.
x="lang is $LANG"
, alors la valeur de x is lang est zh_TW.UTF-8 ;x='lang is $LANG'
, alors la valeur de x is lang est $LANG
. 指令
ou $(指令)
pour affecter les résultats d'exécution des instructions à des variables. Par exemple, version=$(uname -r), la valeur de version est 4.15.0-22-generic. Vous pouvez utiliser la commande d'exportation pour convertir des variables personnalisées en variables d'environnement. Les variables d'environnement peuvent être utilisées dans les sous-programmes. Les sous-programmes sont des sous-Bash générés par le Bash actuel. Les variables Bash peuvent être déclarées sous forme de tableaux et de nombres entiers. Notez que les types numériques n'ont pas de nombres à virgule flottante. S'il n'est pas déclaré, la valeur par défaut est le type chaîne. Les variables sont déclarées à l'aide de la commande declare : $ declare [-aixr] variable
-a : 定义为数组类型
-i : 定义为整数类型
-x : 定义为环境变量
-r : 定义为 readonly 类型
Utilisez [ ] pour indexer un tableau :
$ array[1]=a
$ array[2]=b
$ echo ${array[1]}
$PATH
et exécutez-la.La redirection fait référence à l'utilisation de fichiers au lieu d'une entrée standard, d'une sortie standard et d'une sortie d'erreur standard.
1 | code | opérateur |
---|---|---|
Entrée standard (stdin) | 0 | < ou << |
Sortie standard (stdout) | 1 | > ou >> |
Sortie d'erreur standard (stderr) | 2 | 2> ou 2>> |
Parmi eux, une flèche indique une redirection par écrasement, tandis que deux flèches indiquent une redirection par ajout.
La sortie standard inutile et la sortie d'erreur standard peuvent être redirigées vers /dev/null, ce qui équivaut à les jeter à la poubelle. Si vous devez rediriger simultanément la sortie standard et la sortie d'erreur standard vers un fichier, vous devez convertir une sortie en une autre sortie. Par exemple, 2>&1 signifie convertir la sortie d'erreur standard en sortie standard.
$ find /home -name .bashrc > list 2>&1
$ nohup latte-dock --replace > /dev/null 2>&1 & # 没有任何输出的后台任务
Le pipeline consiste à utiliser la sortie standard d'une commande comme entrée standard d'une autre commande. Le pipeline peut être utilisé lorsque les données doivent être traitées en plusieurs étapes avant de pouvoir obtenir ce que nous voulons.
Utilisez | entre les commandes pour séparer les commandes de pipeline individuelles.
$ ls -al /etc | less
cut divise les données et extrait la partie souhaitée. Le processus de segmentation se déroule ligne par ligne.
$ 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-
utilisé pour le tri.
$ 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
Vous ne pouvez prendre qu'une seule donnée en double.
$ uniq [-ic]
-i : 忽略大小写
-c : 进行计数
$ last | cut -d ' ' -f 1 | sort | uniq -c
1
6 (unknown
47 dmtsai
4 reboot
7 root
1 wtmp
La redirection de sortie redirigera le contenu de sortie vers un fichier, et tee peut non seulement compléter cette fonction, mais également conserver la sortie à l'écran. Autrement dit, à l'aide de la commande tee, une sortie est envoyée à la fois au fichier et à l'écran.
$ tee [-a] file
Utilisé pour supprimer des caractères dans une ligne ou remplacer des caractères.
$ tr [-ds] SET1 ...
-d : 删除行中 SET1 这个字符串
$ last | tr ' [a-z] ' ' [A-Z] '
Convertissez les caractères de tabulation en caractères d'espace.
$ col [-xb]
-x : 将 tab 键转换成对等的空格键
Convertissez les tabulations en un certain nombre d'espaces, la valeur par défaut est 8.
$ expand [-t] file
-t : tab 转为空格的数量
Fusionnez les lignes avec les mêmes données.
$ join [-ti12] file1 file2
-t : 分隔符,默认为空格
-i : 忽略大小写的差异
-1 : 第一个文件所用的比较字段
-2 : 第二个文件所用的比较字段
Collez les deux lignes directement ensemble.
$ paste [-d] file1 file2
-d : 分隔符,默认为 tab
split divise un fichier en plusieurs fichiers.
$ split [-bl] file PREFIX
-b : 以大小来进行分区,可加单位,例如 b, k, m 等
-l : 以行数来进行分区。
- PREFIX : 分区文件的前导名称
g/re/p (rechercher globalement une expression régulière et imprimer), utilisez des expressions régulières pour rechercher et imprimer globalement.
$ 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
Étant donné que { et } ont une signification particulière dans le shell, ils doivent être échappés à l'aide de caractères d'échappement.
$ grep -n ' go{2,5}g ' regular_express.txt
Pour une sortie formatée. Il n'appartient pas à la commande pipeline. Vous devez utiliser le formulaire $() lors de la transmission de données à 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
Il a été créé par Alfred Aho, Peter Weinberger et Brian Kernighan. Le nom awk est les initiales des trois fondateurs.
awk traite une ligne à la fois. La plus petite unité de traitement est un champ. La méthode de dénomination de chaque champ est.