8
6

More than 1 year has passed since last update.

Linuxの基本まとめてみた

Last updated at Posted at 2021-12-16

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文字の文字列

参考: https://4thsight.xyz/1664

ディレクトリ構成

Linux系OSのディレクトリ構成の標準規格は下記の通りです。
スクリーンショット 2022-02-01 12.20.36.png

まとめ

Linuxの基本をまとめました。

現時点でも細かいサーバーの操作をするときにはLinuxの知識が必要なので、この辺りの知識はざっくり頭に入れておくほうがよいでしょう。

8
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
6