Entsprechender Kurs https://www.bilibili.com/video/BV18p4y167Md
Betriebssystem-Fernkurs Betriebssystem-Praxisvorlesungen 45
Inhaltsverzeichnis CSAPP Ein tiefgreifendes Verständnis von Computersystemen stammt aus der offenen Klasse von Microsoft-Chef
yangminz
https://www.bilibili.com/video/BV17K4y1N7Q2 (aktualisiert)
Inhaltsverzeichnis Serie zur objektorientierten C++-Programmierung aus der CPP-Reihe zur objektorientierten Programmierung von Meister Hou Jie (abgeschlossen)
Eine Einführung in die grundlegende Verwendung und Optionen von Befehlen.
Man ist die Abkürzung für „Manual“, die die spezifischen Informationen der Anleitung anzeigt.
Wenn man date ausführt, wird DATE(1) angezeigt. Die darin enthaltene Zahl stellt den Typ der Anweisung dar und ihre Typen sind wie folgt.
Codename | Typ |
---|---|
1 | Anweisungen oder ausführbare Dateien, die Benutzer in der Shell-Umgebung ausführen können |
5 | Konfigurationsdatei |
8 | Für Systemadministratoren verfügbare Verwaltungsbefehle |
info ähnelt man, aber info unterteilt das Dokument in Seiten und jede Seite kann übersprungen werden.
/usr/share/doc speichert eine vollständige Dokumentation der Software.
Vor dem Herunterfahren müssen Sie mit dem Befehl „who“ prüfen, ob andere Benutzer online sind.
Um das Lesen und Schreiben von Festplattendateien zu beschleunigen, werden die im Speicher befindlichen Dateidaten nicht sofort mit der Festplatte synchronisiert. Daher ist vor dem Herunterfahren ein Synchronisierungsvorgang erforderlich.
# # shutdown [-krhc] 时间 [信息] |
-k : 不会关机,只是发送警告信息,通知所有在线的用户
-r : 将系统的服务停掉后就重新启动
-h : 将系统的服务停掉后就立即关机
-c : 取消已经在进行的 shutdown 指令内容
Der Pfad zur ausführbaren Datei wird in PATH deklariert, getrennt durch :.
/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/dmtsai/.local/bin:/home/dmtsai/bin
Mit sudo können normale Benutzer ausführbare Root-Befehle verwenden, aber nur Benutzer, die in der Konfigurationsdatei /etc/sudoers hinzugefügt wurden, können diesen Befehl verwenden.
RPM und DPKG sind die beiden häufigsten Arten von Tools zur Softwarepaketverwaltung:
Eine Linux-Distribution ist eine integrierte Version des Linux-Kernels und verschiedener Anwendungssoftware. Paketverwaltungstools basierend auf kommerziellen Distributionen Community-Distributionen RPM Red Hat Fedora/CentOS DPKG Ubuntu Debian
Befehl | Wirkung |
---|---|
:w | auf die Festplatte schreiben |
:w! | Erzwingt das Schreiben auf die Festplatte, wenn die Datei schreibgeschützt ist. Ob es geschrieben werden kann, hängt von den Berechtigungen des Benutzers für die Datei ab. |
:Q | verlassen |
:Q! | Gezwungen zu gehen, ohne zu sparen |
:wq | Auf die Festplatte schreiben und gehen |
:wq! | Erzwingen Sie das Schreiben auf die Festplatte und beenden Sie es dann |
Das GNU-Projekt, übersetzt „Echtes Projekt“, zielt darauf ab, ein völlig freies Betriebssystem namens GNU zu schaffen, dessen Inhaltssoftware vollständig unter der GPL veröffentlicht wird. Der vollständige Name der GPL ist GNU General Public License, die die folgenden Inhalte umfasst: Freiheit, dieses Programm für jeden Zweck auszuführen; Freiheit, dieses Programm zu verbessern und Verbesserungen öffentlich zu veröffentlichen. ¶Wählen Sie eine Open-Source-Lizenz (öffnet neues Fenster) Wie wähle ich eine Open-Source-Lizenz aus (öffnet neues Fenster)
IDE (ATA) steht für Advanced Technology Attachment. Die maximale Schnittstellengeschwindigkeit beträgt 133 MB/s, da die Entstörungsleistung des Parallelportkabels zu schlecht ist und das Kabel viel Platz einnimmt, was der internen Wärme nicht förderlich ist Aufgrund der Verlustleistung des Computers wurde dieser nach und nach durch SATA ersetzt.
Der vollständige Name von SATA ist Serial ATA. Dabei handelt es sich um eine ATA-Schnittstelle, die einen seriellen Port verwendet. Sie verfügt über eine starke Entstörung, stellt viel geringere Anforderungen an die Länge des Datenkabels als ATA und unterstützt Hot-Swap-Funktionen. Die Schnittstellengeschwindigkeit von SATA-II beträgt 300 MiB/s, während der neue SATA-III-Standard eine Übertragungsgeschwindigkeit von 600 MiB/s erreichen kann. SATA-Datenkabel sind außerdem viel dünner als ATA, was sich positiv auf die Luftzirkulation im Gehäuse auswirkt und die Kabelorganisation erleichtert.
Der vollständige Name von SCSI ist Small Computer System Interface. Es hat viele Generationen der Entwicklung durchlaufen, vom frühen SCSI-II bis zum aktuellen Ultra320 SCSI und Fiber-Channel, mit verschiedenen Schnittstellentypen. SCSI-Festplatten werden häufig in Personalcomputern und Servern auf Workstation-Ebene verwendet. Daher verwenden sie fortschrittlichere Technologien, wie z. B. eine hohe Festplattengeschwindigkeit von 15.000 U/min, und weisen eine geringere CPU-Auslastung während der Übertragung auf als ATA- und SATA-Festplatten gleicher Kapazität.
Jede Hardware in Linux wird als Datei behandelt, einschließlich Festplatten. Festplatten werden entsprechend dem Festplattenschnittstellentyp benannt:
Die Bestimmung der Seriennummer nach dem Dateinamen hängt von der Reihenfolge ab, in der das System die Datenträger erkennt, und hat nichts mit der Steckplatzposition zu tun, in der die Datenträger eingelegt werden.
Es gibt zwei Hauptformate von Festplattenpartitionstabellen: eines ist die restriktivere MBR-Partitionstabelle und das andere ist die neuere und weniger restriktive GPT-Partitionstabelle.
Im MBR ist der erste Sektor der wichtigste. Er enthält den Master Boot Record (MBR) und die Partitionstabelle. Der Master Boot Record belegt 446 Bytes und die Partitionstabelle belegt 64 Bytes.
Die Partitionstabelle ist nur 64 Byte groß und kann nur bis zu 4 Partitionen speichern, nämlich die primäre Partition (Primary) und die erweiterte Partition (Extended). Es gibt nur eine erweiterte Partition, die andere Sektoren zum Aufzeichnen zusätzlicher Partitionstabellen verwendet. Daher können mehr Partitionen durch erweiterte Partitionen unterteilt werden.
Linux behandelt Partitionen auch als Dateien. Die Benennungsmethode für Partitionsdateien lautet: Name der Festplattendatei + Nummer, z. B. /dev/sda1. Beachten Sie, dass die Nummerierung logischer Partitionen bei 5 beginnt.
Verschiedene Festplatten haben unterschiedliche Sektorgrößen, zum Beispiel 512 Byte und 4 KB für die neuesten Festplatten. Um mit allen Festplatten kompatibel zu sein, verwendet GPT logische Blockadressen (Logical Block Address, LBA) für definierte Sektoren. Die Standardgröße von LBA beträgt 512 Byte.
Der erste Block von GPT zeichnet den Main Boot Record (MBR) auf, gefolgt von 33 Blöcken zum Aufzeichnen von Partitionsinformationen, und die letzten 33 Blöcke werden zum Sichern von Partitionsinformationen verwendet. Der erste dieser 33 Blöcke ist der GPT-Header-Datensatz. Dieser Teil zeichnet den Speicherort und die Größe der Partitionstabelle selbst auf. Er platziert auch den Prüfcode (CRC32) der Partitionstabelle Verwenden Sie diesen Prüfcode, um festzustellen, ob die GPT korrekt ist. Wenn ein Fehler auftritt, können Sie ihn mithilfe der Sicherungspartition wiederherstellen.
GPT verfügt nicht über das Konzept der erweiterten Partitionen. Jedes LAB kann in 4 Partitionen unterteilt werden, sodass insgesamt 4 * 32 = 128 Partitionen unterteilt werden können.
MBR unterstützt keine Festplatten über 2,2 TB, während GPT bis zu 233 TB = 8 ZB unterstützt.
BIOS (Basic Input/Output System) ist eine Firmware (in Hardware eingebettete Software). Das BIOS-Programm wird in einem Nur-Lese-Speicher gespeichert, der seinen Inhalt nach einem Stromausfall nicht verliert.
Das BIOS ist das erste Programm, das vom Computer beim Einschalten ausgeführt wird. Dieses Programm kennt die Festplatte, die gestartet werden kann, und liest den Hauptstartdatensatz (MBR) des ersten Sektors der Festplatte Boot-Management-Programm, dieses Boot-Management-Programm lädt die Kerndateien des Betriebssystems.
Der Bootmanager im Main Boot Record (MBR) stellt folgende Funktionen zur Verfügung:
Menü aufrufen, Kerndateien laden und an andere Boot-Management-Programme übertragen. Mit der Übertragungsfunktion können Sie Multi-Boot implementieren. Sie müssen lediglich das Boot-Management-Programm eines anderen Betriebssystems auf dem Boot-Sektor einer anderen Partition installieren Starten Sie das aktuelle Betriebssystem über das Menü. Übertragen Sie es an andere Boot-Management-Programme, um ein anderes Betriebssystem zu starten.
In der Abbildung unten stellt das Boot-Management-Programm im Haupt-Boot-Record (MBR) des ersten Sektors zwei Menüs bereit: M1, M2 zeigt auf das Windows-Betriebssystem und M2 zeigt auf die Boot-Sektoren anderer Partitionen, die Folgendes enthalten Ein weiteres Boot-Management-Programm bietet ein Menü, das auf Linux verweist.
Um Multi-Boot zu installieren, installieren Sie am besten zuerst Windows und dann Linux. Da der Main Boot Record (MBR) bei der Installation von Windows überschrieben wird, kann Linux das Boot-Management-Programm im Main Boot Record (MBR) oder im Boot-Sektor anderer Partitionen installieren und das Menü des Boot-Management-Programms festlegen .
Das BIOS kann die GPT-Partitionstabelle nicht lesen, UEFI jedoch.
Beim Formatieren einer Partition wird ein Dateisystem auf der Partition erstellt. Eine Partition kann normalerweise nur mit einem Dateisystem formatiert werden, aber Technologien wie Festplatten-Arrays können eine Partition mit mehreren Dateisystemen formatieren.
Die wichtigsten Komponenten sind wie folgt:
Darüber hinaus umfasst es auch:
Das bedeutet, dass der Block, in dem sich der Inhalt einer Datei befindet, zu verstreut ist.
Die im Ext2-Dateisystem unterstützten Blockgrößen sind 1 KB, 2 KB und 4 KB. Unterschiedliche Größen begrenzen die maximale Größe einer einzelnen Datei und des Dateisystems.
Größe | 1 KB | 2 KB | 4 KB |
---|---|---|---|
größte einzelne Datei | 16 GB | 256 GB | 2 TB |
Maximales Dateisystem 2 TB 8 TB 16 TB Ein Block kann nur von einer Datei verwendet werden und der nicht verwendete Teil wird direkt verschwendet. Wenn Sie daher eine große Anzahl kleiner Dateien speichern müssen, ist es am besten, einen kleineren Block zu wählen.
Der Inode enthält insbesondere die folgenden Informationen:
Inode hat die folgenden Eigenschaften:
Der Inode zeichnet die Blocknummer auf, in der sich der Dateiinhalt befindet, aber jeder Block ist sehr klein. Eine große Datei erfordert Hunderttausende Blöcke. Ein Inode hat eine begrenzte Größe und kann nicht direkt auf so viele Blocknummern verweisen. Daher wurden indirekte, doppelte indirekte und dreifache indirekte Verweise eingeführt. Indirekte Referenz bedeutet, dass der vom Inode aufgezeichnete Referenzblock Referenzinformationen aufzeichnet.
Beim Erstellen eines Verzeichnisses werden ein Inode und mindestens ein Block zugewiesen. Der vom Block aufgezeichnete Inhalt ist die Inode-Nummer und der Dateiname aller Dateien im Verzeichnis. Es ist ersichtlich, dass der Inode der Datei selbst nicht den Dateinamen aufzeichnet, sondern der Dateiname im Verzeichnis. Daher hängen Vorgänge wie das Hinzufügen von Dateien, das Löschen von Dateien und das Ändern von Dateinamen mit der w-Berechtigung von zusammen das Verzeichnis.
Bei einem plötzlichen Stromausfall tritt ein Fehler im Dateisystem auf. Beispielsweise wurde die Block-Bitmap nur vor dem Stromausfall geändert, die Daten wurden jedoch nicht tatsächlich in den Block geschrieben. Das ext3/ext4-Dateisystem führt eine Protokollfunktion ein, mit der das Dateisystem repariert werden kann.
Beim Mounten wird das Verzeichnis als Einstiegspunkt des Dateisystems verwendet, dh nach Eingabe des Verzeichnisses können die Dateisystemdaten gelesen werden.
Um die Konsistenz der Verzeichnisstruktur verschiedener Linux-Distributionen zu gewährleisten, legt der Filesystem Hierarchy Standard (FHS) die Verzeichnisstruktur von Linux fest.
Die drei grundlegendsten Verzeichnisse sind wie folgt:
Es gibt drei Arten von Benutzern: Dateieigentümer, Gruppen und andere. Verschiedene Benutzer haben unterschiedliche Dateiberechtigungen.
Wenn Sie ls zum Anzeigen einer Datei verwenden, werden die Informationen einer Datei angezeigt, z. B. drwxr-xr-x. 3 root root 17 May 6 00:14 .config
. Die Erklärung dieser Informationen lautet wie folgt:
Gängige Dateitypen und ihre Bedeutung sind:
Im 9-stelligen Dateiberechtigungsfeld befinden sich alle 3 Ziffern in einer Gruppe, und es gibt insgesamt 3 Gruppen. Jede Gruppe stellt die Dateiberechtigungen für den Dateieigentümer, die Gruppe, zu der sie gehört, und andere Personen dar. Die drei Ziffern in einem Satz von Berechtigungen sind die Berechtigungen r, w und x und geben an, dass sie lesbar, beschreibbar und ausführbar sind.
Es gibt drei Arten von Dateizeiten:
Listen Sie die Informationen einer Datei oder eines Verzeichnisses auf. Die Informationen des Verzeichnisses sind die darin enthaltenen Dateien.
# # 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]
Kopieren Sie die Datei. Wenn mehr als zwei Quelldateien vorhanden sind, muss die Zieldatei ein Verzeichnis sein.
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 : 递归删除
Dateien verschieben.
# # mv [-fiu] source destination
# # mv [options] source1 source2 source3 .... directory
-f : force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖
Ein Satz von Berechtigungen kann durch Zahlen dargestellt werden. Zu diesem Zeitpunkt werden die drei Bits eines Satzes von Berechtigungen als Bits einer Binärzahl betrachtet. Das Gewicht jedes Bits beträgt von links nach rechts 4, 2 und 1 ist das digitale Gewicht, das jeder Erlaubnis entspricht. Die Werte sind r: 4, w: 2, x: 1.
# # chmod [-R] xyz dirname/filename
Beispiel: Ändern Sie die Berechtigungen der .bashrc-Datei in -rwxr-xr--.
# # chmod 754 .bashrc
Sie können auch Symbole verwenden, um Berechtigungen festzulegen.
# # chmod [ugoa] [+-=] [rwx] dirname/filename
- u: 拥有者
- g: 所属群组
- o: 其他人
- a: 所有人
- +: 添加权限
- -: 移除权限
- =: 设定权限
Beispiel: Schreibberechtigungen für alle Benutzer zur .bashrc-Datei hinzufügen.
# # chmod a+w .bashrc
**Dateinamen werden nicht im Inhalt einer Datei gespeichert, sondern in dem Verzeichnis, in dem sich die Datei befindet. **Daher kann der Dateiname nicht geändert werden, wenn Sie über die Berechtigung w für die Datei verfügen. Verzeichnisse speichern Dateilisten und die Berechtigungen eines Verzeichnisses sind die Berechtigungen für seine Dateiliste.
**Daher bedeutet die r-Berechtigung des Verzeichnisses, dass die Dateiliste gelesen werden kann; die w-Berechtigung bedeutet, dass die Dateiliste geändert werden kann, insbesondere das Hinzufügen, Löschen und Ändern des Dateinamens Verzeichnis ein Arbeitsverzeichnis, und die x-Berechtigung kann das Verzeichnis zu einem Arbeitsverzeichnis machen. Es ist die Grundlage der r- und w-Berechtigungen. Wenn ein Verzeichnis nicht zu einem Arbeitsverzeichnis gemacht werden kann, gibt es keine Möglichkeit, die Dateiliste zu lesen oder zu ändern Dateiliste. **
# # ln [-sf] source_filename dist_filename
-s : 默认是 hard link,加 -s 为 symbolic link
-f : 如果目标文件存在时,先删除目标文件
Erstellen Sie einen Eintrag im Verzeichnis, um den Dateinamen und die Inode-Nummer aufzuzeichnen. Dieser Inode ist der Inode der Quelldatei. Löschen Sie alle Einträge und die Datei bleibt bestehen, solange die Anzahl der Referenzen nicht Null ist. Es gelten die folgenden Einschränkungen: Es kann sich nicht über Dateisysteme erstrecken und keine Verzeichnisse verknüpfen.
# # 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
Die symbolische Linkdatei speichert den absoluten Pfad der Quelldatei und befindet sich beim Lesen in der Quelldatei. Sie kann als Verknüpfung zu Windows verstanden werden. Wenn die Quelldatei gelöscht wird, kann die verknüpfte Datei nicht geöffnet werden. Es können Links zu Verzeichnissen erstellt werden.
# # 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 : 后面接数字,代表显示几行的意思
Befehlssuche.
# # which [-a] command
-a : 将所有指令列出,而不是只列第一个
Dateisuche. Es ist schneller, da nur einige bestimmte Verzeichnisse durchsucht werden. ## whereis [-bmsu] Verzeichnisname/Dateiname
Dateisuche. Sie können nach Schlüsselwörtern oder regulären Ausdrücken suchen. „locate“ verwendet für die Suche die Datenbank /var/lib/mlocate/. Sie wird im Speicher gespeichert und einmal täglich aktualisiert, sodass Sie „locate“ nicht zum Suchen nach neu erstellten Dateien verwenden können. Mit „updateb“ können Sie die Datenbank sofort aktualisieren.
# # locate [-ir] keyword
-r: 正则表达式
Dateisuche. Sie können anhand der Eigenschaften und Berechtigungen der Datei suchen.
# # find [basedir] [option]
example: find . -name " shadow* "
(1) Zeitbezogene Optionen
-mtime n : 列出在 n 天前的那一天修改过内容的文件
-mtime +n : 列出在 n 天之前 (不含 n 天本身) 修改过内容的文件
-mtime -n : 列出在 n 天之内 (含 n 天本身) 修改过内容的文件
-newer file : 列出比 file 更新的文件
(2) Optionen im Zusammenhang mit Dateieigentümern und Gruppen
-uid n
-gid n
-user name
-group name
-nouser : 搜索拥有者不存在 /etc/passwd 的文件
-nogroup: 搜索所属群组不存在于 /etc/group 的文件
(3) Optionen im Zusammenhang mit Dateiberechtigungen und -namen
-name filename
-size [+-]SIZE: 搜寻比 SIZE 还要大 (+) 或小 (-) 的文件。这个 SIZE 的规格有: c: 代表 byte,k: 代表 1024bytes。所以,要找比 50KB 还要大的文件,就是 -size +50k
-type TYPE
-perm mode : 搜索权限等于 mode 的文件
-perm -mode : 搜索权限包含 mode 的文件
-perm /mode : 搜索权限包含任一 mode 的文件
Es gibt viele komprimierte Dateinamen unter Linux, die gebräuchlichsten sind wie folgt:
Verlängerung | Kompressor |
---|---|
*.Z | Kompresse |
*.Reißverschluss | Reißverschluss |
*.gz | gzip |
*.bz2 | bzip2 |
*.xz | xz |
*.Teer | Die vom tar-Programm gepackten Daten werden nicht komprimiert. |
*.tar.gz | Vom Programm tar gepackte und von gzip komprimierte Dateien |
*.tar.bz2 | Vom Programm tar gepackte und von bzip2 komprimierte Dateien |
*.tar.xz | Vom Programm tar gepackte und von xz komprimierte Dateien |
gzip ist der am häufigsten verwendete Komprimierungsbefehl unter Linux und kann mit compress, zip und gzip komprimierte Dateien dekomprimieren.
Nach der gzip-Komprimierung existiert die Quelldatei nicht mehr. Es stehen 9 verschiedene Komprimierungsstufen zur Verfügung. Sie können zcat, zmore und zless verwenden, um den Inhalt komprimierter Dateien zu lesen.
$ gzip [-cdtv#] filename
-c : 将压缩的数据输出到屏幕上
-d : 解压缩
-t : 检验压缩文件是否出错
-v : 显示压缩比等信息
-# # : ## 为数字的意思,代表压缩等级,数字越大压缩比越高,默认为 6
Bietet eine höhere Komprimierungsrate als gzip. Befehle anzeigen: bzcat, bzmore, bzless, bzgrep.
$ bzip2 [-cdkzv#] filename
-k : 保留源文件
Bietet ein besseres Komprimierungsverhältnis als bzip2. Es ist ersichtlich, dass die Komprimierungsraten von gzip, bzip2 und xz ständig optimiert werden. Es ist jedoch zu beachten, dass die Komprimierungszeit umso länger ist, je höher das Komprimierungsverhältnis ist.
Befehle anzeigen: xzcat, xzmore, xzless, xzgrep.
$ xz [-dtlkc#] filename
Der Komprimierungsbefehl kann nur eine Datei komprimieren, während das Paket mehrere Dateien in eine große Datei packen kann. Tar kann nicht nur zum Verpacken verwendet werden, Sie können die gepackten Dateien auch mit gip, bzip2 und xz komprimieren.
$ 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 目录 : 在特定目录解压缩。
Verwendung | Befehl |
---|---|
Packen und komprimieren | tar -jcv -f Dateiname.tar.bz2 Der Name der zu komprimierenden Datei oder des Verzeichnisses |
Überprüfen | tar -jtv -f Dateiname.tar.bz2 |
Entpacken | tar -jxv -f Dateiname.tar.bz2 -C Verzeichnis zum Dekomprimieren |
Sie können den Kernel auffordern, Dienste über Shell bereitzustellen, und Bash ist eine Art von Shell.
Befehlsverlauf: verwendete Befehle aufzeichnen Befehls- und Dateivervollständigung: Tastenkombination: Tab Namensalias: Beispielsweise ist lm der Alias von ls -al-Shell-Skripten. Platzhalter: Beispielsweise listet ls -l /usr/bin/X* /usr/ auf. bin Alle unten aufgeführten Dateien beginnend mit X
$
vor der Variablen hinzufügen, oder Sie können die Form ${}
verwenden;$ x=abc
$ echo $x
$ echo ${x}
Wenn der Variableninhalt Leerzeichen enthält, müssen doppelte oder einfache Anführungszeichen verwendet werden.
x="lang is $LANG"
, dann ist der Wert von x lang is zh_TW.UTF-8;x='lang is $LANG'
, dann ist der Wert von x lang is $LANG
. 指令
oder $(指令)
verwenden, um die Ausführungsergebnisse von Anweisungen Variablen zuzuweisen. Beispiel: version=$(uname -r), der Wert der Version ist 4.15.0-22-generic. Mit dem Exportbefehl können Sie benutzerdefinierte Variablen in Umgebungsvariablen konvertieren. Die sogenannten Unterprogramme werden von der aktuellen Bash generiert. Bash-Variablen können als Arrays und Ganzzahlen deklariert werden. Beachten Sie, dass numerische Typen keine Gleitkommazahlen haben. Wenn nicht deklariert, ist der Standardwert der String-Typ. Variablen werden mit dem Deklarationsbefehl deklariert: $ declare [-aixr] variable
-a : 定义为数组类型
-i : 定义为整数类型
-x : 定义为环境变量
-r : 定义为 readonly 类型
Verwenden Sie [ ], um ein Array zu indizieren:
$ array[1]=a
$ array[2]=b
$ echo ${array[1]}
$PATH
angegebenen Suchpfads und führen Sie sie aus.Unter Umleitung versteht man die Verwendung von Dateien anstelle von Standardeingabe, Standardausgabe und Standardfehlerausgabe.
1 | Code | Operator |
---|---|---|
Standardeingabe (stdin) | 0 | < oder << |
Standardausgabe (stdout) | 1 | > oder >> |
Standardfehlerausgabe (stderr) | 2 | 2> oder 2>> |
Unter ihnen zeigt ein Pfeil eine Umleitung in überschreibender Weise an, während zwei Pfeile eine Umleitung in anhängender Weise anzeigen.
Unnötige Standardausgaben und Standardfehlerausgaben können nach /dev/null umgeleitet werden, was einem Wegwerfen in den Papierkorb gleichkommt. Wenn Sie die Standardausgabe und die Standardfehlerausgabe gleichzeitig in eine Datei umleiten müssen, müssen Sie eine Ausgabe in eine andere Ausgabe konvertieren. 2>&1 bedeutet beispielsweise, dass die Standardfehlerausgabe in eine Standardausgabe konvertiert wird.
$ find /home -name .bashrc > list 2>&1
$ nohup latte-dock --replace > /dev/null 2>&1 & # 没有任何输出的后台任务
Beim Pipelining wird die Standardausgabe eines Befehls als Standardeingabe eines anderen Befehls verwendet. Pipelining kann verwendet werden, wenn die Daten in mehreren Schritten verarbeitet werden müssen, bevor wir das erhalten, was wir wollen.
Verwenden Sie |. zwischen Befehlen, um einzelne Pipeline-Befehle zu trennen.
$ ls -al /etc | less
Cut teilt die Daten auf und extrahiert den gewünschten Teil. Der Segmentierungsprozess erfolgt Zeile für Zeile.
$ 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-
zum Sortieren verwendet.
$ 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
Sie können nur ein Duplikat der Daten übernehmen.
$ uniq [-ic]
-i : 忽略大小写
-c : 进行计数
$ last | cut -d ' ' -f 1 | sort | uniq -c
1
6 (unknown
47 dmtsai
4 reboot
7 root
1 wtmp
Durch die Ausgabeumleitung wird der Ausgabeinhalt in eine Datei umgeleitet. Tee kann nicht nur diese Funktion ausführen, sondern auch die Ausgabe auf dem Bildschirm beibehalten. Das heißt, mit dem Befehl tee wird eine Ausgabe sowohl an die Datei als auch an den Bildschirm gesendet.
$ tee [-a] file
Wird verwendet, um Zeichen in einer Zeile zu löschen oder Zeichen zu ersetzen.
$ tr [-ds] SET1 ...
-d : 删除行中 SET1 这个字符串
$ last | tr ' [a-z] ' ' [A-Z] '
Wandeln Sie Tabulatorzeichen in Leerzeichen um.
$ col [-xb]
-x : 将 tab 键转换成对等的空格键
Konvertieren Sie Tabulatoren in eine bestimmte Anzahl von Leerzeichen. Der Standardwert ist 8.
$ expand [-t] file
-t : tab 转为空格的数量
Zeilen mit denselben Daten zusammenführen.
$ join [-ti12] file1 file2
-t : 分隔符,默认为空格
-i : 忽略大小写的差异
-1 : 第一个文件所用的比较字段
-2 : 第二个文件所用的比较字段
Fügen Sie die beiden Zeilen direkt zusammen.
$ paste [-d] file1 file2
-d : 分隔符,默认为 tab
Split teilt eine Datei in mehrere Dateien.
$ split [-bl] file PREFIX
-b : 以大小来进行分区,可加单位,例如 b, k, m 等
-l : 以行数来进行分区。
- PREFIX : 分区文件的前导名称
g/re/p (einen regulären Ausdruck global suchen und drucken), reguläre Ausdrücke zum globalen Suchen und Drucken verwenden.
$ 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
Da { und } in der Shell eine besondere Bedeutung haben, müssen sie mit Escape-Zeichen maskiert werden.
$ grep -n ' go{2,5}g ' regular_express.txt
Für formatierte Ausgabe. Es gehört nicht zum Pipeline-Befehl. Sie müssen die Form $() verwenden, wenn Sie Daten an printf übertragen.
$ 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
Es wurde von Alfred Aho, Peter Weinberger und Brian Kernighan gegründet. Der Name awk besteht aus den Initialen der drei Gründer.
awk verarbeitet jeweils eine Zeile. Die kleinste Verarbeitungseinheit ist ein Feld