この基本的な Linux 操作を読んだ後、その方法が分からなければ、誰もあなたを救うことはできません。

序文

ハゲ頭だけが強くなれる 

この記事は主に Linux の基本操作といくつかの簡単な概念をまとめています。学生に慣れていない場合は、Linux をダウンロードしてプレイすることができます (または、サーバーを購入してプレイすることができます [学生版はそれほど高価ではありません])、開発者向けです。 Linux を使用していくつかの基本的な操作を実行できるようにするために必要です。

それでは始めましょう。もちろん、私の Linux は初心者レベルにすぎません。間違いがあれば、コメント欄でご指摘ください。

1. なぜ Linux を学ぶ必要があるのですか
? ほとんどの人の PC は Windows システムを使用していると思いますが、なぜ Linux オペレーティング システムを学ぶ必要があるのでしょうか? ? ? Windows のグラフィカル インターフェイスは非常に優れているため、基本的な日常使用では学習コストはほぼゼロです。

しかし、Linux は異なります。Linux を初めて使用する人は、「Linux は面倒だし、面白くないし、文字インターフェイスばかりだ」と思うかもしれません。直感的ではありません、この壊れたシステムは何のためにあるのですか~~

日常的に使用するには Windows の方が便利ですが、知っておく必要があるのは、私たちが開発するプログラムは通常 Linux で実行されるということです。

次に、Windows もオペレーティング システムであるのに、なぜ Windows ではなく Linux の下に置く必要があるのか​​と疑問に思う人もいるかもしれません。? 私たちが作成したプログラムは Windows でも実行できると思います。

Linux の利点をいくつかまとめました。

無料の
ソフトウェアの多くは Linux 上でネイティブに実行され、コミュニティによる大規模なサポートと優れたエコ環境を備えています。
オープンソース、カスタマイズ可能なオープン、マルチユーザー ネットワーク オペレーティング システム。
比較的安全で安定している
ため、開発者は自分たちで作成したプログラムを実行するために Linux を選択しました。

次に、Linux の基本
Linux システムの構成:

Linux カーネル (Linux チーム管理)
シェル: ユーザーがカーネル
ファイル システムと対話するためのインターフェイス: ext3、ext4 など。Windows には、fat32、ntfs
サードパーティ アプリケーション ソフトウェアが搭載されています。
2.1
シェルの基礎知識 シェル以外は理解しやすいはずですが、シェルとは何ですか? ? ?

シェルはシステムのユーザー インターフェイスであり、 ユーザーがカーネル(コマンド インタープリター)と対話するためのインターフェイスを提供します。

シェルは以下を実行できます。

  • 内部コマンド
  • 応用
  • シェルスクリプト

type コマンドを使用して内部コマンドと外部コマンドを区別します。

それ以来、シェルを使用して次のことを実行できるようになりました。

コマンドラインの解釈 (これが最もよく使われます!)
コマンドのさまざまな実行順序
ワイルドカード文字 (ワイルドカード文字)
コマンド補完、エイリアス機構、コマンド履歴
I/O リダイレクト (入出力リダイレクト)
パイプライン (パイプ)
コマンド 置換(または $( ))
シェルプログラミング言語 (シェルスクリプト)
シェルの主なバージョンは以下のとおりです。

私たちが一般的に使用する (デフォルト) は bash (bourne again シェル) です。

 コマンドを使用してps、実行中のシェルを観察します。

2.2Linuxの基本ディレクトリ構造

Windows では、次のような基本的なディレクトリ構造があります

 

Linux も例外ではなく、基本的なディレクトリ構造もあります。  

Linux ファイル システムはディレクトリ ツリー構造です。ファイル システム構造はルート ディレクトリから始まります。ルート ディレクトリの下には任意の数のファイルとサブディレクトリを置くことができ、サブディレクトリには任意の数のファイルとサブディレクトリを置くことができます。

bin はバイナリ実行可能ファイル (ls、cat、mkdir など) を格納
します boot システムの起動に使用されるさまざまなファイルを格納します
dev はデバイス ファイルなどを
格納します システム設定ファイルを格納します
ホーム ルート ディレクトリ すべてのユーザー ファイルの lib ストア
とファイル システムを格納します 共有ライブラリとカーネルmntでのプログラムの実行に必要なモジュール
システム管理者が一時ファイル システムをインストールするインストール ポイント
opt 追加インストール用のオプションのアプリケーション パッケージが配置される場所
proc 仮想ファイル システムは、現在のメモリのマッピングを保存します
ルート スーパーユーザー ディレクトリ
sbin はバイナリ実行可能ファイルを格納します。root のみがアクセスできます。 tmp は、
さまざまな一時ファイルの格納に使用されます
。 usr は、システム アプリケーションの格納に使用されます。より重要なディレクトリ /usr/local ローカル管理者ソフトウェアのインストール ディレクトリです。
var は、変更が必要なデータの格納に使用されます。動作中 ファイル
2.3 コマンドの基本形式
cmd [オプション] [引数]、オプションをオプション、引数をパラメータと呼びます

オプションとパラメータは両方とも、シェル コマンドの実行時に入力として使用され、スペースで区切られます。

Linux では大文字と小文字が区別されます。
一般に、オプションの後に単一文字のオプションを指定する場合は、その前にマイナス記号 - が付きます。単語オプションの前に 2 つのマイナス記号を使用します --

これが一般的な状況です。一部のコマンドはまだこのルールに属していません (比較的少数です)~~~
例: ls -a と ls -all、単一の文字は 1 つを使用し、単語 all は 2 つを使用します。
Linux では、実行可能ファイルファイルも次のように分類されます。

組み込みコマンド: 効率を高めるために、一般的に使用されるいくつかのコマンドのインタプリタがシェル内に構築されています。
外部コマンド: /bin および /sbin ディレクトリに保存されているコマンド ユーティリティ
: /usr/bin、/usr/sbin、/usr/share、/usr/local/bin などのディレクトリに保存されているユーティリティプログラム ユーザープログラム: ユーザープログラムがインストールされた
後コンパイルして実行可能ファイルを生成すると、シェル コマンドとして使用して、シェル スクリプトを実行できます。
シェル言語で書かれた
バッチファイル
を、実行するシェル コマンドとして使用できます。あまり馴染みのないかもしれませんが、Linux にはワイルドカードがあります (検索するときに役立ちます) )

*: 任意の文字および任意の数の文字と一致します
?: 任意の文字と 1 つの数字と一致します
[ ]: [ ] 内の任意の文字と一致します
[! ]: [! ] を除く任意の文字と一致します、! は非を意味します 意味
2.5 ファイルの種類 が
あります。 Linux では非常に多くの種類のファイルが存在します。

通常のファイル -
ディレクトリ d
シンボリック リンク l
ハード リンク: 通常のファイルと変わりません。inode はすべてハードディスク内の同じファイルのブロックを指します。
ソフト リンク: 別の種類のファイルである、それが表すファイルの絶対パスを保存します。ハードディスク上には独立したブロックがあり、アクセス時に独自のパスを置き換えます (単純に Windows の一般的なショートカットとして理解されます)。
キャラクターデバイスファイル c
ブロックデバイスファイル b
ソケット s
名前付きパイプ p
一般的なものは、通常のファイル、ディレクトリ、シンボリックリンクです。詳しく調べてください~

2.5.1 ユーザーホームディレクトリ
インターネットで調べているとユーザーホームディレクトリという名詞が出てくることがありますが、これは何でしょうか?? ?

前述したように、私たちの Linux はマルチユーザー ネットワーク システムです。したがって、Linux では複数のユーザーを作成でき、各ユーザーは独自の専用スペースを持つことになります。

したがって、ユーザーを作成するとき、システム管理者は各ユーザーのホーム ディレクトリを通常は /home/ ディレクトリの下に作成します。例: ユーザー
osmond のホーム ディレクトリは次のとおりです: /home/osmond ユーザーは
自分のディレクトリにファイルを所有します。ホーム ディレクトリ。独自のホーム ディレクトリで関連する操作を実行できます。


正直に言うと、Linux コマンドを学習してサーバーを直接購入する方が便利です。そうすることで時間を大幅に節約できます。また、現在サーバーの費用は年間 89 元だけです。特別なニーズがない場合は、仮想マシンに時間を費やさないでください。それだけの価値はありません

3. よく使用されるコマンド
上では、基本的な概念をいくつか説明しました。これは、コマンドを入力する前に少し基礎を築くためのものです。コマンドを入力するときは、さらに重要な知識ポイントもいくつか見つかります。それでは、時間が来たら話しましょう~~~

3.1 よく使うファイルやディレクトリの操作コマンド
これは最もよく使うコマンドであり、Linux の最も基本的なコマンドです。

pwdコマンドでユーザーのカレントディレクトリを表示
cdコマンドでディレクトリの切り替え
現在のディレクトリを示す カレント
ディレクトリの上位ディレクトリ(親ディレクトリ)を示す
- ユーザーのホームディレクトリを示すディレクトリは cd コマンドを使用する前にありました
~ ユーザーのホーム ディレクトリの絶対値を示します。 パス名
絶対パス:

スラッシュ (/) で始まる説明は、ファイルの場所の完全な説明に進みます。ファイル名を指定したい場合は、いつでも
相対パスを使用できます。

スラッシュ (/) で始めないでください。現在の作業ディレクトリを基準とした相対的な場所を指定します。また、ファイル名を指定するショートカットとして使用できます。 ヒント: コマンドを入力するときは、Tab キーを使用して完了します

ls: ファイルまたはディレクトリの情報を表示します。
mkdir: 現在のディレクトリの下に空のディレクトリを作成します。
rmdir: ディレクトリが空である必要があります。
touch: 空のファイルを生成するか、ファイルの時刻を変更します。
cp: ファイルまたはディレクトリをコピーします
。 mv: ファイルを移動します。またはディレクトリ、ファイルまたはディレクトリの名前を変更します
rm: ファイルまたはディレクトリを削除します
ln: リンク ファイルを作成します
find: ファイルを検索します file
/stat: ファイルの種類またはファイル属性情報を表示します
cat: テキスト ファイルの内容を表示します
more: あなたページごとに表示できます
裏返して操作を待ちます
tail -10: ファイルの末尾の 10 行を表示します
head -20: ファイルの先頭の 20 行を表示します
echo: コンテンツを指定したファイルにリダイレクトし、開きます存在する場合はパイプラインを作成し、存在しない場合はパイプラインを作成します
。 コマンド | : フロントを変更します。 ls の結果を次のコマンドに渡します (例: ls -la | wc、wc コマンドを使用してワード数をカウントします)
リダイレクト> は上書きモード、>> は追加モードです、例: echo "Java3y,zhen de hen xihuan ni" > qingshu.txt 左側の出力を右側のファイルに入れます
。コマンド?実際には、Windows 上でファイルをコピーしたり、ファイルを貼り付けたり、ファイルを作成したり、ファイルを表示したりするためです~~~

3.1.1 一般的に使用されるファイルおよびディレクトリ操作の演習
基礎を強化し、次の質問を実行します。

(1) Linux のシェル プログラムはデフォルトでは bash プログラムです;
(2) Linux コマンドの形式は 3 つの部分、つまりコマンド、オプション、パラメータで構成されます;
(3) Linux コマンドの前に 1 つのマイナス記号 (-) が使用されます。オプション、その後に 1 文字、オプションの前に 2 つのマイナス記号 (--)、その後に単語が続きます;
(4) Linux コマンドで使用されるワイルドカードは何ですか? * [];
(5) コマンド ls /usr/bin/w* の効果は、指定されたディレクトリ内の w で始まるすべてのファイルまたはディレクトリを一覧表示することです; (6) コマンド ls /usr/bin/w の効果??
は、指定されたディレクトリの下にある、名前が w で始まり長さが 3 であるすべてのファイルまたはディレクトリを一覧表示します;
(7) コマンド ls /usr/bin/[xyz]* の効果は、指定されたディレクトリの下にあるファイルを一覧表示することです。名前が x または y または z で始まるディレクトリ ; で始まるすべてのファイルまたはディレクトリ
(8) コマンド ls /usr/bin/[!ah]* の効果は、指定されたディレクトリ内にあるファイル名を持つすべてのファイルまたはディレクトリをリストすることです。 a から h までの文字で始まることはできません; (9
) ディレクトリ操作の場合、「.」はカレント ディレクトリを示します。
(10) ディレクトリ操作の場合、「..」は上位ディレクトリを示します。
(11) ディレクトリ操作の場合、「 -" は最後の作業ディレクトリを示します。
(12) ディレクトリ操作中、"~" はユーザーのホーム ディレクトリを示します。
(13) コマンド ln は、ハード リンクとソフト リンクに分けられるファイル リンクを確立できます。
(14)コマンド touch はファイルの 3 つの時間を変更できます。つまり、アクセス時間、変更時間、変更時間です。

/tmpディレクトリに入り、goldXX(XXは学籍番号の下2桁)というファイルを作成し、ファイルの時刻を確認する

 アカウントのメインディレクトリに、dogディレクトリを作成し、dogディレクトリに入ったら、catXX(XXは学籍番号の下2桁)ディレクトリを作成し、catXXディレクトリに入り、カレントディレクトリを表示して、元の画面に戻ります。前のディレクトリを削除し、catXX ディレクトリを削除します。

 /etc/passwd ファイルをアカウントのメインディレクトリにコピーし、アカウントのメインディレクトリにある passwd を passwdXX (XX は学生番号の下 2 桁) に変更します。

 zcat という名前のファイルを見つけ、そのファイルを /tmp ディレクトリにコピーし、ファイルを長い形式でリストし、次に /tmp ディレクトリ内のすべてのファイルを削除し、ファイルが削除されたかどうかを確認します。

 /etc/hosts ファイルをアカウントのメイン ディレクトリにコピーし、アカウントのメイン ディレクトリにハード リンク ファイルを作成し (ファイル名は hostsYYY (YYY は学生名のピンイン省略形))、メインディレクトリの hosts ファイル; hostsYYY ファイルのホストと i ノード情報を確認してください 

  /usr/bin/vdir ファイルをアカウントのメイン ディレクトリにコピーし、アカウントのメイン ディレクトリにソフト リンク ファイル (newdir という名前) を作成し、メイン ディレクトリの vdir ファイルにリンクし、その i ノード情報を確認します。それぞれ vdir ファイルと newdir ファイル

 ディレクトリ /usr/bin 内のすべてのファイルを長い形式でリストし、出力をファイル outXX (XX は学生の学籍番号の下 2 桁) にリダイレクトし、結果を確認します。ディレクトリ /etc 内のすべてのファイルをリストします。長い形式の場合、出力はファイル outXX の末尾に追加されます。

 /usr/bin ディレクトリ内のすべてのファイルを長い形式で一覧表示し、パイプライン経由で more コマンドに接続してファイル リストを参照します。

 

>和>>違いは何ですか? 

回答:上書きすることで新しいファイルにリダイレクトされ>元のファイルの末尾に補足的に追加されます。>>

パイプや more コマンドを介してファイルのリストを参照する利便性はどこにあるのでしょうか? 

回答: ファイル一覧が 1 画面を超える場合は、この方法の方が分割画面で閲覧できるので便利です。

3.2 ファイルのパッケージ化と圧縮コマンド
Windows オペレーティング システムでは、WinRAR や Kuaizi などの圧縮ソフトウェアを使用して圧縮または解凍します。

もちろん、Linux でも圧縮や解凍の操作はありますが、Linux での圧縮と解凍の方法を学びましょう。

圧縮方法もいくつかあり、次の 3 つが一般的に使用されます。

gzip
bzip2
tar
の一般的に使用される圧縮コマンドは次のとおりです。

gzip ファイル名
bzip2 ファイル名
tar -czvf ファイル名
一般的に使用される解凍コマンドは次のとおりです。

gzip -d filename.gz
bzip2 -d filename.bz2
tar -xzvf filename.tar.gz
3.3 正規表現 + grep
テキスト ファイルを表示するための cat、more、less、tail のコマンドはすでに学習しましたが、すぐに確認できると思います。このテキスト ファイルの下にキーワードが存在するかどうかを確認するにはどうすればよいですか? ? ?

Windows では比較的簡単で、ほとんどすべてのテキスト エディタ (メモ帳) が CTRL+F をサポートしており、次のキーワードを入力することで見つけることができます。

Linux では、グラフィカル インターフェイスや CTRL+F がない場合、いくつかのコマンドを理解していないと、対応する文字を見つけるのが非常に困難になります。テキスト ファイル内の特定の文字をすばやく検索する方法について説明します。

3.3.1 正規表現
まず、正規表現について話しましょう 学生と接したことがある人ならわかると思いますが、これは覚えるのが簡単ではありません。一度使わないと忘れてしまうので、使うときだけ調べるようにしましょう~~~ そこで、すぐ下にいくつかのルールを示しますので、多くは言いません。

3.3.2 grep コマンド
grep (グローバル検索正規表現) は強力なテキスト検索ツールです。grep は正規表現を使用してテキストを検索し、一致する行を出力します。

形式: grep [オプション] PATTERN [ファイル...]

PATTERN は検索条件です。通常の文字列または正規表現を使用でき、RE は通常一重引用符で囲まれます。
FILE は検索対象のファイルで、スペースで区切られた複数のファイルを指定することも、シェルのワイルドカードを使用して複数のファイルの PATTERN を検索することもできます。省略すると、標準入力で検索することになります。
grep コマンドは入力ファイルを変更したり影響を与えたりすることはありません。出力リダイレクトを使用して結果をファイルとして保存できます
。例:

ファイル myfile 内で文字列 mystr grep
-n mystr myfileを含む行を検索します
。 myfile 内で最初の文字が文字である行をすべて表示します。
grep '^[a-zA-Z]' myfile
ファイル myfile 内で最初の文字が文字でない行を検索します。 # 行 (つまり、コメント行を除外します)
grep -v '^#' myfile は、
文字列 "root" を含む /etc ディレクトリ (サブディレクトリを含む) 内のすべてのファイルのファイル名をリストします。 grep -lr root
/etc/ *

grep を使用して、/etc/passwd ファイル内で a で始まる行を検索し、行番号を表示するように要求します。/etc/passwd ファイル内で、login で終わる行を検索します。

 

3.4 作業効率を向上させるいくつかの方法

  • オートコンプリートコマンド
    • TABキー
  • 歴史的順序
    • 上下の矢印キー
  • エイリアス

ここで話題にするのはエイリアス alias だけだと思います。理解するために以下の例を見てみましょう。

シェルによって現在定義されているエイリアスを表示します。エイリアスを定義する 2 つのコマンドを実行します。エイリアス grep を定義し、結果を色で表示するように要求します。

3.5 シェル変数とシェル環境

Windows には、ユーザー環境変数とシステム環境変数があります。Linux にもいくつかあります。

シェル変数は大きく 3 つのカテゴリに分類できます。

内部変数: システムによって提供され、ユーザーは使用することのみができ、変更することはできません。
?
GROUPS
環境変数: これらの変数はユーザーの作業環境を決定します。ユーザーが定義する必要はなく、シェルで直接使用できます。変数の一部はユーザーが変更できます。
ユーザー変数: ユーザーによって作成および変更され、シェル スクリプトでよく使用されます。
変数の割り当て (変数の定義)
varName=Value
export varName=Value は
変数 $varName を参照します
シェル変数のスコープ:

ローカル変数のスコープは、コマンド ラインが配置されているシェルまたはシェル スクリプト ファイルにのみ制限されます。
グローバル変数のスコープには、シェル プロセスとそのすべてのサブプロセスが含まれます。
ローカル変数はグローバル変数と交換可能です。export 組み込みコマンドを使用して、ローカル変数をグローバル変数として設定できます。グローバル変数は、export 組み込みコマンドを使用してローカルに作成できます。
エクスポートコマンド:

現在のシェルに表示されるグローバル変数を表示します。export
[-p]
は変数値を定義し、グローバル変数として宣言します。
import <変数名 1=値 1> [<変数名 2=値 2> ...]
グローバル変数として割り当てられている一部のローカル変数を宣言します。
import <変数名 1> [<変数名 2> ...] は、
ローカル変数として割り当てられている一部のグローバル変数を宣言します。
import -n <変数名 1> [<変数名 2> ...]
シェル環境変数:

環境変数は、シェル コマンドが正しく実行されるようにするためのシェルの動作環境を定義します。
シェルは環境変数を使用して、検索パス、登録ディレクトリ、端末の種類、端末名、ユーザー名などを決定します。
すべての環境変数はグローバル変数 (つまり、シェルのサブプロセスに渡すことができます) であり、ユーザーがリセットできます。

シェル変数: クエリ、表示、キャンセル:

現在定義されているすべての変数を表示します すべての
環境変数: env
すべての変数と関数 (環境変数を含む): set
一部の変数の値を表示します
echo $NAME1 [$NAME2 ...]
変数の宣言または代入をキャンセルします
unset <NAME >
3.5 .1 シェル変数とシェル環境の演習

シェル変数 stuXX (XX は学生の学籍番号の下 2 桁) を定義します。初期値は学生名のフルスペルです。echo コマンドを使用して stuXX 変数の値を表示し、unset コマンドを使用してキャンセルします。 stuXX 変数を調べ、結果を確認します。env コマンドを使用して、現在定義されているシェル環境変数を確認します。

 

 シェル環境変数の値は変更できますか? なぜ?

回答: 通常、環境変数の値は変更できます。ただし、エラーを変更すると、シェルの通常の動作に重大な影響を及ぼし、場合によってはシェルの実行が失敗する可能性があるため、慎重に変更する必要があります。

4. VI エディター
Linux を使ったことのない学生がジョークを読むときに、次の 2 つのエディターを見ることになると思います。

vim
emacs
vi の使い方を簡単に学びましょう。viとは「Visual Interface」の略称で、出力、削除、検索、置換、ブロック操作など多くのテキスト操作が可能で、他の編集にはないユーザー自身のニーズに合わせたカスタマイズが可能です。プログラム。

Vi は、 Windows のメモ帳である
vim (つまり、 vi のクローン バージョンの 1 つである Vi IMproved) とみなすことができます
。ファイルを編集するには、Vi を使用します。

 Vi には 3 つのモードがあります。

4.1 通常モード
G はファイルの末尾に直接ジャンプするために使用されます。
ZZ は Vi を保存して終了するために使用されます。 ZQ は/ と ?
を保存せずに Vi を終了するために使用されます。
文字列の検索に使用されます。
n 次の検索を続行します。
yy 行をコピー
します。 p 次の行に貼り付けます。 P 前の行に貼り付けます。
dd テキスト行を削除し
ます。 x カーソルのある文字を削除します。
u 最後の編集をキャンセルします。操作(アンドゥ)
4.2 通常モードでの挿入モード
挿入コマンド i、a、o を入力して挿入モードに入ります。ユーザーが入力した文字はすべて、vim によってファイルの内容として保存され、画面に表示されます。

テキスト入力プロセス中に通常モードに戻りたい場合は、Esc キーを押します。
4.3 コマンドラインモード
通常モードでは、ユーザーがコロン : を押してコマンドモードに入りますが、このとき、vim は表示ウィンドウの最終行 (画面の最終行) にプロンプ​​トとして ":" を表示します。コマンドモードの状態で、コマンドの入力を待っています。

:w 現在編集中のファイルを保存しますが終了しません
:w newfile は「newfile」という名前の別のファイルとして保存します
:wq は Vi を保存して終了するために使用されます
:q! は保存せずに Vi を終了するために使用されます
:q は Vi を終了するために使用されます直接 (「変更」ではなく)
Vi 環境をセットアップします。

:set autoindent インデント。プログラム作成でよく使用されます
。 : set noautoindent インデントをキャンセルします
。 : set number ファイル編集時に行番号を表示
します。 set nonumber 行番号を表示しません
。 : set tabstop=value タブを表示するためのスペース文字の数を設定します
。 : set すべてを表示します。オプション set
: set all 設定できるすべてのオプションを表示します。
4.4Vi 演習

ユーザーのホーム ディレクトリで vi プログラムを実行し、install.log ファイルを編集します。カーソルを 10 行目の 5 文字目に移動します。大文字の G を押してファイルの末尾に到達します。保存せずに終了します。

 

ユーザーのホーム ディレクトリで、vi プログラムを実行し、install.log ファイルを編集し、/ コマンドを使用して文字列 sudo を見つけ、文字列 sudo を含む行をコピーします。

 ユーザーのホーム ディレクトリで vi プログラムを実行し、install.log ファイルを編集し、コマンド モードに入り、表示行番号を設定します。? を使用します。コマンドで文字列 openssh を検索し、コマンド n を使用して次の文字列を検索します。

 

4. まとめ
この記事では Linux の最も基礎的な知識を中心に解説しており、簡単に Linux を操作できるようになります。コマンドは無限とも言えますが、Linuxにこんな機能があるということだけ覚えておけば、その時にオンラインで確認できると非常に便利です。

重要なのは、もっと練習して、もっと遊んで、よく使われる Linux コマンドを覚えていくことです~~~~

記事に間違いがある場合は、修正して相互に連絡してください。WeChat で技術記事を読むことに慣れていて、より多くのソフトウェア テスト リソースを入手したい学生は、私をフォローしてください。

 

 

おすすめ

転載: blog.csdn.net/2301_76643199/article/details/132249082