はじめに
IT未経験者がLinuxの基礎コマンドを理解するためにブログを執筆致します。
また、本記事は以下の教材を元にインプット致しました。
参照:https://www.udemy.com/course/unscared_linux/?couponCode=24T5MT071025
https://linuc.org/textbooks/linux/
Linuxの基礎知識
Linuxを勉強するにあたり、習得すべき基礎知識を掲載いたします。
Linuxはファイルからできている
Linuxで扱う情報(データ)は「ファイル」として扱われる。システム全体も1つ1つのファイルとして構成されている。ハードディスク、キーボードといった入力装置はそれぞれファイルが割り当てられており、そのファイルを介して機器を操作することもできる。Linxでは全てがファイルとして表現されている。
ディレクトリ
ファイルを整理する入れ物のこと
windowsやmacOsでいうフォルダのこと。
コマンドライン引数(ひきすう)
コマンドの後ろにスペース区切りで指定する文字列のこと
cd /user
オプション
コマンドの動作を変える事ができる。
ハイフンに何かの記号を続ける引数のこと
$ ls -a
$ ls -a -l
$ ls -al
$ ls -al /
cd
cdコマンド:ディレクトリを移動するコマンド
略称:chage directory
書式:cd [オプション][ディレクトリ]
cd /home/gushiken
ディレクトリ | 意味 | 指定方法 |
---|---|---|
カレントディレクトリ | 現在自分がいるディレクトリ | 「.」 |
親ディレクトリ | 一つ上の階層のディレクトリ | 「..」 |
ホームディレクトリ | /home/ユーザー名 ユーザーが自由に使えるディレクトリ | 「~」 |
ルートディレクトリ | 一番上のディレクトリ ルートディレクトリを頂点とした階層構造 | 「/」 |
pwd
pwdコマンド:カレントディレクトリを表示するコマンド
略称:print name of working directory
書式:pwd [オプション]
pwd/home/gushiken
今いるディレクトリがわからなくなったら、pwdコマンドで確認していこう!
ls
lsコマンド:ファイルやディレクトリの一覧を表示するコマンド
略称:list
書式:pwd [オプション] [ディレクトリ・ファイル名]
$ ls/
bin/dev/home
$ ls/ /user
/:
bin/dev/home
各種オプション
-l : ファイルの詳細情報を表示する。
$ ls -l
drwxr-xr-x 2 user staff 64 2 5 12:37 hosts
-a : 隠しファイルも含めた全てのファイルを表示する。
$ ls -a
.bashrc
.で始まるファイルは隠しファイルとみなして通常は表示されない。
-F : ファイル種別を表示する
$ ls -F
.bin@ dev/ home/
/はディレクトリ、@はシンボリックリンク、*は実行可能ファイル、記号なしは通常ファイルを指す。
mkdir
mkdirコマンド:ディレクトリを作成するコマンド
略称:make directory
書式:mkdir [オプション] <作成するディレクトリ名>
$ mkdir okinawa
各種オプション
-p : 深いディレクトリを一度に作成する
$ mkdir -p okinawa / ishigaki
-pオプションをつけるとokinawa、ishigakiというディレクトリを作らなくて良い!
rmdir
rmdirコマンド:空のディレクトリを削除するコマンド
略称:remove directory
書式:rmdir <ディレクトリ名>
$ rmdir okinawa
空でないディレクトリを削除しようとするとエラーになる。ファイルが残っていることに気付かずにディレクトリを削除する事故が防げる。
cat
catコマンド:ファイルの中身を表示するコマンド
略称:concatenate
書式:cat [オプション] <ファイル名>
$ cat file
okinawa
$ cat file1 file2
okinawa
ishigaki
各種オプション
-n : 行番号を表示する
$ cat -n file1 file2
1 okinawa
2 ishigaki
less
lessコマンド:ファイルの中身をスクロール表示するコマンド
略称:less-opposite of more
書式:less [オプション] <ファイル名>
$ less/etc/bashrc
長いファイルの中身を見たい時に便利である。
スクロールの操作 : vimと同様、検索も基本的に同じ
コマンド | 効果 |
---|---|
k | 上に移動 |
j | 下に移動 |
スペースキー、f | 1画面下にスクロール |
b | 1画面上にスクロール |
q | lessコマンドを終了 |
/検索名 | 上方向から検索した単語に移動 |
?検索名 | 下方向から検索した単語に移動 |
n | 次の検索結果に移動 |
N | 前の検索結果に移動 |
tail
tailコマンド:指定したファイルの末尾部分を表示するコマンド デフォルトでは、末尾の10行を表示する。
略称:tail
書式:tail [オプション] <ファイル名>
$ tail okinawa file
割愛
オプション
-n : 末尾の5行を表示する
$ tail -n 5 okinawa file
割愛
touch
touchコマンド:空のファイルを作成するコマンド
略称:touch
書式:touch <ファイル名1> <ファイル名2>
$ touch okinawa.md
ファイル名が存在していないときは、空のファイルを作成する
存在する時は、タイムスタンプ(日時)を更新する。
touchコマンドでのファイル作成は間違って既存のファイル名を指定しても、内容が上書きされたり削除されたりしないため安全である。
rm
rmコマンド:ファイル・ディレクトリを削除するコマンド
略称:remove
書式:rm [オプション] <削除するファイル名1> <削除するファイル名2>
$ rm okinawa
rmコマンドを実行すると、ゴミ箱ではなく本当に削除されるので注意が必要である。
オプション
-r : ディレクトリも合わせて削除
$ rm -r dir
ディレクトリの中のファイルやディレクトリもまとめて削除されるので注意が必要である。
-f : ファイル削除時に警告文を表示しない
$ rm -f file
-i : ファイル削除時に確認をする
$ rm -i file
mv
mvコマンド:ファイルの移動、ファイル名を変更するコマンド
略称:move
書式:mv [オプション] <移動元> <移動先>
$ mkdir dir
$ touch file
#ファイル名を変更
$ mv file file1
#ファイルを移動
$ mv file dir1
オプション
-i : 上書きする前に確認する
$ mv -i Okinawa Okinawa1
cp
cpコマンド:ファイル・ディレクトリをコピーするコマンド
略称:copy
書式:cp [オプション] <コピー元> <コピー先>
#ファイルをコピー
$ cp file newfile
#ファイルをディレクトリ内にコピー
$ mv file dir
警告
ディレクトリをコピー先に指定する時に注意
コピー先のディレクトリ内にあるファイルがすでにあると上書きされるので注意が必要である。
オプション
-i : 上書きする前に確認する
$ cp -i file new_file
-r : ディレクトリをコピー
$ cp -r dir new_dir
各種詳細情報
lnコマンドをまとめる前に必要な詳細情報を記載致します。
リンクを貼る
Linuxではファイルに別名をつける事ができ、別名をつけることを指す。
ハードリンク
1つのファイルの実体に複数の名前をつける機能 ハードリンクで追加したファイル名はどちらが本物or仮という区別はない。 どちらも本物の名前である。 元のファイルを削除しても消えない 全てのハードリンクがなくなった時に削除される。
シンボリックリンク
リンク先のパス名が書かれた小さな特殊ファイル リンク先がファイルの実体であり、本物のファイル windowsのショートカットのようなもの。 シンボリックリンクを残したまま、ファイルの実体を削除したりファイルを移動すると、ファイルを参照できなくなる。
ln
lnコマンド:リンク張るコマンド
略称:link
書式:ln [オプション] <リンク元ファイル> <リンク名>
#ハードリンクを張る
$ ln file1 file2
#シンボリックリンクを張る
$ ln -s file1 file2
リンクはどういう時につかうのか?
長いパス名を省略したい時や
複数バージョンを共存させ最新を区別したい時につかう!
find
findコマンド:ファイルを検索するコマンド
略称:find
書式:find <検索開始ディレクトリ> <検索条件> <アクション>
$ find .-name README.md -print
↑ ↑ ↑
検索開始 検索条件 検索アクション
ディレクトリ
ファイルがどこにあるか探す時に使うと便利である。
オプション
-name : ファイル名を指定してファイルを検索 ファイル名の大文字小文字は区別する
$ find . -name README.md
# ワイルドカードが使える ※を使って指定する時は''で囲うこと
$ find . -name '※.html' -print
-iname : ファイル名を指定してファイルを検索 ファイル名の大文字小文字は区別しない
$ find . -iname readme.md
-type : ファイルの種類で検索
#-type fは通常ファイル
$ find . -type f -print
#-type lはシンボリックリンク
$ find . -type l -print
#-type dはディレクトリ
$ find . -type d -print
-a : 複数の検索条件を指定 -aは省略可能
$ find . -type d -a -name images -print
chmod
chmodコマンド:ファイルやディレクトリのパーミッションを設定する。
パーミッション:ファイルやディレクトリを「誰がどのように操作できるか」を定めたのがパーミッション -:通常ファイル、l:シンボリックリンク、d:ディレクトリ
-rwxr-xr-x
↑ ↑ ↑ ↑
-:ファイルタイプ、rwx:オーナーのパーミッション、r-x:グループのパーミッション、
r-x:その他のパーミッション
略称:change mode
書式:chmod[ugoa][+-=][rwx] <ファイル名>
記号 | 内容 |
---|---|
u | 所有者の権限 |
g | グループの権限 |
o | その他のユーザーの権限 |
a | 全ユーザーの権限 |
+ | 権限を追加 |
- | 権限を削除 |
= | 記述した権限にする |
r | 読み取り |
w | 書き込み |
x | 実行 |
#ファイルに対して所有者に対して読み取りの権限を追加
$ chmod u+r file
chmodコマンドは数値で指定する場合もある
書式:chmod <8進数の数値> <ファイル名>
パーミッション | 数値 | オーナー | グループ | その他 |
---|---|---|---|---|
r(読み取り) | 4 | rwx | r-x | r-x |
w(書き込み) | 2 | 421 | 41 | 41 |
x(実行) | 1 | 7 | 5 | 5 |
$ chmod 755 file
オーナー、グループ、その他の権限を数値で指定
通常の指定は相対指定、数値指定は絶対指定という。
chown
chownコマンド:ファイルやディレクトリの所有者を変更するコマンド
補足:chownコマンドは、管理者ユーザー権限で行われないと権限なしで操作できない場合がある。sudoコマンドで管理者ユーザ権限に変更する必要がある。
略称:change owner
書式:chown [オプション][ユーザー名][:[グループ]][ファイル]
#sudoコマンドを使って、オーナーをgushikenに変更する
$ sudo chown gusiken file
drwxr-xr-x 3hogehoge user 98 2 11:54 dir1
-rw-r--r-- 1gushiken user 96 5 12:53 file
#グループをokinawaに変更する
$ sudo chown :okinawa file
drwxr-xr-x 3hogehoge user 98 2 11:54 dir1
-rw-r--r-- 1gushiken okinawa 96 5 12:53 file
オプション
-c : 変更があった時にエラーメッセージを表示する
$ chown -c gushiken file
ps
psコマンド:実行中のプロセスを表示するコマンド
プロセス:実行中のプログラムのこと。コマンドを実行すると実行ファイルをメモリに格納してメモリ上でCPUがプログラムを実行する。プロセスは、同一のコマンドから実行されていても、それぞれ別個のメモリ領域をもつ
略称:process status
書式:ps [オプション]
$ ps
PID TTY TIME CMD
3935 pts/0 00:00:00 ps
2029 pts/0 00:00:00 bash
PID:プロセスID CMD:実行中のコマンド
オプション
aux : 全ユーザのプロセスを詳細情報を合わせて表示する
$ ps aux
割愛
オプションだが-
をつけなくて良い
記号 | 内容 |
---|---|
x | psコマンドを実行したユーザーの全てのプロセス |
a | 全てのユーザーのプロセス |
u | 詳細情報を合わせて表示する |
ジョブとは
ジョブコマンドを説明する前にジョブについて解説致します。
まとめて実行されるプロセスの集まりがジョブ、シェルごとに管理されます。
ジョブとプロセスの違い
ジョブ:そのジョブを実行するシェルで管理されます。
プロセス:プロセスはOS全体で統一して管理される。システムが自動で実行しているプログラムや他のユーザーが実行しているコマンドを一括して管理している。
jobs
jobsコマンド:現在のジョブの一覧を表示するコマンド
略称:jobs
書式:jobs
jobs
[ 1 ] + 実行中 sleep 100 &
ジョブID、実行状況、実行コマンドを表示する
fgコマンド
fgコマンド:ジョブをフォアグラウンドにするコマンド
略称:foreground
書式:fg %<ジョブID>
$ fg %1
bgコマンド
bgコマンド:ジョブをバックグラウンドにするコマンド
略称:background
書式:bg %<ジョブID>
$ bg %1
長い時間がかかる処理をバックグラウンドで実行しコマンドが終了するのを待たなくてよくなる。
killコマンド
killコマンド:ジョブやプロセスを終了させるコマンド(シグナルを送信するコマンド)
略称:kill process
書式:kill [オプション] %<ジョブID>
kill [オプション] %<プロセスID>
$ kill %1
$ kill 4965
フォアグラウンドのジョブはCtrl+cで終了できる
停止中やバックグラウンドのジョブはkillコマンドで終了できる。
補足
#デフォルトでは、TERMという終了を指示するシグナルを送信している。この2つのコマンドは同じ
$ kill 4965
$ kill -TERM 4965
時々使うシグナル
#強制終了のシグナル SIGKILL この2つのコマンドは同じ
$ kill -SIGKILL 4965
$ kill -9 4965
まとめ
はじめてLinuxについて学んだ。Udemyの動画や標準教科書が読みやすくて勉強自体も楽しめた。
Linuxは必須の技術であり、ここでがっつり学べたので自分の血肉となった。
コマンドは打ち込むことではじめて使えるようになるので実践あるのみだと感じた。
これからも、コツコツ勉強を継続していこうと思います。