Linuxの基本まとめてみた
Linuxの基本操作まとめをまとめてみました。
Linuxとは
■ Linuxの特徴
- オープンソースであり、無料で誰でも利用できる
- 品質の高い多くのソフトウェアを利用できる(Apache, HTTPServerなど)
- 世界中で利用されているので信頼性が高い
- 操作を自動化するための仕組みが用意されており、サーバーの運用がし易い
■ Linuxの欠点
- ドキュメントが英語ばっかり
- ソフトウェアによって日本語が文字化けする
シェルとは
Linuxカーネルは直接人間が操作できるようになっていないため。
ユーザーとカーネルの間に命令を伝達するユーザーインターフェースが必要です。
このユーザーインターフェースを担うのがシェルになります。
有名なシェルの種類
■ sh
シェルスクリプトを描くときにより利用される。
■ bash
shを基本として、機能を拡張したシェル。
多くのLinuxのログインシェルとして利用されています。
■ zsh
比較的新しいシェルで、bashtcshをはじめとした他のシェルの機能を積極的に取り込み、さらに独自の拡張を加えたシェル。
高機能な分、全ての機能を覚えるのが難しいですが、慣れれば他のシェルを圧倒します。
シェルの種類はたくさんありますが、初心者におすすめなのはbashです。
Linuxのデフォルトシェルで、利用する機会も多いです。
ファイルとディレクトリの基本コマンド
コマンド | 機能 |
---|---|
pwd | カレントディレクトリを表示 |
cd | カレントディレクトリを変更 |
ls | ディレクトリ内のファイルを表示 |
lsコマンド
lsはファイルやディレクトリを一覧表示するコマンド
例) ディレクトリを引数にしてlsコマンド実行
➜ ~ ls /
Applications Library System Users Volumes bin cores dev etc home opt private sbin tmp usr var
lsに-lオプションをつけると、ファイル名だけではなくファイル属性を同時に表示します。
➜ sugi-selfcare-rails git:(feature/new_guest_user) ✗ ls -l
total 912
-rw-r--r-- 1 root root 3115 11 1 13:52 Gemfile
-rw-r--r-- 1 root root 23015 11 8 13:35 Gemfile.lock
-rw-r--r-- 1 root root 8385 9 2 18:33 README.md
-rw-r--r-- 1 root root 258 9 2 18:33 Rakefile
ファイル操作の基本コマンド
mkdirコマンド
mkdir [オプション]<作成するディレクトリ>
新規でディレクトリ作成する時のコマンド
https://www.k-tanaka.net/unix/mkdir.php
touchコマンド
touch <新しいファイル名1> <新しいファイル名2>...
新規でファイル作成する時のコマンド
https://www.k-tanaka.net/unix/touch.php
rmとrmdirコマンド
rm [オプション]<削除するファイル名>
rmdir <削除するディレクトリ>
rmでファイル削除、rmdirでディレクト削除できます。
https://www.k-tanaka.net/unix/rm.php
https://www.k-tanaka.net/unix/rmdir.php
catコマンド
cat [オプション]<ファイル名>
ファイルの中身を確認したいときに利用するコマンド
https://academy.gmocloud.com/lesson/20191111/8091
lessコマンド
less [オプション]<ファイル名>
「less」は、テキストファイルを1画面ずつ表示するコマンド
https://atmarkit.itmedia.co.jp/ait/articles/1702/10/news022.html
cpコマンド
cp [オプション]<コピー元>...<コピー先>
ファイルをコピーするためにはcpコマンドを利用します。
https://www.k-tanaka.net/unix/cp.php
mvコマンド
mv [オプション]<移動元>...<移動先>
ファイルを移動させるにはmvコマンドを利用します。
mvコマンドの使い方はcpコマンドと似ており、移動先がファイルかディレクトリかで意味が変わります。
https://www.k-tanaka.net/unix/mv.php
lnコマンド
ln [オプション]<リンク元ファイル名>...<リンク名>
Linuxファイルシステムでは、ファイルに別名をつけることが可能です。この機能をリンクと言います。
別名をつけることでリンクを貼ることが可能です。
リンクファイルには、ハードリンクとシンボリックリンクがある。
ハードリンク → 複数の実名を付ける処理
シンボリックリンク → 別名を付ける処理(シンボリックリンクを作成すると,新たにファイルが生成され,その内容として,リンク先のファイル名とパスが保持される)
基本的にはシンボリックリンクを利用するケースが多い。
https://www.k-tanaka.net/unix/ln.php
探す、調べるの基本コマンド
findコマンド
find [検索開始ディレクトリ]<検索条件><アクション>
その名の通り、ファイルを探すコマンドです。他のコマンドと比べてオプションが多いのでググりながら利用がおすすめ。(もしくはhelpオプションで調べる)
https://eng-entrance.com/linux-command-find
manコマンド
man <調べたいコマンド名>
manは指定したコマンドのオンラインマニュアルを表示するコマンドです。
一々、web見に行くのだるい場合はこのコマンドで調べる方が早いです。
https://eng-entrance.com/linux-command-man
whichコマンド
which [オプション]<コマンド名>
whichコマンドは指定されたコマンド名をサーチパスから探して、見つかった実行ファイルのフルパスを表示します。
https://atmarkit.itmedia.co.jp/ait/articles/1703/16/news020.html#:~:text=which%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%81%A8%E3%81%AF%EF%BC%9F,%E3%83%95%E3%83%AB%E3%83%91%E3%82%B9%E3%82%92%E8%A1%A8%E7%A4%BA%E3%81%97%E3%81%BE%E3%81%99%E3%80%82
bashの設定について
bashの設定ファイル
etc/profile
はシステム全体で使用する設定ファイルです。全てのユーザーに共通の設定を行いたい場合はこのファイルに記載する。
/.bash_profile
は各ユーザー個別の設定ファイルです。
/.bashrc
も各ユーザー個別の設定ファイルです。
/.bash_profile
も/.bashrc
同様にユーザー個別の設定ファイルです。
/.bash_profile
はログインした時だけ読み込まれて、/.bashrc
は起動するたびの読み込まれる特徴があります。
ログイン時のみ一度だけ設定したい場合は/.bash_profile
に、それ以外の場合は/.bashrc
に書き込めばOKです。
ただ、基本的に多くの設定はbashを起動するたびに読み込む必要があるので基本は/.bashrc
に書き込んでおけば問題ないです。
ちなみに設定を変更した場合はsourceコマンドで設定を反映することを忘れがちなので、変更したらsourceコマンドで反映まで一連で覚えておくといいでしょう。
bashをログインシェルとして読み込んだ場合はetc/profile
-> /.bash_profile
-> /.bashrc
の順番に読み込まれます。
エイリアス
既存のコマンドを毎回打つのがだるい時はエイリアス設定がおすすめ。
エイリアス設定例
alias <名前>='<コマンド>'
↓
alias ls='ls-F'
7. ファイルパーミッション、スーパーミッションについて
Linuxは一つのマシンに複数のユーザーが同時ログインして操作することを前提として作られています。
そのため管理権限周りの知識をつけることが大事になります。
ls -l
でパーミッションの確認ができます
例)
-rw-r--r-- 1 user group 9 1月 1 00:00 hoge.txt
drwxr-xr-x 6 user group 20480 1月 1 00:00 ダウンロード
「-rw-r--r--」や「drwxr-xr-x」の先頭の10文字について。
最初の1文字目: ファイル種別※1
2文字目から4文字目:ファイルの所有者に対する権限
5文字目から7文字目:ファイルの所有グループに対する権限
8文字目から10文字目:その他に対する権限
※1: -の場合はファイル、dの場合はディレクトリ、lの場合はシンボリックリンク
例)-rw-r--r--
「ファイル種別」が「ファイル」-> -
「所有者」に「読み取り」と「書き込み」の権限 -> rw-
「所有グループ」に「読み取り」の権限 -> r--
「その他」に「読み取り」の権限 -> r--
記号 | 意味 |
---|---|
r | 読み取り(read) |
w | 書き込み(write) |
x | 実行(excute) |
操作が許可されているときは「r」「w」「x」という記号が表示され。許可されてない時は「-」と表示されます。
権限を変更する
ファイルやディレクトリのパーミッションを変更するには、ファイルモードを変更するchmodコマンドを利用します。
chmod [ugoa][+-=][rwx]<ファイル名>
記号 | 意味 |
---|---|
u | オーナー |
g | グループ |
o | その他のユーザ |
a | ugo全て |
記号 | 意味 |
---|---|
+ | 権限を追加する |
- | 権限を禁止する |
= | 指定した権限と等しくする |
最後のrwxは「読み取り」「書き込み」「実行」を表す
例)オーナーへの書き込み権限を追加
chmod u+w file.txt
例)数値モードによりパーミッションの変更
意味 | 数字 |
---|---|
読み取り(r) | 4 |
書き込み(w) | 2 |
実行(x) | 1 |
例) 「rwxr-xr-x」を数値モード変更
chmod 755 file.txt
オーナー rwx = 7 (rwx = 4+2+1)
グループ = 5 (r-x = 4+1)
その他のユーザー = 5 (r-x = 4+1)
数字 | 2進数 | |
---|---|---|
1 | 001 | --x |
2 | 010 | -w- |
3 | 011 | -wx |
4 | 100 | r-- |
5 | 101 | r-x |
6 | 110 | rw- |
7 | 111 | rwx |
スーパーユーザー
スーパーユーザーとは管理者権限を持つ特別なユーザーです。
スーパーユーザーはあらゆる操作が許可された強い権限を持つユーザーで、パーミッションの影響を受けずに全てのファイルの読み込み、書き込み、削除が可能になります。
スーパーユーザーはユーザー名がrootであることからrootユーザーとも呼ばれます。
sudoコマンドを利用すれば、スーパーユーザーとして実行することが可能です。
例)
sudo cat /etc/shadow
プロセスとジョブについて
Linuxカーネルはディスクから実行ファイルを読み出してメモリに格納し、そのメモリ内容にしたがってCPUがプログラムを実行します。
ここでメモリ上の実行状態にあるプログラムをプロセスと呼びます。
現在動作しているプロセスを確認する場合はpsコマンドを利用します。
$ ps
PID TTY TIME CMD
4460 ttys001 0:22.94 -zsh
36776 ttys003 0:00.02 docker-compose up
36777 ttys003 0:15.46 /usr/local/bin/docker-compose-v1 up
73188 ttys003 0:09.57 -zsh
シェルから見た処理の単位をジョブと呼びます。シェルのコマンドラインに入力している1つの行が、1つのジョブに当たります。
■ ジョブの終了
kill %<ジョブ番号>
■ プロセスの終了
kill <プロセスID>
標準入出力とパイプラインの基本コマンド
Linuxにはテキストを集計したり並べ替えたりといった、テキスト処理を効率よく行うための便利なコマンドがいくつも用意されています。
wcコマンド
wc [オプション] [ファイル]
wcは入力ファイルの行数、単語数、バイト数を数えるコマンドです。
$ wc a.txt b.txt
5 5 55 a.txt
4 4 44 b.txt
9 9 99 total
sortコマンド
行単位でテキストをソートするコマンドです。デフォルトでは、辞書順(アルファベット順)に行を並び替えます。
sort [オプション] [ファイル1]
file1の内容
Hokkaido
Aomori
Iwara
$ sort file1
Aomori
Iwara
Hokkaido
uniqコマンド
連続した同じ内容の行を省略するコマンド。
uniq [オプション] [ファイル]
file2の内容
Hokkaido
Hokkaido
Aomori
Aomori
Iwara
$ uniq file2
Hokkaido
Aomori
Iwara
trコマンド
入力行の一部分を置換するコマンド
tr <置換前の文字> <置換後の文字>
file3.txtの内容
12345
abcde
ABCDE
$ cat file3.txt | tr abc XYZ
12345
XYZde
ABCDE
tailコマンド
ファイルの末尾を表示するコマンドです。デフォルトではファイルの末尾10行が表示されます。
tail [オプション] [ファイル]
例)
$ tail hoge.txt
11
12
13
14
15
16
17
18
19
20
よく使う例としてファイルの追記を監視する方法があります。
ログを監視したい場合とかによく利用します。
tail -f [ファイル]
diffコマンド
2つのファイルの差分を表示するコマンドです。
diff [オプション] <比較元ファイル> <比較先ファイル>
a.txt
aaXa
cccc
dddd
eeee
ffff
gggg
hhhh
iiii
jjjj
kkkk
b.txt
aaaa
bbbb
cccc
dddd
eeee
GGGG
hhhh
iiii
jjjj
kkkk
$ diff a.txt b.txt -u (-u オプションを指定するとユニファイル形式で表示)
--- a.txt 2021-02-14 21:23:13.388019400 +0900
+++ b.txt 2021-02-14 21:07:26.211076200 +0900
@@ -1,9 +1,9 @@
-aaXa
+aaaa
+bbbb
cccc
dddd
eeee
-ffff
-gggg
+GGGG
hhhh
iiii
jjjj
正規表現の基本コマンド
Linuxでは多くのテキストファイルを扱います。そのときに便利なのが正規表現です。
grepコマンド
文字列を検索するコマンド
grep [オプション] <検索パターン> <ファイル名>
例) sample1.txt
red
blue
yellow
green
orange
white
black
$ grep blue sample1.txt
blue
検索やフィルタで使用するメタキャラクタ(ワイルドカード)は、以下のとおりです。
あいまい検索したいときに利用するケースが多いです。
メタキャラクタ | 説明 |
---|---|
* | 0文字以上の文字または文字列 |
? | 任意の1文字 |
[文字列] | [ ]内の任意の1文字 |
[!文字列] | [ ]内の任意の1文字以外 |
a*
-> 「a」「ab」「abc」などのアルファベット小文字「a」から始まる文字または文字列
a?
-> ab」「a1」などのアルファベット「a」から始まる2文字の文字列
a[bcd]
-> 「ab」または「ac」または「ad」
a[!bcd]
-> 「aa」「a1」などのアルファベット「a」と2文字目がbcd以外の2文字の文字列
ディレクトリ構成
Linux系OSのディレクトリ構成の標準規格は下記の通りです。
まとめ
Linuxの基本をまとめました。
現時点でも細かいサーバーの操作をするときにはLinuxの知識が必要なので、この辺りの知識はざっくり頭に入れておくほうがよいでしょう。