はじめに
今回は学習用outputとしてLinuxのコマンドをまとめています。
ディレクトリ
ディレクトリとは
ファイルが保存されている場所のこと
windowsやMacのフォルダと同じ構造
ディレクトリは入れ子構造になっている
ディレクトリの構造
ルートディレクトリを頂点とした階層構造になっている
一番上の 「/」 をルートディレクトリと呼ぶ
主要なディレクトリの役割
/bin
一般ユーザー及び管理ユーザーの両方が使用するコマンドの実行ファイルを格納
特にLinuxの動作に最低限必要な重要度の高いコマンドの実行ファイルを格納
/dev
デバイスファイル(ハードウェアをファイルとして扱えるようにしたファイル)を格納
/etc
設定ファイルを格納。 Linuxで動作するアプリケーションの設定ファイルや、Linux自体の設定に関わるファイルが置かれる
/home
ホームディレクトリが配置される。ユーザーはホームディレクトリ内に自由にファイルやディレクトリを作成できる
cdコマンド(change directory)
ディレクトリを移動するコマンドでLinux必須
書式:cd[オプション(覚えなくてOK)][ディレクトリ]
具体例:$cd/home/*****/
特別なディレックトリの指定
カレントディレクトリ、親ディレクトリ、ホームディレクトリには特別な指定方法がある
ディレクトリ | 意味 | 指定方法 |
---|---|---|
カレントディレクトリ | 現在自分がいるディレクトリ | . |
親ディレックトリ | 1つ上の階層のディレクトリ | .. |
ホームディレクトリ | 「/home/ユーザー名」ディレクトリ | ~ |
ルートディレクトリ | 「 / ]ディレクトリ | / |
シェル、ターミナルを立ち上げると自動的にホームディレクトリに入るようになる
pwd(print name of working directory)
カレントディレクトリを表示するコマンド
書式:pwd[オプション] オプションを打つことはほぼない
具体例:$ pwd (home/fukushima)
今いるディレクトリがわからなくなったらpwdコマンドで確認する
ls(list)
ファイルやディレクトリを表示するコマンド
書式:ls[オプション][ディレクトリ・ファイル名]
具体例: ls/
パス名展開とは
パス名展開を使うと複数のファイルを一度に指定できる
記号 | 意味 |
---|---|
* |
任意の文字列 |
? |
任意の一文字 |
具体例
①拡張子が.HTMLのファイルの一覧を表示
$ls*.html
index.html home.html job.html
②Zから始まり4文字で終わるファイルを表示
$ls /bin/z???
/bin/zcat,/bin/zcmp,/bin/znew
パス名展開はシェルの機能であるため他のコマンドでも使用可能
オプションとは
ハイフンに何かの記号を続ける形の引数をオプションという
コマンドにオプションを与えることで、コマンドの動作を変えることができる
<書き方>
①コマンドの後ろにスペース区切りで指定する($ls-a)
②2つ以上指定できる($ls-a-lと$ls-alは同じ意味)
③オプションとコマンドの引数を同時に指定できる($ls-al/)
④オプションが引数を取ることもある($ls-w 10)
⑤「--」で始まるロングオプションもある($ls --version) 長い名前をつけるときに使用する
lsコマンドでよく使うオプション
オプション | 操作 |
---|---|
-l |
ファイルの詳細情報を表示する |
-a |
隠しファイルも含めた全てのファイルを表示する |
-F |
ファイル種別を表示する |
.で始まるファイルは隠しファイルと見なされ通常は表示されない
ファイルの記号
記号 | 内容 |
---|---|
/ | ディレクトリ |
@ | シンボリックファイル |
* | 実行可能ファイル |
記号なし | 通常ファイル |
mkdirコマンド(make directory)
ディレクトリを作成するコマンド
書式:mkdir[オプション]<作成するディレクトリ名>
具体例:codeディレクトリを作成する
$ mkdir code
ディレクトリ名は日本語で作成すると文字化けする恐れがあるため英語で作成するのがおすすめ
[ ]は任意、< >は必須という意味になる
mkdirコマンドのオプション
深いディレクトリを作成できる
-p
書式:$ mkdir -p test/2019/08
-pオプションを付けることでtest,2019というディレクトリを事前に作る必要なし
rmdirコマンド(remove directory)
空のディレクトリを削除するコマンドで中にファイルが残っていることに気づかずにディレックトリを削除しいてしまうのを防げる
書式:rmdir <ディレクトリ名>
具体例:$ rmdir code
空でないディレクトリを削除しようとするとエラーになる
パスとは何か
ディレクトリやファイルの住所情報
ディレクトリの階層の区切りを「/」で表現する
相対パスと絶対パス
絶対パスはルートディレクトリ(「/」)から始まるパス
相対パスはカレントディレクトリから始まるパス
使い分け
確実に指定したいとき(曖昧さをなくす)は絶対パス
ぱっと指定したい時は相対パス
特別なディレクトリ表記
**「.」**はカレントディレクトリを表す
**「..」**は親ディレクトリを表す
表記方法
相対パス | 絶対パス |
---|---|
../.. | / |
.. | /home |
. | /home/kume |
codeまたは./code | /home/kume/code |
code/workまたは./code/work | home/kume/code/README.md |
コマンドの使い方を調べよう
- --helpオプションをでコマンドのヘルプメッセージを表示する
書式:<コマンド> --help
具体例:$ls--help
使用法:ls[オプション]...[ファイル]
使用方法、コマンドの概念、利用可能なオプション一覧を教えてくれるためコマンドの概念を理解したいときに使用
- manコマンドでコマンドのマニュアルを表示する
書式:man<調べたいコマンド名>
具体例:$ man ls
NAME
ls-list direstory contents
$ man -k move #キーワードからも検索できる
helpオプションより詳しいためコマンドをきちんと理解したい時に使用(manの方が有用)
ファイル
ファイルの種類
テキストファイルとは
- 文字コードで定められた文字だけが格納されているファイル
- 文字コードとは文字をコンピュータで処理したり通信したりするために文字の種類に数値を割り振ったもの
- Linuxではテキストファイルはとても大切。OSに関わるほとんどの設定情報をテキストファイルとして管理している
コンピュータの中では文字は特定の数値の並びで表現されている
ex)Aは1000001、Bは1000010、など
バイナリファイルとは
画像ファイルや音声ファイル、実行ファイルのこと
- 文字コード以外の数値も含むようなファイルをバイナリファイルという
- テキスト以外のファイルをバイナリファイルと呼ぶ
- catコマンドなどでバイナリファイルが文字化けするのは、無理矢理テキストファイルとして解釈しようして、文字コードに該当した数値をその文字に置き換えてしたため意味不明の文字列になった
catコマンド(concatenate)
ファイルの中身を表示する(いくつかあるがcatコマンドが代表的)
書式:cat[オプション]<ファイル名>
具体例:$cat/etc/hosts
127.0.0.1 localhost
::1 localhost6
catコマンドのオプション
-n
: 行番号を表示するオプション
#ファイルの詳細情報を表示
$cat-n/etc/hosts
1 127.0.0.1 localhost
2 ::1 localhost6
#複数のファイルをまとめて表示することもできる
$cat/etc//hostname /etc/hosts
local.localdomain
127.0.0.1 localhost ←/etc/hostnameの内容
::1 localhost6 ←/etc/hostsの内容
lessコマンド(less -opposite of more)
ファイルの中身をスクロール表示するコマンド
長いファイルはcatよりlessを使う
書式:less[オプション]<ファイル名>
具体例:$ less/etc/vimrc
if v:lang=~...
スクロールの操作方法
コマンド | 内容 |
---|---|
スペースキー、f | 一画面下にスクロール |
b | 一画面上にスクロール |
j | 一行下にスクロール |
k | 一行上にスクロール |
q | lessコマンドを終了 |
検索の操作
特定の文字列を検索してその箇所だけをみたいときに使用
コマンド | 内容 |
---|---|
/<文字列> | 下方向に向かって検索 |
?<文字列> | 上方向に向かって検索 |
n | 次の検索結果に移動 |
N | 前の検索結果に移動 |
tailコマンド
指定したファイルの末尾部分を表示するコマンド
書式:tail[オプション]<ファイル名>
オプション
コマンド | 内容 |
---|---|
-n 行数, -行数 | 指定した行数を表示 |
-c バイト数 | 指定したバイト数を表示する |
-f | ファイルの末尾に表示された行を表示し続ける |
touchコマンド(touch)
空のファイルを作成するコマンド
書式:touch<新規ファイル名1>、<新規ファイル名2>...
具体例:$touch README.md
ファイル名が存在していない時は空のファイルを作成して、存在している時はタイムスタンプを更新する
間違ったファイルを指定しても上書きすることはない!
rmコマンド(remove)
ファイルを削除するコマンド
書式:rm[オプション]<削除するファイル名1><削除するファイル名>...
具体例:$rm README.md
rmコマンドを実行するとゴミ箱ではなく削除されてしまうため注意
よく使うオプション
-r
:ディレクトリも合わせて削除する
$rm-r dir
ディレクトリの中のファイルやディレクトリもまとめて削除されるため注意
-f
:ファイルを削除する前に警告文を表示しない
$rm-f file
-i
:ファイルの削除前に確認する
$rm-i file
mvコマンド(move)
ファイルの移動、ファイル名を変更するコマンド
書式:mv[オプション]<移動元>...<移動先>
具体例:$ mkdir dir
$ touch file
#ファイル名を変更
$ mv file file1
#ファイルを移動
$ mv file1 dir/
mvコマンドオプション
i
:上書きする前に確認する
$ mv -i file file1
cpコマンド(copy)
ファイルやディレクトリをコピーするコマンド
書式:cp[オプション]<コピー元>...<コピー先>
具体例:# ファイルをコピー
$cd file new_file
#ファイルをディレクトリ内にコピーする
$cd file dir
コピー先のファイルがすでにあると上書きするので注意
cpコマンドのオプション
-i
:上書きをする前に確認する
$cp -i file new_file
-r
:ディレクトリをコピーする
$ cp-r dir new_dir
リンクを貼る
Linuxではファイルに別名を付けることができる。このことを「リンクを貼る」という。
ハードリンク
- 1つのファイルの実態に複数の名前をつける機能
- 元のファイルを削除しても消えない
- 全てのハードリンクがなくなった時に消える
シンボリックリンク
- リンク先のパス名が書かれた特殊ファイル。リンク先がファイルの実体
- シンボリックリンクを残したままファイルの実体を削除したり、ファイルの移動するとファイルを参照できなくなる
lnコマンド(link)
リンクを貼るコマンド
書式:ln[オプション]<リンク元のファイル名><リンク名>
具体例:# ハードリンクを貼る
$ln file1 file2
オプションを何もつけないとハードリンクになる
lnコマンドのオプション
-s
:シンボリックリンクを貼る
$ls -s file1 file3
リンクはどういう時に使うのか?
- 長いパス名を省略する時
- 複数バージョンを共存させ最新を区別したい時
シンボリックリンクの方が使うことが多い。ハードリンクはいくつか制限があって、異なるディレクトリをまたいで作成できなかったり、ディレクトリに対して使えない。シンボリックリンクは制限を受けない。
find
ファイルを検索するコマンド
書式:find<検索開始ディレクトリ><検索条件><アクション>
具体例:$find.-nameREADME.md-print
ファイルがどこにあるかを探すときfindコマンドを使うと便利
よく使われる検索条件
-name
ファイル名を指定してファイルを検索。ファイル名の大文字、小文字は区別する
書式:$find.-nameREADME.md
ワイルドカードが使える。*を使って指定する時は"で囲うこと
ex)$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(change mode)
ファイルやディレクトリのパーミッションを設定する
書式:chmod[ugoa][+-=][rwx]<ファイル名>
具体例:$chmod u+r file
詳細
記号 | 内容 |
---|---|
u | 所有者の権限 |
g | グループの権限 |
o | その他のユーザーの権限 |
a | 全ユーザーの権限 |
+ | 権限を追加 |
- | 権限を削除 |
= | 既述した権限にする |
chmodコマンドを数値で指定する方法
書式:chmod<8進数の数値><ファイル名>
具体例:$chmod 755 file
詳細
パーミッション | 数値 |
---|---|
r(読み取り) | 4 |
w(書き込み) | 2 |
x(実行) | 1 |
数値で置き換えてその数字を足し合わせる
通常の指定は相対指定、数値指定は絶対指定の書き方となる
プロセス
実行中のプログラムのことをプロセスという
コマンドを実行すると、実行ファイルをメモリに格納して、メモリ上でCPUがプログラムを実行する。一つ実行すると新しいプロセスが一つ作られる
chownコマンド
ファイルやディレクトの所有者を変更するコマンド
chownコマンドは管理者ユーザー権限で行われないと、権限なしで操作できない場合があるため管理者権限のアカウントで操作する
書式:$ chown 所有者名 ファイル名またはディレクトリ名
chownコマンドのオプション
オプション | 内容 |
---|---|
-c | 変更があった場合に、メッセージを表示する |
-v | コマンドの実行状況を表示 |
-f | エラーメッセージを表示しない |
-h | シンボリックリンク自体の所有者を変更する |
-R | ディレクトリ内の所有者も変更する |
-Rはよく使われる
psコマンド(process status)
書式:ps[オプション]
具体例:$ps
PDI TTY TIME CMD
3935 pts/0 00:00:00 ps
20961 pts/0 00:00:00 bash
一行ずつが一つのプロセス
PIDにプロセスIDが、CMDに実行中のコマンドが表示されている
psコマンドのオプション
aux
:全ユーザーのプロセスを詳細情報を併せて表示
```
$ps aux
-はつけなくてOK
xがpsコマンドを実行したユーザーの全てのプロセス
aが全てのユーザーのプロセス
uが詳細情報を合わせて表示する
ジョブ
まとめて実行されるプロセスの集まり。シェルごとに管理される。
プロセスは3つ生成される
$ps aux|grep bash|less
ジョブは1つ生成される
ジョブとプロセスの違い
- プロセスはOS全体で統一して管理される。システムが自動で実行しているプログラムや他のユーザーが実行しているコマンドを一括して管理
- ジョブはそのジョブを実行するシェルで管理される
バックグラウンドとフォアグラウンド
シェルの画面外でコマンドを実行することをバックグラウンド
シェルの画面内で実行することをフォアグラウンド
jobsコマンド(jobs)
現在のジョブの一覧を表示するコマンド
書式:$ jobs
具体例:$jobs
[1]+ 実行中 sleep 10&
ジョブID、実行状況、実行コマンドを表示
fgコマンド(foreground)
ジョブをフォアグラウンドにするコマンド
書式:fg%<ジョブID>
具体例:$fg%1
ジョブをフォアグラウンドに戻して対話的に操作したいときに使う
bgコマンド(background)
ジョブをバックグラウンドにするコマンド
書式:bg%<ジョブID>
具体例:$bg%1
長い時間がかかる処理をバックグラウンドを実行することでコマンドが終了するのを待たなくてもいい
killコマンド(kill process)
ジョブやプロセスを終了させるコマンド
書式:kill[オプション]%<ジョブID>
kill[オプション]<プロセスID>
具体例:$kill %1
$kill 4965
フォアグラウンドのジョブはctrl+cで終了できる
停止中やバックグラウンドのジョブはkillコマンドで終了できる
killコマンドの補足
- 正確にはシグナルを送信するコマンド
$kill-<シグナル名><プロセスID>
- デフォルトではTERMという終了を指示するシグナルを送信している
#この2つのコマンドは同じ
$kill 4965
$kill -TERM 4965
- SIGKILLという強制終了のシグナルを時々使う(最終手段)
$kill-SIGKILL 4965
$kill -9 4965
さいごに
今回はUdemyでLinuxを学びました。Linuxの勉強をしたいけど何をしたらいいのか分からない方はぜひ以下の動画を視聴してみてください。
Udemy
「もう怖くないLinuxコマンド。手を動かしながらLinuxコマンドラインを5日間で身に付けよう」
作成者:山浦 清透