対応コース https://www.bilibili.com/video/BV18p4y167Md
オペレーティングシステム通信講座 オペレーティングシステム実践講座 45
目次 CSAPP コンピューター システムの深い理解は、Microsoft のボス
yangminz
の公開授業 https://www.bilibili.com/video/BV17K4y1N7Q2 (更新中) から得られます。
目次 C++ オブジェクト指向プログラミング シリーズ (Master Hou Jie の CPP オブジェクト指向プログラミング シリーズ) (完了)
コマンドの基本的な使い方とオプションの紹介。
Man はマニュアルの略で、指示の具体的な情報が表示されます。
man date を実行すると、DATE(1) が表示されます。この中の数字は、一般的に使用される命令の種類を表します。その種類は次のとおりです。
コードネーム | タイプ |
---|---|
1 | ユーザーがシェル環境で操作できる命令または実行可能ファイル |
5 | 設定ファイル |
8 | システム管理者が使用できる管理コマンド |
info は man に似ていますが、info はドキュメントをページに分割し、各ページにジャンプできます。
/usr/share/doc には、ソフトウェアの完全なドキュメント セットが保存されます。
シャットダウンする前に、who コマンドを使用して、オンラインの他のユーザーがいるかどうかを確認する必要があります。
ディスク ファイルの読み取りと書き込みを高速化するために、メモリにあるファイル データはすぐにはディスクに同期されないため、シャットダウンする前に同期同期操作が必要です。
# # shutdown [-krhc] 时间 [信息] |
-k : 不会关机,只是发送警告信息,通知所有在线的用户
-r : 将系统的服务停掉后就重新启动
-h : 将系统的服务停掉后就立即关机
-c : 取消已经在进行的 shutdown 指令内容
実行可能ファイルへのパスは、: で区切られて PATH で宣言されます。
/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/dmtsai/.local/bin:/home/dmtsai/bin
sudo では、一般ユーザーが root 実行可能コマンドを使用できますが、このコマンドを使用できるのは /etc/sudoers 構成ファイルに追加されたユーザーのみです。
RPM と DPKG は、最も一般的なタイプのソフトウェア パッケージ管理ツールです。
Linux ディストリビューションは、Linux カーネルとさまざまなアプリケーション ソフトウェアを統合したバージョンです。 商用ディストリビューションに基づくパッケージ管理ツール コミュニティ ディストリビューション RPM Red Hat Fedora/CentOS DPKG Ubuntu Debian
注文 | 効果 |
---|---|
:w | ディスクに書き込む |
:w! | ファイルが読み取り専用の場合、強制的にディスクに書き込みます。書き込めるかどうかは、ファイルに対するユーザーの権限によって異なります。 |
:q | 離れる |
:q! | 保存せずに強制終了 |
:wq | ディスクに書き込んでそのままにする |
:wq! | ディスクへの書き込みを強制して終了します |
GNU プロジェクト (本物のプロジェクトと訳される) は、GNU と呼ばれる完全に無料のオペレーティング システムを作成することを目的としており、そのコンテンツ ソフトウェアは完全に GPL に基づいてリリースされています。 GPL の正式名称は GNU General Public License で、これには次の内容が含まれます: いかなる目的でもこのプログラムを実行する自由、このプログラムを改良し、改良を公開する自由。 ¶オープンソースライセンスの選択 (新しいウィンドウが開きます) オープンソースライセンスの選択方法 (新しいウィンドウが開きます)
IDE (ATA) は、Advanced Technology Attachment の略で、パラレル ポート ケーブルの耐干渉性能が非常に低く、ケーブルが大きなスペースを占めるため、内部の熱が発生しにくくなります。コンピュータの普及に伴い、徐々に SATA に置き換えられてきました。
SATA の正式名称は Serial ATA で、シリアル ポートを使用する ATA インターフェイスです。強力な耐干渉性があり、データ ケーブルの長さの要件が ATA よりもはるかに低く、ホットスワップなどの機能をサポートしています。 SATA-II のインターフェイス速度は 300MiB/s ですが、新しい SATA-III 規格は 600MiB/s の伝送速度に達します。また、SATA データ ケーブルは ATA よりもはるかに細いため、シャーシ内の空気循環に役立ち、ケーブルを整理しやすくなります。
SCSI の正式名称は Small Computer System Interface で、初期の SCSI-II から現在の Ultra320 SCSI およびファイバー チャネルに至るまで、さまざまな種類のインターフェイスが開発されてきました。 SCSI ハード ドライブは、ワークステーション レベルのパーソナル コンピュータやサーバーで広く使用されているため、15,000 rpm の高速ディスクなど、より高度なテクノロジが使用されており、送信時の CPU 使用率も低くなります。ただし、単価も高くなります。同じ容量の ATA および SATA ハードドライブよりも高価です。
Linux では、ディスクを含め、すべてのハードウェアがファイルとして扱われます。ディスクには、ディスク インターフェイスの種類に応じて名前が付けられます。一般的なディスク ファイル名は次のとおりです。
ファイル名の後のシリアル番号の決定は、システムがディスクを検出する順序に関係しており、ディスクが挿入されるスロットの位置とは関係ありません。
ディスク パーティション テーブルには 2 つの主な形式があり、1 つはより制限の厳しい MBR パーティション テーブル、もう 1 つはより新しく制限の緩い GPT パーティション テーブルです。
MBR では、最初のセクターが最も重要であり、マスター ブート レコード (MBR) とパーティション テーブルが 446 バイトを占め、パーティション テーブルが 64 バイトを占めます。
パーティション テーブルはわずか 64 バイトで、プライマリ パーティション (Primary) と拡張パーティション (Extended) の最大 4 つのパーティションしか保存できません。拡張パーティションは 1 つだけあり、他のセクターを使用して追加のパーティション テーブルを記録するため、拡張パーティションを介してさらに多くのパーティションを分割できます。これらのパーティションは論理パーティションと呼ばれます。
Linux では、パーティションもファイルとして扱います。パーティション ファイルの命名方法は、ディスク ファイル名 + 番号 (/dev/sda1 など) です。論理パーティションの番号は 5 から始まることに注意してください。
ディスクが異なればセクター サイズも異なります。たとえば、最新のディスクでは 512 バイトと 4k です。すべてのディスクと互換性を持たせるために、GPT は定義されたセクター上で論理ブロック アドレス (論理ブロック アドレス、LBA) を使用します。LBA のデフォルト サイズは 512 バイトです。
GPT の最初のブロックはメイン ブート レコード (MBR) を記録し、その後に 33 ブロックがパーティション情報を記録し、最後の 33 ブロックはパーティション情報のバックアップに使用されます。これらの 33 ブロックの最初は、GPT ヘッダー レコードです。この部分には、パーティション テーブル自体の場所とサイズ、およびオペレーティング システムが使用できるパーティション テーブルのチェック コード (CRC32) が記録されます。このチェック コードを使用して、GPT が正しいかどうかを判断します。エラーが発生した場合は、バックアップ パーティションを使用して復元できます。
GPT には拡張パーティションの概念がありません。これらはすべてプライマリ パーティションであり、各 LAB は 4 つのパーティションに分割できるため、合計 4 * 32 = 128 のパーティションに分割できます。
MBR は 2.2 TB を超えるハード ドライブをサポートしませんが、GPT は最大 233 TB = 8 ZB をサポートします。
BIOS (Basic Input/Output System) はファームウェア (ハードウェアに組み込まれたソフトウェア) であり、停電後も内容が失われることのない読み取り専用メモリに保存されます。
BIOS は、コンピュータの電源が入ったときに最初に実行されるプログラムです。このプログラムは、起動可能なディスクを認識し、ディスクの最初のセクタのメイン ブート レコード (MBR) を読み取ります。ブート管理プログラム。このブート管理プログラムはオペレーティング システムのコア ファイルをロードします。
メイン ブート レコード (MBR) のブート マネージャーは次の機能を提供します。
メニュー、コア ファイルのロード、および他のブート管理プログラムへの転送。転送機能を使用すると、別のパーティションのブート セクタに別のオペレーティング システムのブート管理プログラムをインストールするだけで済みます。ブート管理プログラムを起動するときに、現在のオペレーティング システムを起動するか、または起動するかを選択できます。メニューから現在のオペレーティング システムを起動し、他のブート管理プログラムに転送して、別のオペレーティング システムを起動します。
次の図では、最初のセクターのメイン ブート レコード (MBR) 内のブート管理プログラムは、M1、M2 の 2 つのメニューを提供します。M1 は Windows オペレーティング システムを指し、M2 は他のパーティションのブート セクターを指します。別のブート管理プログラムは、Linux を指すメニューを提供します。
マルチブートをインストールするには、最初に Windows をインストールし、次に Linux をインストールすることをお勧めします。 Windows のインストール時にメイン ブート レコード (MBR) が上書きされるため、Linux はブート管理プログラムをメイン ブート レコード (MBR) または他のパーティションのブート セクターにインストールすることを選択し、ブート管理プログラムのメニューを設定できます。 。
BIOS は GPT パーティション テーブルを読み取ることができませんが、UEFI は読み取ることができます。
パーティションのフォーマットとは、パーティション上にファイル システムを作成することです。通常、パーティションは 1 つのファイル システムでのみフォーマットできますが、ディスク アレイなどのテクノロジを使用すると、複数のファイル システムでパーティションをフォーマットできます。
最も重要なコンポーネントは次のとおりです。
さらに、以下も含まれます。
これは、ファイルのコンテンツが配置されているブロックが分散しすぎていることを意味します。
Ext2 ファイル システムでサポートされるブロック サイズは 1K、2K、4K です。サイズが異なると、単一ファイルとファイル システムの最大サイズが制限されます。
サイズ | 1KB | 2KB | 4KB |
---|---|---|---|
最大の単一ファイル | 16ギガバイト | 256GB | 2TB |
最大ファイルシステム 2TB 8TB 16TB 1ブロックは1ファイルのみ使用可能で、未使用部分は直接無駄になります。したがって、多数の小さなファイルを保存する必要がある場合は、より小さなブロックを選択するのが最善です。
i ノードには具体的には次の情報が含まれます。
i ノードには次の特徴があります。
i ノードにはファイルのコンテンツが配置されているブロック番号が記録されますが、各ブロックは非常に小さいため、大きなファイルには数十万のブロックが必要です。 i ノードのサイズには制限があるため、それほど多くのブロック番号を直接参照することはできません。したがって、間接参照、二重間接参照、三重間接参照が導入されました。間接参照とは、inodeによって記録される参照ブロックに参照情報が記録されることを意味する。
ディレクトリが作成されると、inode と少なくとも 1 つのブロックが割り当てられます。ブロックで記録される内容は、ディレクトリ内のすべてのファイルの inode 番号とファイル名です。 ファイル自体の i ノードにはファイル名が記録されませんが、ファイル名はディレクトリに記録されるため、ファイルの追加、ファイルの削除、ファイル名の変更などの操作は、w 権限に関連していることがわかります。ディレクトリ。
突然の停電が発生すると、ファイル システムでエラーが発生します。たとえば、停電前にブロック ビットマップが変更されただけで、実際にはデータがブロックに書き込まれませんでした。 ext3/ext4 ファイル システムには、ファイル システムの修復に使用できるログ機能が導入されています。
マウントでは、ディレクトリをファイル システムのエントリ ポイントとして使用します。つまり、ディレクトリに入ると、ファイル システム データを読み取ることができます。
さまざまな Linux ディストリビューションのディレクトリ構造の一貫性を維持するために、ファイルシステム階層標準 (FHS) は Linux のディレクトリ構造を指定します。
最も基本的な 3 つのディレクトリは次のとおりです。
ユーザーには、ファイル所有者、グループ、その他の 3 つのタイプがあります。ユーザーごとに異なるファイル権限があります。
ls を使用してファイルを表示すると、 drwxr-xr-x. 3 root root 17 May 6 00:14 .config
この情報の説明は次のとおりです。
一般的なファイルの種類とその意味は次のとおりです。
9 桁のファイル権限フィールドは、3 桁ごとにグループがあり、合計 3 つのグループがあり、各グループはファイルの所有者、そのファイルが属するグループ、およびその他のユーザーのファイル権限を表します。一連の権限の 3 桁は r、w、x 権限で、読み取り可能、書き込み可能、実行可能であることを示します。
ファイル時間には 3 つのタイプがあります。
ファイルまたはディレクトリの情報をリストします。ディレクトリの情報は、その中に含まれるファイルです。
# # 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]
ファイルをコピーします。 ソース ファイルが 3 つ以上ある場合、宛先ファイルはディレクトリである必要があります。
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 : 递归删除
ファイルを移動します。
# # mv [-fiu] source destination
# # mv [options] source1 source2 source3 .... directory
-f : force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖
このとき、パーミッションのセットの 3 ビットは、左から右に 4、2、1 の 2 進数のビットと見なされます。は、各権限に対応するデジタル重みです。値は、r: 4、w: 2、x: 1 です。
# # chmod [-R] xyz dirname/filename
例: .bashrc ファイルの権限を -rwxr-xr-- に変更します。
# # chmod 754 .bashrc
シンボルを使用して権限を設定することもできます。
# # chmod [ugoa] [+-=] [rwx] dirname/filename
- u: 拥有者
- g: 所属群组
- o: 其他人
- a: 所有人
- +: 添加权限
- -: 移除权限
- =: 设定权限
例: すべてのユーザーの .bashrc ファイルへの書き込み権限を追加します。
# # chmod a+w .bashrc
**ファイル名はファイルの内容ではなく、ファイルが存在するディレクトリに保存されます。 **したがって、ファイルに対する w 権限を持っている場合は、ファイル名を変更できません。 ディレクトリにはファイル リストが保存され、ディレクトリのアクセス許可はそのファイル リストに対するアクセス許可になります。
**したがって、ディレクトリの r 権限はファイル リストを読み取ることができることを意味し、w 権限はファイル リストを変更できること、具体的にはファイルの追加、削除、ファイル名の変更ができることを意味します。 directory は作業ディレクトリであり、x 権限はディレクトリを作業ディレクトリにすることができます。これは、ディレクトリを作業ディレクトリにできない場合、ファイル リストを読み取ったり、ファイルを変更したりする方法がありません。ファイルリスト。 **
# # ln [-sf] source_filename dist_filename
-s : 默认是 hard link,加 -s 为 symbolic link
-f : 如果目标文件存在时,先删除目标文件
ディレクトリにエントリを作成して、ファイル名と i ノード番号を記録します。この i ノードはソース ファイルの i ノードです。 エントリを削除しても、参照数がゼロでない限り、ファイルは引き続き存在します。 次の制限があります。ファイル システムをまたがることはできず、ディレクトリをリンクすることもできません。
# # 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
シンボリック リンク ファイルはソース ファイルの絶対パスを保存し、読み込むときにソース ファイルに配置されます。これは Windows へのショートカットとして理解できます。 ソースファイルを削除すると、リンクされたファイルを開くことができなくなります。 ディレクトリへのリンクを作成できます。
# # 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 : 后面接数字,代表显示几行的意思
コマンド検索。
# # which [-a] command
-a : 将所有指令列出,而不是只列第一个
ファイル検索。いくつかの特定のディレクトリのみを検索するため、処理が高速になります。 ## [-bmsu] はディレクトリ名/ファイル名です
ファイル検索。キーワードまたは正規表現を使用して検索できます。 locate は、/var/lib/mlocate/ データベースを使用して検索します。このデータベースはメモリに保存され、1 日に 1 回更新されるため、新しく作成されたファイルを検索するために Locate を使用することはできません。 updatedb を使用すると、データベースをすぐに更新できます。
# # locate [-ir] keyword
-r: 正则表达式
ファイル検索。ファイルのプロパティと権限を使用して検索できます。
# # find [basedir] [option]
example: find . -name " shadow* "
(1) 時間に関するオプション
-mtime n : 列出在 n 天前的那一天修改过内容的文件
-mtime +n : 列出在 n 天之前 (不含 n 天本身) 修改过内容的文件
-mtime -n : 列出在 n 天之内 (含 n 天本身) 修改过内容的文件
-newer file : 列出比 file 更新的文件
(2) ファイル所有者とグループに関するオプション
-uid n
-gid n
-user name
-group name
-nouser : 搜索拥有者不存在 /etc/passwd 的文件
-nogroup: 搜索所属群组不存在于 /etc/group 的文件
(3) ファイルのパーミッションと名前に関するオプション
-name filename
-size [+-]SIZE: 搜寻比 SIZE 还要大 (+) 或小 (-) 的文件。这个 SIZE 的规格有: c: 代表 byte,k: 代表 1024bytes。所以,要找比 50KB 还要大的文件,就是 -size +50k
-type TYPE
-perm mode : 搜索权限等于 mode 的文件
-perm -mode : 搜索权限包含 mode 的文件
-perm /mode : 搜索权限包含任一 mode 的文件
Linux では多くの圧縮ファイル名があり、一般的なものは次のとおりです。
拡大 | コンプレッサー |
---|---|
*.Z | 圧縮する |
*。ジップ | ジップ |
*.gz | gzip |
*.bz2 | bzip2 |
*.xz | xz |
*。タール | tar プログラムによってパッケージ化されたデータは圧縮されていません。 |
*.tar.gz | tar プログラムによってパッケージ化され、gzip によって圧縮されたファイル |
*.tar.bz2 | tar プログラムによってパッケージ化され、bzip2 によって圧縮されたファイル |
*.tar.xz | tar プログラムによってパッケージ化され、xz によって圧縮されたファイル |
gzip は Linux で最も広く使用されている圧縮コマンドで、compress、zip、gzip で圧縮されたファイルを解凍できます。
gzip 圧縮後、ソース ファイルは存在しなくなります。 9 種類の圧縮レベルが利用可能です。 zcat、zmore、zless を使用して圧縮ファイルの内容を読み取ることができます。
$ gzip [-cdtv#] filename
-c : 将压缩的数据输出到屏幕上
-d : 解压缩
-t : 检验压缩文件是否出错
-v : 显示压缩比等信息
-# # : ## 为数字的意思,代表压缩等级,数字越大压缩比越高,默认为 6
gzip よりも高い圧縮率を実現します。 表示コマンド: bzcat、bzmore、bzless、bzgrep。
$ bzip2 [-cdkzv#] filename
-k : 保留源文件
bzip2 よりも優れた圧縮率を実現します。 gzip、bzip2、xz の圧縮率が常に最適化されていることがわかります。ただし、圧縮率が高くなるほど圧縮時間は長くなりますのでご注意ください。
表示コマンド: xzcat、xzmore、xzless、xzgrep。
$ xz [-dtlkc#] filename
圧縮コマンドは 1 つのファイルのみを圧縮できますが、パックは複数のファイルを 1 つの大きなファイルにパックできます。 Tar はパッケージ化に使用できるだけでなく、gip、bzip2、および xz を使用してパッケージ化されたファイルを圧縮することもできます。
$ 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 目录 : 在特定目录解压缩。
使用法 | 注文 |
---|---|
梱包して圧縮する | tar -jcv -f filename.tar.bz2 圧縮するファイルまたはディレクトリの名前 |
チェック | tar -jtv -f ファイル名.tar.bz2 |
解凍する | tar -jxv -f filename.tar.bz2 -C 解凍するディレクトリ |
シェルを介してカーネルにサービスを提供するように要求できます。Bash はシェルの 1 種類です。
コマンド履歴: 使用したコマンドを記録する コマンドとファイルの補完: ショートカット キー: タブ ネーミング エイリアス: たとえば、lm は ls -al シェル スクリプトのエイリアスです。 ワイルドカード: たとえば、ls -l /usr/bin/X* は /usr/ をリストします。 bin X で始まる以下のすべてのファイル
$
追加するか、 ${}
形式を使用できます。$ x=abc
$ echo $x
$ echo ${x}
変数の内容にスペースが含まれる場合は、二重引用符または一重引用符を使用する必要があります。
x="lang is $LANG"
の場合、 x の値は lang は zh_TW.UTF-8 です。x='lang is $LANG'
の場合、 x の値は$LANG
です。 指令
または$(指令)
を使用して、命令の実行結果を変数に代入できます。たとえば、version=$(uname -r) の場合、version の値は 4.15.0-22-generic です。 カスタム変数を環境変数に変換するには、export コマンドを使用します。環境変数は、現在の Bash によって生成されるサブプログラムで使用できます。 Bash 変数は配列および整数として宣言できます。数値型には浮動小数点数がないことに注意してください。宣言されていない場合、デフォルトは文字列型です。変数は、declare コマンドを使用して宣言されます。 $ declare [-aixr] variable
-a : 定义为数组类型
-i : 定义为整数类型
-x : 定义为环境变量
-r : 定义为 readonly 类型
[ ] を使用して配列にインデックスを付けます。
$ array[1]=a
$ array[2]=b
$ echo ${array[1]}
$PATH
変数で指定された検索パスの順序で最初の命令を見つけて実行します。リダイレクトとは、標準入力、標準出力、および標準エラー出力の代わりにファイルを使用することを指します。
1 | コード | オペレーター |
---|---|---|
標準入力(stdin) | 0 | < または << |
標準出力 (stdout) | 1 | > または >> |
標準エラー出力 (stderr) | 2 | 2> または 2>> |
このうち、1本の矢印は上書き方式のリダイレクトを示し、2本の矢印は追加方式のリダイレクトを示している。
不要な標準出力や標準エラー出力は/dev/nullにリダイレクトできますが、これはゴミ箱に捨てるのと同じです。 標準出力と標準エラー出力を同時にファイルにリダイレクトする必要がある場合は、ある出力を別の出力に変換する必要があります。たとえば、2>&1 は標準エラー出力を標準出力に変換することを意味します。
$ find /home -name .bashrc > list 2>&1
$ nohup latte-dock --replace > /dev/null 2>&1 & # 没有任何输出的后台任务
パイプライン処理は、あるコマンドの標準出力を別のコマンドの標準入力として使用することです。パイプライン処理は、必要なものを取得する前にデータを複数のステップで処理する必要がある場合に使用できます。
個々のパイプライン コマンドを区切るには、コマンドの間に | を使用します。
$ ls -al /etc | less
Cut はデータを分割し、必要な部分を抽出します。 セグメント化プロセスは 1 行ずつ進められます。
$ 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-
並べ替えに使用されます。
$ 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
重複データは 1 つだけ取得できます。
$ uniq [-ic]
-i : 忽略大小写
-c : 进行计数
$ last | cut -d ' ' -f 1 | sort | uniq -c
1
6 (unknown
47 dmtsai
4 reboot
7 root
1 wtmp
出力リダイレクトは出力コンテンツをファイルにリダイレクトします。この機能を完了できるだけでなく、出力を画面上に保存することもできます。つまり、 tee コマンドを使用すると、出力がファイルと画面の両方に送信されます。
$ tee [-a] file
行内の文字を削除したり、文字を置き換えたりするときに使用します。
$ tr [-ds] SET1 ...
-d : 删除行中 SET1 这个字符串
$ last | tr ' [a-z] ' ' [A-Z] '
タブ文字をスペース文字に変換します。
$ col [-xb]
-x : 将 tab 键转换成对等的空格键
タブを特定の数のスペースに変換します。デフォルトは 8 です。
$ expand [-t] file
-t : tab 转为空格的数量
同じデータを持つ行を結合します。
$ join [-ti12] file1 file2
-t : 分隔符,默认为空格
-i : 忽略大小写的差异
-1 : 第一个文件所用的比较字段
-2 : 第二个文件所用的比较字段
2 つの行を直接貼り付けます。
$ paste [-d] file1 file2
-d : 分隔符,默认为 tab
Split はファイルを複数のファイルに分割します。
$ split [-bl] file PREFIX
-b : 以大小来进行分区,可加单位,例如 b, k, m 等
-l : 以行数来进行分区。
- PREFIX : 分区文件的前导名称
g/re/p (正規表現をグローバルに検索して出力)、正規表現を使用してグローバルに検索して出力します。
$ 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
{ と } はシェル内で特別な意味を持つため、エスケープ文字を使用してエスケープする必要があります。
$ grep -n ' go{2,5}g ' regular_express.txt
フォーマットされた出力の場合。 これはパイプライン コマンドに属しません。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
awk という名前は、Alfred Aho、Peter Weinberger、Brian Kernighan によって作成されました。3 人の創設者の頭文字です。
awk は一度に 1 行ずつ処理します。各フィールドの名前付け方法はフィールドです。