Linux入門編の忘備録1

Linux入門の忘備録
重くなるので２回にわけます。

#Linux入門編1:Linuxの基本を理解しよう 

##◆01:Linuxの全体像を理解しよう


##◆02:Linuxの利用形態を学ぼう
Linuxをどのような形で利用しているのか学習します。
スーパーコンピュータからデジタル家電まで、
Linuxはさまざまな場所で活躍しています。

##◆03:Linuxのシステム構成を知ろう
Linuxがどのように作られているのか、そのシステム構成について学習します。
Linuxは、カーネルと呼ばれる中核部分に、数多くのソフトウェアツールを組み合わせて提供しています。

##◆04:パッケージ管理ツールを使ってみよう

Linuxのパッケージ管理ツールについて学習します。
パッケージ管理ツールを使うと、Linuxにアプリケーションを追加したり、
まとめてアップデートしたりできます。


コマンド一覧

```console
dpkg -l
(インストール済みアプリケーションを一覧表示)
dpkg -l | less
(↑を少しづつ見るlessコマンド）

(スペースキーで進めて終わらせるときはqボタン)
sudo aptupdate

sudo aptinstall sl
(slコマンドをインストール)

/usr/games/sl
(slコマンドを実行)

dpkg -l "vim*"
(vim関連を表示)

usr/games/sl
(slコマンドを実行)

sudo apt purge sl
(slコマンドをアンインストール)
```

#◆05:シェルコマンドの考え方を理解しよう

Linuxの操作に不可欠なシェルコマンドについて学習します。
シンプルな機能の組み合わせで実行するシェルコマンドの考え方を理解しよう。

```console
echo "hello world" > hello.txt
(ファイルをリダイレクトで作成)
(ファイル一覧をリダイレクトで保存)

cat foo.txt
(テキストファイルを表示する)

dpkg -l | less
(パイプでコマンドを組み合わせる。)

dpkg -l > package_list.txt
(演習：リストをテキストに保存)
```

##◆06:ファイルシステムを理解しよう

```console
Linuxの主なディレクトリ
/　　ルートディレクトリ
/bin　基本コマンドの実行ファイル
/etc　システムやアプリケーションの設定ファイル
/lib　共有ライブラリ
/sbin　システム管理系コマンドの実行ファイル
/home　ユーザーごとのホームディレクトリ
/usr　システム起動時に必要がないファイルを配置
/var　ログファイルなどを書き換えらられる。
ls -l /usr/bin > directory.txt
```

##◆07:ファイルのリンクを作成しよう

シンボリックリンクを作成する
$ ln -s hello.txt hello.symbol
ハードリンクを作成する
$ ln hello.txt hello.hard


--------------------------------------------------------

#Linux入門編2: シェル環境を使いこなそう


##◆01:ファイル検索コマンドfindを使おう

Linuxのシェルで利用できる、ファイル検索コマンドfindについて学習します。

findコマンドは、ファイルやディレクトリを名前や更新日付などの情報を元に検索するツールです。


①findコマンド（find (検索を開始するパス) (検索パターン)）

find example

(exampleフォルダ内のファイルを検索)


②ファイル名を指定する

find example/*.txt

(txtファイルだけを検索する)


③ディレクトリとファイル名を指定する

サブディレクトリも検索する。



$ find example -name "*.txt"



④ファイルが見つからない場合

検索開始パスに合致するファイルとディレクトリが存在しないと、エラーメッセージを表示する。



$ find example/*.data

find: ‘example/*.data’: No such file or directory



nameオプションでは、検索開始パスに合致すると、エラーメッセージを表示しない。


$ find example -name "*.data"

日時を指定する

24時間以内に更新されたファイルを指定



$ find example -name "*.txt" -mtime 0

ワイルドカード

シェルの機能で、複数の文字に合致する特殊文字。ワイルドカードを使うと、一定のパターンにそったファイル名やディレクトリ名を指定できます。


- ∗ 0文字以上の任意の文字列 例：∗.txt hello∗

- ? 任意の1文字をあらわす 例： hello?.txt

- [] 角カッコ内の任意の文字。ハイフンで範囲を指定できる

- {} 波カッコ内の任意の文字列。複数のパターンはカンマで区切る


演習：

右のターミナルウィンドウで、findコマンドを使って、exampleディレクトリからファイル名の末尾が

「.md」のファイルを検索してください。このとき、サブディレクトリも検索します。

出力結果は、以下のようにして「output.txt」に保存してください。


[find example -name "*.md" > output.txt]




◆02:テキスト検索コマンドgrepを使おう

テキスト検索コマンドgrepについて学習します。

grepコマンドは、ファイルの中のテキストを検索するコマンドです。


①grepコマンド

ファイルの中のテキストを検索したり、特定のキーワードを含んだファイルを見つけたりできます。

$ grep (検索パターン) (検索ターゲット)


②特定のワードを含んだ行を表示する

$ grep "rabbit" example/alice.md


③ディレクトリのすべてのファイルを検索する

ワイルドカードでファイル名を指定する。

$ grep "hello" example/*.txt


④rオプションで、すべてのファイルを対象にサブディレクトリまで検索する

$ grep -r "hello" example


⑤ lオプションで、検索結果からファイル名だけを表示する

$ grep -rl "hello" example


⑥nオプションで、行番号を表示する

$ grep -n "rabbit" example/alice.md



◆03:正規表現を使ってみよう - 特定の文字を指定する (4:46)

テキスト検索のパターンを記述する正規表現について学習します。

正規表現は、grepコマンドの検索パターンだけでなく、

多くのプログラミング言語がサポートしています。

まずは、特定の文字を指定する方法を取り上げます。





◆04:正規表現を使ってみよう - 文字数・位置を指定する (5:24)

テキスト検索のパターンを記述する正規表現について、さらに学習します。

今回は文字の位置や文字数を指定する方法を取り上げます。





◆05:リダイレクトで、入出力を切り替えよう (6:21)

標準入出力とリダイレクトについて学習します。

Linuxのコマンドは、それぞれ単純な機能を持ち、組み合わせて利用できるようになっています。

そこで役立つのが「標準入出力」と「リダイレクト」です。





◆06:パイプで、シェルコマンドを組み合わせよう (4:06)

シェルコマンドを組み合わせるパイプについて学習します。

Linuxのコマンドは、それぞれ単純な機能を持ち、それを組み合わせて利用できるようになっています。

このとき、各コマンドを組み合わせるのが「パイプ」です。





◆07:プロセスを理解しよう (3:17)

Linuxの「プロセス」について学習します。Linuxは、複数のプログラムを同時に実行できますが、

この実行中のプログラムを「プロセス」と呼びます。





◆08:bash環境をカスタマイズしよう (6:20)

Linuxの代表的なシェルプログラムである「bash」のカスタマイズについて学習します。

自分の開発スタイルに合わせてカスタマイズすれば、作業効率も向上できます。





--------------------------------------------------------

Linux入門編3: テキストエディタVimを身に付けよう (全7回)




◆01:Vimの特徴を理解しよう (3:51)

定番テキストエディタVimの特徴を学習します。

Vimは、WindowsやMacのテキストエディアと比べて、独特の操作体系を持っています。

まずは、機能や操作の特徴を理解しましょう。


Vimとは

・テキストエディタ

・Viの機能強化版

・独特の操作体系を持つが、それを身に付けると効率よくテキストを編集できる


機能的な特徴

・動作環境はCUI

・キーボードだけで操作できる

・いろいろなプログラミング言語に対応

・高い拡張性(スクリプト、プラグイン、カスタマイズ)


操作の特徴

・機能に合わせたモードを持つ　(ノーマル、挿入、ビジュアル、検索、コマンドライン)

・キー入力がコマンドになる

・コマンドの組み合わせで操作できる


参考になるWebページ

最強のテキストエディタ・Vim入門！導入から活用法まで紹介 | TECH::NOTE｜

https://tech-camp.in/note/technology/1455/


viエディタ入門

https://vim.jp.net/


Vim - Wikipedia

https://ja.wikipedia.org/wiki/Vim


参考になるWebページ(チュートリアル)

Big Sky :: Learn Vim Progressively

http://mattn.kaoriya.net/software/vim/20110902125512.htm


チュートリアルでvimエディタの使い方を覚えよう — 名無しのvim使い

http://nanasi.jp/articles/howto/install/tutorial.html


vimチュートリアルに挑戦 - どぼじょのIT学習ブログ

https://mistyrinth.hatenablog.com/entry/2018/10/10/221048


Vimエディタ基本 — 名無しのvim使い

http://nanasi.jp/howto.html


参考になるWebページ(チートシートとマニュアル)

Untitled - vim-cheatsheet.pdf

https://namaraii.com/files/vim-cheatsheet.pdf


help - Vim日本語ドキュメント

https://vim-jp.org/vimdoc-ja/index.html


参考になるWebページ(動画とゲーム)

コーディングを3倍速くする！ Vim入門 | CSS-EBLOG

http://css-eblog.com/tools/vim-beginner.html


vim入門 (全18回) - プログラミングならドットインストール

https://dotinstall.com/lessons/basic_vim


VIM Adventures

https://vim-adventures.com/


参考になるWebページ(テクニックとその他)

vimで効率的にコードを書くための小技 - bonar note

http://blog.bonar.jp/entry/20070415/1176651778


脱初心者を目指すなら知っておきたい便利なVimコマンド25選 (Vimmerレベル診断付き) - Qiita

https://qiita.com/jnchito/items/57ffda5712636a9a1e62


脱初心者を目指すVimmerにオススメしたいVimプラグインや.vimrcの設定 - Qiita

https://qiita.com/jnchito/items/5141b3b01bced9f7f48f


【初心者必見】最強エディタVimの使い方/コマンド30種まとめ | 侍エンジニア塾ブログ（Samurai Blog） - プログラミング入門者向けサイト

https://www.sejuku.net/blog/5570


今さら聞けない高性能エディタVim入門 | CodeCampus

https://blog.codecamp.jp/vim


[Vim] Vim初心者の自分が、初心者の視点からVim入門を書いてみました。 - YoheiM .NET

https://www.yoheim.net/blog.php?q=20130803


◆02:はじめてのVim (5:59)

定番テキストエディタVimの初歩的な使い方を体験します。

Vimを起動して、簡単なテキストを入力して、修正して、保存する、初めの一歩に踏み出しましょう。


Vimを起動する

$ vim


ファイルを指定して、vimを起動する

$ vim hello.txt


テキストを入力する

Vimでテキストを入力するには、小文字の「i」でインサートモードに切りかえます。

インサートモードの間は、左下に「INSERT」(インサート)と表示しています。


~[i]hello world

[ESC]


保存と終了

テキストをファイルに保存するには、ノーマルモードからコマンドラインモードに切り替えます。

:w hello.txt

(vimで開いたらまず必ず保存すること)


vimを終了するには、コマンドラインモードで「q」(キュー)と入力します。

:q



保存と同時に終了するには、次のように入力します。

:wq

[dw]


修正を反映しないで保存する

:q!


参考になるWebページ(チュートリアル)

Big Sky :: Learn Vim Progressively

http://mattn.kaoriya.net/software/vim/20110902125512.htm


チュートリアルでvimエディタの使い方を覚えよう — 名無しのvim使い

http://nanasi.jp/articles/howto/install/tutorial.html


vimチュートリアルに挑戦 - どぼじょのIT学習ブログ

https://mistyrinth.hatenablog.com/entry/2018/10/10/221048


Vimエディタ基本 — 名無しのvim使い

http://nanasi.jp/howto.html








--------------------------------------------------------

◆03:Vimでカーソルを移動させよう (5:47)

Vimでカーソルを移動する方法について学習します。Vimでは、多彩な方法でカーソルを移動できます。


行番号を表示する

コマンドラインモードで、次のコマンドを実行する。

:set number


行移動と1文字移動

・[j] 下に移動

・[k] 上に移動


・[l] 後に移動

・[h] 前に移動


ワード単位で移動

・[w] 次の単語の先頭に移動

・[b] 前の単語の先頭に移動

・[e] 次の単語の末尾に移動


先頭・末尾に移動

・[$] 行の末尾にジャンプ

・[^] 行の先頭にジャンプ


テキスト全体の先頭と末尾に移動

・[gg] テキスト全体の先頭にジャンプ

・[G] テキスト全体の末尾にジャンプ

・[(number)G] (number)行にジャンプ


%で、対応するカッコに移動

・[%] 対応するカッコに移動


数字で移動を繰り返す

数字を押してキーを押すと、そのキーの移動を数字分繰り返す。


・[5w] 5ワード分、次に移動

・[5b] 5ワード分、前に移動

・[5j] 5行下に移動

・[5k] 5行上に移動



--------------------------------------------------------

◆04:テキストの削除と取り消し (5:09)

テキストの削除と作業の取り消し方法について学習します。

操作の取り消し方法を覚えれば、安心して編集に取り組めます。

また、コマンドを組み合わせる方法についても紹介します。


① 削除と取り消しの基本

・[x] カーソル位置の文字を削除する

・[X] カーソル前の文字を削除する

・[u] 直前の操作を取り消す


②いろいろな文字削除

・[dw] 単語末尾までと空白を削除する

・[dd] 行を削除する


③ いろいろな操作の取り消し

・[u] 操作の取り消し

・[U] 行全体の操作を取り消し

・ctrl+r 取り消しの取り消し


④キーの組み合わせで操作する

Vimでは、操作を組み合わせて利用できます。このとき基準になるのが、カーソルの移動キーです。たとえば、「w」キーで単語単位でカーソルを移動しました。これを削除の「d」キーと組み合わせると、その位置から単語の末尾と空白を削除します。


数字の「2」に続けて「w」キーで単語2つ分移動したので、「d2w」と入力すると、単語2つ分を削除します。


それから、「$」(ドル)マークで行の末尾まで移動するので、「d」と「$」(ドル)マークを組み合わせると、現在の位置から行末までを削除します。


このようなルールは、ノーマルモードの多くの機能で利用できます。


参考になるWebページ(チュートリアル)

Big Sky :: Learn Vim Progressively

http://mattn.kaoriya.net/software/vim/20110902125512.htm


チュートリアルでvimエディタの使い方を覚えよう — 名無しのvim使い

http://nanasi.jp/articles/howto/install/tutorial.html


vimチュートリアルに挑戦 - どぼじょのIT学習ブログ

https://mistyrinth.hatenablog.com/entry/2018/10/10/221048


Vimエディタ基本 — 名無しのvim使い

http://nanasi.jp/howto.html



◆05:コピーと貼り付け (4:26)

テキストのコピーと貼り付け方法について学習します。

Vimのコピーと貼り付け機能は、WindowsやMacのクリップボードとは異なる、

独自の操作性を持っています。

※寸前で削除した文字・単語・行を[p]で貼り付けることが出来る。


① 貼り付け

削除・コピーしたテキストを貼り付け


・[p] カーソルの後ろに貼り付け

・[P] カーソルの前に貼り付け


②コピー(yank)

・[yw] 単語をコピー

・[y2w] 複数の単語をコピー

・[yy] 1行コピー


③ビジュアルモード

ビジュアルモードでは、カーソル移動で範囲を選択する


・[v] ビジュアルモードに切り替える



◆06:検索とマーク (5:26)

テキスト検索とマーク機能について学習します。

マーク機能は、テキストの特定の位置を一時的に記憶する、

ブックマークのような機能です。


ビジュアルモード

ビジュアルモードでは、カーソル移動で範囲を選択する


・[v] ビジュアルモードに切り替える


テキスト検索

・[/(keyword)] 下方向に検索

・[?(keyword)] 上方向に検索

・[n] 次の候補に移動

・[N] 前の候補に戻る


検索の便利な機能

カーソル位置の単語を検索する



~ [*]



上下の矢印キーで、検索履歴を呼び出す


~ [/][↑][↑]



正規表現で検索


~ [/][^app]



正規表現で、先頭からインデントした「message」を検索


~ [/][^\s*message]


名前を付けてマークする

現在の行に「a」という名前を付ける



~ [m][a]



「a」マークの行にジャンプする


~ ['][a]



マーク一覧を表示する

:marks


◆07:正規表現でテキストを検索・置換しよう (3:24)

Vimを使った、テキストの置換について学習します。

Vimでは、コマンドラインモードで指定のテキストを置き換えできます。



基本的な置換

before という単語を after という単語に置換する例


:%s/before/after/g

指定行の間で置換


:10,20s/before/after/g


確認しながら置換


:%s/before/after/gcy




y -> yes:置換する

n -> no:置換しない

a -> all:すべて置換

q -> quit:置換を終了する


演習


:%s/destroy/delete/gc


--------------------------------------------------------

Linux入門編4: システム管理の基本を理解しよう (全9回)





◆01:システム管理の役割を理解しよう (4:25)

Linuxのシステム管理の概要について学習します。

ユーザーとグループをベースにして、ファイルシステムのアクセスを制御する、

システム管理の基本を理解しましょう。




◆02:ユーザー情報を確認しよう (4:20)

Linuxに登録してあるユーザー情報の読み方を学習します。

そして、ユーザー情報の確認・変更方法を試しましょう。


①ログインしているユーザーを表示

who


②ユーザー一覧を確認する


$ cat /etc/passwd


③ユーザー一覧の項目

- ユーザー名 ubuntu

- パスワード x

- uid 1000

- gid 1000

- コメント ,,,

- ホームディレクトリ /home/ubuntu

- デフォルトシェル /bin/bash


④ユーザー情報のコメントを変更する

$ sudo usermod -c helloworld ubuntu


⑤ sudoコマンド

指定したユーザーとしてコマンドを実行するシステム管理用のコマンド。

特にユーザーを指定しない場合は、スーパーユーザーとしてコマンドを実行する



◆03:ユーザーを追加しよう (4:15)

Linuxでユーザーアカウントを作成する方法を学習します。

そして、ユーザーのホームディレクトリ間で、ディレクトリやファイルに、

どのようにアクセスできるか確認します。


①ユーザーアカウントを作成する

$ sudo adduser paiza


② ユーザーを切り替える

$ su paiza


③元のユーザーに戻る

$ exit


④suコマンドについて

「su」(エスユー)コマンドは、ユーザーを切り替える。ユーザー名を省略するとスーパーユーザーに切り替わる。

ただし、ubuntuでは、セキュリティを確保するため、スーパーユーザーに切り替えできない。

Ubuntuで、システム管理コマンドを使う場合は、sudo(スードゥ)コマンドで実行する。



◆04:グループ情報を確認しよう (3:55)

Linuxのグループについて理解します。そして、グループの確認方法について学習します。


①グループを一覧表示する

cat /etc/group



②グループ一覧の項目

- グループ名 ubuntu

- パスワード x (未使用)

- グループid 1000

- グループメンバー (サブグループ)

グループのメンバーを確認する

groups ubuntu

groups paiza root syslog


③ ユーザーidやグループidを表示

id ubuntu


cat /etc/group > output.txt


◆05:グループを追加しよう (3:26)

Linuxのグループに対する基本操作を学習します。

実際に、グループを作成してユーザーを追加してみましょう。


グループを作成する

$ sudo groupadd test-paiza


グループにユーザーを追加する

$ sudo gpasswd -a ubuntu test-paiza


ユーザーにグループを割り当てる

$ sudo usermod -aG test-paiza paiza


グループからメンバーを削除する

$ sudo gpasswd -d ubuntu test-paiza


グループを削除する


$ sudo groupdel test-paiza



◆06:アクセス権限を理解しよう (5:09)

ファイルシステムのアクセス権限について学習します。

Linuxでは、ユーザーとグループに対して、アクセス権限を割り当てます。

まずは、アクセス権限の確認方法を理解しましょう。


lsコマンドの詳細表示

- ファイルタイプ

- パーミション

- ハードリンク数

- オーナー名

- グループ名

- ファイルサイズ

- タイムスタンプ

- ファイル名


パーミッションの種類

- 左の3文字 ： 所有者のアクセス権限

- 中央3文字 ： 所有グループのアクセス権限

- 右の3文字 ： 所有者のアクセス権限


- r：読み込み可

- w：書き込み可

- x：実行可

- -：アクセス権限なし



◆07:アクセス権限を変更しよう (6:16)

ファイルのアクセス権限を変更する方法について学習します。

パーミッションを理解すれば、プログラムを配置した場合、

ファイルに適切にアクセスできるようになります。


①パスワード


username : paiza

password : 12345


② パーミッションをパターンで変更する


$ chmod a+w hello.txt


③ パーミッションのパターン指定

【権限を変えるユーザー】

a：すべてのユーザー

u：所有者のみ

g：所有グループのみ

o：その他のユーザー


【権限に対する操作】

+：追加する

-：削除する


【操作する権限】

r：読み込み権限

w：書き込み権限

x：実行権限


chmod a+w hello.txt



◆08:ジョブスケジューリングを理解しよう (4:49)

Linuxのジョブスケジューリングについて学習します。

ジョブスケジューリングは、指定の時間に指定のプログラムを自動実行する機能です。

この機能を利用することで、1日1回、Webサーバのアクセスログをバックアップしたり、

月に1度、不要なファイルを削除したり、といった自動処理が実現できます。


①ジョブスケジューリングとは

ジョブスケジューリングは、指定の時間に指定のプログラムを自動実行する機能


cron

- 定期的に自動実行

- crondとcrontabコマンドで構成

at

- 1回だけ自動実行

- 標準入力でスクリプトを指定する


②cronデーモンの実行状況を確認

$ /etc/init.d/cron status


③登録してあるジョブを確認

$ crontab -l


④ ジョブを登録/削除する

設定ファイルをvimで開くので、スケジュールを追記する

$ crontab -e


⑤ crontabの書き方

min hour day month week (command)


- min 分 0 ~ 59

- hour 時 0 ~ 23

- day 日 1 ~ 31

- month 月 1 ~ 12

- week 曜日　0 ~ 6 (0が日曜日)


「/」で、後に続く間隔で処理を実行する



◆09:Linuxの地域設定を理解しよう (6:26)

Linuxの地域設定について学習します。

地域設定により、言語や通貨・タイムゾーンなどを利用者の

地域に合わせることができます。


①主な地域設定

- locale：OSを利用する地域を表す情報


- timezone：OSを利用する地域の時間帯

- Local time：現地時間

- Universal time：世界標準時

- RTC time：ハードウェア時間


② ロケールを確認する

locale


③追加できるロケールを確認する

locale -a


④日本語ロケールを追加する

sudo apt update

sudo apt install language-pack-ja

export LANG=ja_JP.utf8


⑤タイムゾーンを確認する

timedatectl

date


⑥ローカルのタイムゾーンを変更する

sudo timedatectl set-timezone Asia/Tokyo



--------------------------------------------------------

Linux入門編5: シェルスクリプトを使ってみよう (全11回)








◆01:シェルスクリプトの概要を理解しよう (2:14)

シェルスクリプトの概要を学習します。

シェルスクリプトは、どんなもので、どんな役割を持っているのか理解しましょう。







◆02:シェルスクリプトで Hello world (4:03)

シェルスクリプトのはじめの一歩として、定番の「Hello world」を出力します。

シェルスクリプトの初歩的な書き方から実行まで、シェルスクリプトの基本操作を学習しましょう。








◆03:シェルスクリプトで文字列を変数に代入しよう (5:27)

シェルスクリプトで変数の使い方を学習します。

文字列を変数に代入して、それを出力してみましょう。

シェルスクリプトで、文字列と変数を扱う場合のポイントも学習します。






◆04:シェルコマンドで計算しよう (2:56)

シェルスクリプトで計算する方法を学習します。

基本的な計算をシェルスクリプトでどのように実現するのか、実際に試してみましょう。






◆05:計算結果を変数に代入しよう (3:13)

シェルスクリプトで計算する方法を学習します。

計算結果を変数に代入して、出力してみましょう。






◆06:シェルスクリプトで条件分岐 (4:15)

シェルスクリプトの条件分岐について学習します。

ifコマンドを使って、条件に合わせて、処理を分岐させましょう。






◆07:複数の条件を組み合わせよう (3:32)

シェルスクリプトのifコマンドで、複数の条件を組み合わせる方法を学習します。

そのために、「else」と「elif」を使ってみましょう。






◆08:シェルスクリプトでデータを受け取ろう (3:34)

シェルスクリプトでデータを受け取る方法を学習します。

if文を例にして、引数と標準入力を使ってみましょう。






◆09:いろいろな条件で分岐しよう (4:28)

if文を使って、数値の大小を比較する方法を学習します。

そのために、testコマンドの条件式を使ってみましょう。





◆10:ループ処理を使いこなそう (3:45)

シェルスクリプトのループ処理について学習します。

forコマンドを使って、処理対象を１つずつ取り出して、

繰り返し処理してみましょう。





◆11:ループ処理と標準入力を組み合わせよう (4:02)

ループ処理と標準入力を組み合わせます。

そのために、条件が成立する間、繰り返し処理を実行する

「while」コマンドを使います。