KANIKIG

KANIKIG

just for fun | 兴趣使然 Ph.D. in Engineering|❤️ #NFT $ETH| [Twitter](https://twitter.com/kanikig2)|[Github](https://github.com/KANIKIG)|[Telegram channel](https://t.me/kanikigtech)

Linuxの基本ノート

image

昨年、Python 基礎コースに含まれていた Linux 基礎コースのノート

とても簡略で、基本的に自分が理解できる内容だけ。。

一、オペレーティングシステムと Linux#

1. オペレーティングシステム#

1)ハードウェアを操作する
2)ハードウェアを操作する方法をシステムコールとしてカプセル化する

1.1 オペレーティングシステムの分類#

  • デスクトップオペレーティングシステム
  • サーバーオペレーティングシステム
  • 組み込みオペレーティングシステム
  • モバイルデバイスオペレーティングシステム

2. オペレーティングシステムの歴史#

2.1 Unix#

スタートレック
BCPL->B 言語 ->C 言語
Unix
マルチユーザー

2.2 Linux#

minix を基にして
カーネル

2.3 Linux カーネルとディストリビューション#

端末コマンドが追加された
カーネルはカプセル化されたシステムコール
ディストリビューションはカーネルを基に開発された一連のアプリケーション

2.4 Linux ファイルシステム#

win ドライブレター
xp 以前は単一ユーザーだったため

linux
home には各ユーザーのフォルダーがある

etc システム設定ファイル
bin 実行可能バイナリファイル
home ユーザーディレクトリ

二、Linux 端末コマンド#

一般的な十数個をマスターすれば良い。あまり使わないものは表を参照。

ctrl +/- で端末フォントを拡大

1. 最も一般的な 7 つのコマンド:#

  1. ls list 現在のフォルダーの内容を表示
  2. pwd print work directory 現在のフォルダーを表示
  3. cd change directory フォルダーを切り替え
  4. touch touch ファイルが存在しない場合は新しいファイルを作成
  5. mkdir make directory ディレクトリを作成
  6. rm remove ファイルを削除
  7. clear 画面をクリア

2. 端末コマンドの形式#

command [-option][parameter]

rm -r フォルダー

3. コマンドのヘルプ情報を参照#

2 つの方法

command --help

man command
スペース ページ送り
エンター 次の行
b ページ戻り
f ページ送り
q 終了

(command は対応するコマンド)

4. ファイルとディレクトリの一般的なコマンド#

ls cd touch rm mkdir

tab でファイル名を自動補完 他の選択肢があれば、もう一度押すと、システムが可能なコマンドを提示

上下で以前のコマンドに切り替え
ctrl c で一番下に戻る

コピーと移動
tree cp mv

ファイルの内容を表示
cat more grep

1) ls#

. で始まるものは隠しファイル ls は - a (all) が必要
隠しファイルを作成するには、. を追加するだけ。

. 現在のディレクトリ
.. 上位ディレクトリ

ls -a すべてのファイルを表示
ls -l リスト形式でファイルのすべての情報を表示
ls -h -l と組み合わせてファイルサイズを人間に優しく表示

drwxr-xr-x 4 kanikig kanikig 4096 5 月 19 18:02 AppWebCache
drwxr-xr-x 3 kanikig kanikig 4096 6 月 16 22:55 Audio
drwxr-xr-x 2 kanikig kanikig 4096 5 月 18 18:13 CloudRes
-rw-r--r-- 1 kanikig kanikig 33280 5 月 26 15:05 CustomFace.db
-rw-r--r-- 1 kanikig kanikig 494509 7 月 9 14:01 CustomFace.dbc
-rw-r--r-- 1 kanikig kanikig 132096 7 月 9 14:01 DingDongStorage.db
-rw-r--r-- 1 kanikig kanikig 0 5 月 18 18:08 DingDongStorage.db-journal
-rw-r--r-- 1 kanikig kanikig 25600 7 月 9 14:01 DocImport.db

d はディレクトリを示す

ls -l -h
ファイルサイズがより直感的に表示される
drwxr-xr-x 4 kanikig kanikig 4.0K 5 月 19 18:02 AppWebCache
drwxr-xr-x 3 kanikig kanikig 4.0K 6 月 16 22:55 Audio
drwxr-xr-x 2 kanikig kanikig 4.0K 5 月 18 18:13 CloudRes
-rw-r--r-- 1 kanikig kanikig 33K 5 月 26 15:05 CustomFace.db
-rw-r--r-- 1 kanikig kanikig 483K 7 月 9 14:01 CustomFace.dbc

オプションは連結して書ける 例えば
ls -alh

ls とワイルドカード

  • 任意の文字列
    ? 任意の文字
    [] 文字グループのいずれかにマッチ [1-9] [abc]

例えば ls m* で m で始まるものを探す

2) cd#

一般的なパラメータ

cd で直接ホームに戻る
または波線~を加えてホームディレクトリに直接戻る
cd - 最近の 2 回のディレクトリ切り替え

相対パス
絶対パス / または~で始まる

3) touch#

既に存在する場合は、日付を更新する

4) mkdir#

-p で連続してディレクトリを作成

mkdir -p a/b/c/d

(Linux では 1 つのディレクトリ内でフォルダーとファイルは同じ名前にできない)

5) rm#

-f 強制削除
-r 再帰的削除

ワイルドカードも使用可能

6) tree#

ツリー状にファイルシステムを表示

-d ディレクトリのみ表示

7) cp#

cd ソースファイル 目標ファイル

テキストエディタ ctrl s で素早く保存

後ろにファイル名を指定できる
変更しない場合はディレクトリだけ書けば良い

-i 上書き前に確認
-r 再帰的にフォルダー全体をコピー

8) mv#

mv ソースファイル 目標ファイル
-i 上書き前に確認

9) cat#

連結
ファイルの内容を表示

-b 非空行に行番号を付ける
-n すべての行に行番号を付ける

10) more#

ページ表示
大きなファイルを表示するために使用

操作のショートカットキーは man と同じ

11) grep#

強力なテキスト検索ツール

-n 行番号を表示
-v テキスト内容を含まない行(反転)
-i 大文字と小文字を無視

パターン検索
^asdasd 行の先頭にマッチ
asdasd$ 行の末尾にマッチ

12) echo#

端末に出力

リダイレクト:本来端末に出力される内容をファイルに出力する

'>' ファイルに出力(上書き)

'>>' 追加

\ は改行
echo だけでなく
ls もリダイレクトできる

ls -lh >>a

13) |#

パイプ
あるコマンドの出力を別のコマンドの入力として使用

ls -lha | more ページ表示
ls -lha | grep ds 出力をフィルタリング

三、リモート管理#

1.shutdown#

shutdown オプション 時間

デフォルトは 1 分後にシャットダウン
now で即時再起動

shutdown 20:25
shutdown +10 10 分後にシャットダウン

-r 再起動

2. ネットワークカードの設定を確認#

ネットワークカード
ネットワーク通信を担当するハードウェアデバイス
ip アドレスはネットワークカードに設定されるアドレス情報

ifconfig ネットワークカード情報を表示 / 設定
ping 接続が正常かテスト

ifconfig | grep inet で ip を素早く確認
物理ネットワークカードと複数の仮想ネットワークカード
物理ネットワークカード ens..

ping
ctrl c 停止

3. リモートログインとコピー#

1) ssh#

Secure Shell

ドメイン ip アドレスのエイリアス
ポート番号 ポート番号を通じてコンピュータ上で実行されているアプリケーションを見つけることができる
ssh のポート番号はデフォルトで 22 省略可能
ftp 21
ウェブサーバー 80

ssh [-p port] user@remote
remote はリモート ip
port デフォルトは 22

exit でログアウト

2) scp#

リモートでファイルをコピー

リモートからローカルへ scp -P (大文字!) 22 ソースファイル user@remote: 目標ファイル
ローカルからリモートへ scp user@remote: ソースファイル 目標ファイル
-r フォルダーを転送
-P ポートを指定

3) ssh の高度な使い方#

パスワードなしでログイン
エイリアスを設定

ssh の設定情報はすべて.ssh 下にある

パスワードなしでログイン:
ローカルの.ssh ディレクトリで ssh-keygen を実行し、エンターを押し続けて 2 つのファイル(公開鍵、秘密鍵)を生成
その後、ssh-copy-id [-p] user@remote で認証ファイルをサーバーの.ssh に転送

非対称暗号アルゴリズム
公開鍵で暗号化されたデータは、秘密鍵で復号化する必要がある
秘密鍵で暗号化されたデータは、公開鍵で復号化する

ローカルで秘密鍵でデータを暗号化し、サーバーの公開鍵でデータを復号化する

エイリアスを設定:
.ssh 下に config ファイルを作成
その中に以下を記入

Host h1
HostName 202.182.115.91
User root
Port 22

四、ユーザーと権限#

ユーザーと権限の概念
ユーザー管理
グループ管理
権限の変更

1. ユーザーと権限#

読み取り r 4
書き込み w 2
実行 x 1

ユーザーグループ

1)#

​ 権限 ユーザー グループ
drwxr-xr-x 3 kanikig kanikig 4.0K 5 月 18 16:45 Music
drwxr-xr-x 2 kanikig kanikig 4.0K 5 月 18 22:17 Pictures
drwxr-xr-x 3 kanikig kanikig 4.0K 7 月 8 22:58 PycharmProjects
-rw-r--r-- 1 kanikig kanikig 485 7 月 11 15:39 shadowsocks.json
-rw-r--r-- 1 kanikig kanikig 485 7 月 11 15:25 shadowsocs.json
-rw-r--r-- 1 kanikig kanikig 0 5 月 18 16:44 stale_outputs_checked
drwxr-xr-x 2 kanikig kanikig 4.0K 5 月 18 14:25 Videos

ハードリンク数は、ファイルまたはディレクトリにアクセスする方法の数
ファイルは通常 1、つまり絶対パス
フォルダーは 2 以上、cd. または子ディレクトリから cd..(無限に可能)

したがって、ハードリンク数で子ディレクトリの数を判断できる

第一列はファイルまたはフォルダー
その後は 3 文字ごとにグループ化
最初のグループはファイルまたはディレクトリの所有者
2 番目のグループはユーザーグループの権限
3 番目のグループは他のユーザー

2) chmod#

ファイルまたはディレクトリの権限を変更
changemod

chmod +/-rwx ファイルまたはディレクトリ

ディレクトリの場合、読み取りはディレクトリの内容を読むこと、書き込みはディレクトリの内容を変更すること、実行はディレクトリ内で端末コマンドを実行することを意味する

3)root#

sudo
substitute user do
5 分間有効

2. グループ管理#

groupadd グループ名
groupdel グループ名
cat /etc/group グループ情報を確認
chagrp -R グループ名 ファイル / ディレクトリ ファイルディレクトリの所属グループを変更

3. ユーザー管理#

useradd -m -g グループ ユーザー名
-m 自動的にユーザーディレクトリを作成
-g ユーザーのグループを指定、さもなければ同名のグループを自動的に作成

passwd ユーザーのパスワードを設定
userdel -r ユーザー名
-r ユーザーのホームディレクトリを削除
cat /etc/passwd | grep ユーザー名 ユーザー情報を確認
passwd ファイル
1 ユーザー名
2 パスワード x
3uid
4gid
5 ユーザーのフルネーム
6 ホームディレクトリ
7 ログインに使用するシェル

ユーザー情報を確認
id ユーザー名 ユーザー id とグループ id を確認
who 現在ログインしているユーザーのリストを表示
whoami 現在ログインしているユーザー名を表示

usermod
ユーザーの主グループ、追加グループ、ログインシェルを設定

主グループ ユーザー作成時に指定されたグループ
追加グループ 指定された追加グループ

usermod -g グループ ユーザー名 ユーザーの主グループを変更
usermod -G グループ ユーザー名 追加グループを変更
usermod -s /bin/bash シェルを変更

usermod -G sudo ユーザー名 ユーザーを sudo に追加

シェルは端末コマンドを入力するソフトウェア

dash
bash

which
実行コマンドの位置を確認

/etc/passwd ユーザー情報を保存
/usr/bin/passwd パスワードを変更するプログラム

su ユーザー名 ユーザーを切り替え
exit 終了

4. ファイル権限の変更#

chown 所有者を変更
chagrp グループを変更
chmod 権限を変更

chown ユーザー名 ファイルまたはディレクトリ
chgrp -R グループ名 ファイルまたはディレクトリ
chmod -R 755 ファイルまたはディレクトリ

7 所有者の権限
5 グループメンバーの権限
5 他のユーザーの権限

r=4
w=2
x=1

したがって推測できる

五、システム情報#

1. 日時#

cal 今月のカレンダー -y 一年のカレンダー
date 現在のシステム時間

2. ディスク情報#

df -h disk free ディスクの残りスペースを表示
du -h [ディレクトリ名] ディレクトリの占有スペースを確認

3. プロセス情報#

プロセス:現在実行中のプログラム

ps aux process status プロセスの詳細を表示
top 動的にプロセスを表示し、並べ替え q 終了
kill [-9] プロセス ID -9 で強制停止

ps はデフォルトで端末で起動したプログラムしか表示できない
a すべてのユーザーのプロセス
u プロセスの詳細状態を表示
x 制御端末のないプロセスを表示

root のプロセスを kill しない方が良い

4. その他のコマンド#

  • find ファイルを検索
  • ln シンボリックリンク(ショートカットに相当)
  • tar パッキングと圧縮
  • apt-get ソフトウェアのインストール

find [パス] -name “*.py”
ln -s ソースファイル リンクファイル
ソースファイルは絶対パスを使用する必要がある
-s がない場合はハードリンクを作成する

シンボリックリンクの場合、ソースファイルが移動または削除されると無効になるが、ハードリンクは無効にならない

ハードリンク:
Linux では、ファイル名とファイルデータは別々に保存される
ファイル名を通じてデータにアクセスする
ハードリンクはファイル名と等価であり、直接データにアクセスする、つまりエイリアスである
シンボリックリンクはシンボリックリンクファイルデータを通じてソースファイルのファイル名にアクセスし、間接的にデータにアクセスする
日常的にはハードリンクを作成することはほとんどない
ハードリンク数が 0 のときのみ、ファイルのデータが削除される

5. パッキングと圧縮#

Linux でよく使われる tar.gz
tar はパッキングのみで圧縮はしない

tar -cvf パッキングファイル.tar パッキングするファイル / パス パッキング
tar -xvf パッキングファイル.tar 解凍

-v でパッキングの詳細プロセスを表示
-f でファイル名を指定(f は最後に置く必要がある)

gzip
パッキングされたファイルを圧縮

tar -zcvf パッキングファイル.tar.gz 圧縮するファイル
tar -zxvf パッキングファイル.tar.gz 解凍
tar -zxvf パッキングファイル.tar.gz -C 目標パス 指定したパスに解凍

bzip2(two)

tar.bz2

オプションの最初に - j を追加

6.apt#

advanced packaging tool

sudo apt install ソフトウェアパッケージ
sudo apt remove ソフトウェアパッケージ
sudo apt upgrade ソフトウェアパッケージを更新

sl 小さな列車
htop top のアップグレード版
linuxlogo
screenfetch

端末を面白くする
端末で sudo visudo を入力
「Defaults」の末尾(ファイルの前半部分)に「Defaults insults」という行を追加。
保存
その後、sudo を使用する際に、パスワードを入力する時に間違えると、端末が無茶苦茶なことを言い始める

cmatrix ハッカー帝国
rev 逆順出力 一般的にパイプの後に使用
lolcat カラー出力
cowsay 牛が出力結果を言う
aptitude moo も牛だが、遊ぶためのもの
fortune ランダムに一文を出力 -zh 中国の詩を出力
toilet 大文字を印刷
figlet 同上
aafire 画面に燃えている炎の束を表示 sudo apt install libaa-bin
oneko 小さな猫がマウスを追いかける
factor 素因数分解
espeak 読み上げ

fork バム。。指数的に自乗し、すべてのシステムリソースを占有するまで

bb 少し異なるプレーヤー
ASCIIquarium 水族館

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。