LoginSignup
0
1

More than 3 years have passed since last update.

Linuxについて学んだこと

Last updated at Posted at 2020-10-26

Linuxについて学んだことをまとめました。
間違っている情報あれば遠慮なくご指摘ください!

Linuxの種類

RedHat系
Red Hat Enterprise Linux
CentOS
Fedora
Debian系
Debian GNU/Linux
Ubuntu

主なターミナルエミュレータ

Windows
PuTTY
TeraTerm
MacOS
ターミナル
iTerm2
Linux
GNOME端末
Konsole

シェルの種類

シェル 解説
sh AT&Tベル研究所のSteven Bourne氏によって開発されたシェル
Bourneシェルと呼ばれたりBシェルと呼ばれたりもする
もっとも古くからあるシェル
機能は少ない
対話的に使うには非常に不便
csh 古いシェル
Cシェル
shに比べ、対話型操作が便利
文法がshと大きく異なり、欠陥がある
後継でtcshがあるのでほとんど使われない
tcsh cshの後継として開発されたCシェル系のシェル
今はあまり使われない
bash shを基本として機能を拡張したシェル
shと後方互換性を持つ
対話型操作を行う上で十分な機能を持ち、
多くのLinux環境でデフォルトのログインシェルとして使われている
シェルスクリプトを書くのにも向いている
zsh 新しめのシェル
bashやtcshを初めとした他のシェルの機能を積極的に取り込み、更に独自の拡張を加えたシェル
非常に多くの機能を持つ
すべての機能を使いこなすには時間がかかるが、一度慣れれば非常に効率よく作業できるため人気の高いシェル
初心者向けのシェルではない

利用がおすすめされているのはshとの後方互換性のあるbashシェル
tcshやcshを使い始める理由はない
zshは高機能

用語

用語 意味 備考
ヤンク ペーストのこと
ハードリンク ファイルに別名をつけること macやwindowsには恐らくない概念
全てのハードリンクが削除されることでそのファイルが削除される
シンボリックリンク macやwindowsで言うショートカットのこと ショートカット先のファイルが消えると該当のシンボリックリンクはエラーとなる
エイリアス コマンドを使いやすくするための機能
ロケール 言語や国、地域などを特定するための識別子
外部コマンド ファイルシステム上に存在するコマンド
組み込みコマンド シェル自体に内蔵しているコマンド
環境変数 外部コマンドからも値を参照できるようにした変数
パーミッション アクセス権限を表したもの
-rwxrwxrwxのように10文字で表される
1文字目は-なら通常ファイル、dならディレクトリ、lならシンボリックリンク
2〜4文字目はオーナーのアクセス権限、5〜7文字目はグループのアクセス権限、8〜10文字目はその他のユーザーのアクセス権限を表す
rはreadの略で読み取り、wはwriteの略で書き込み、xはexecuteの略で実行を表す
プロセス Linuxカーネルから見た処理の単位。システム全体で一意のIDを持つ
ジョブ シェルから見た処理の単位。シェルごとに一意のIDを持つ
チャネル(チャンネル) channel。データの流れる道
stdin 標準入力 入出力チャネルは0
stdout 標準出力 入出力チャネルは1
stderr 標準エラー出力 入出力チャネルは2
リダイレクト 標準入出力先を変更する機能のこと
パイプライン コマンドの標準出力を別のコマンドの標準入力につなぐ |(半角)を使う
フィルタ 標準入力を入力として受け取り標準出力に出力するコマンド
対話型エディタ エディタでファイルを開いて編集し、保存
非対話型エディタ 与えられたコマンドに対する処理を行い、出力

標準のコマンド

コマンド 意味 備考
shutdown -h now シャットダウン nowの部分は何分後にシャットダウンするかを指定できる
nowだと今すぐにという意味
shutdown -r now 再起動 nowの部分は何分後に再起動するかを指定できる
nowだと今すぐにという意味
date 日付を表示する 2020年 10月 25日 日曜日 01:20:18 JST
echo 文字列の表示
chsh シェルを切り替える ログインできなくなる可能性があり、利用は非推奨
reset ターミナルのリセット
printenv 環境変数一覧表示
pwd 現在のディレクトリを表示
ls -l 現在のディレクトリにあるファイルやフォルダを表示 lsはリストの略
mkdir ディレクトリを作成 -pをつけると一気に深いところまでディレクトリを作成可能
rm ファイル削除
rm -r ファイル+ディレクトリ削除
cat ファイルの中身を表示 con"cat"enateの略
連結するという意味
cat -n 行番号つきでファイルの中身を表示
less スクロールでファイルの中身を表示 less中の操作
f 1画面下にスクロール
b 1画面上にスクロール
j 1行下にスクロール
k 1行上にスクロール
1 終了
/ 文字列検索
n 次の検索結果に移動
N 前の検索結果に移動
cp コピー
mv ファイル名変更
mv ファイル移動
ln ハードリンクを作成する ln リンク元 名前
ln -s シンボリックリンクを作成する ln -s リンク元 名前
コマンド --help コマンドの使い方を表示する
man コマンド オンラインマニュアル上のコマンドの使い方を表示する(ネット接続して見る訳ではない) man中の操作
f 1画面下にスクロール
b 1画面上にスクロール
j 1行下にスクロール
k 1行上にスクロール
1 終了
/ 文字列検索
n 次の検索結果に移動
N 前の検索結果に移動
which 環境変数$PATHが指すディレクトリ配下で一番最初に見つかったコマンドのフルパスを表示する 環境変数$PATHが指すディレクトリ配下を検索している
which -a 環境変数$PATHが指すディレクトリ配下にある全てのコマンドのフルパスを表示する 環境変数$PATHが指すディレクトリ配下を検索している
変数名=値 変数に値を入れる var1='test variable'
=の左右にスペースをつけてはいけない
locale -a システムで利用可能なロケールの一覧を表示する
type コマンド エイリアスかどうか、組み込みコマンドかどうかを確かめる
alias 名前=コマンド コマンドを名前のエイリアスにする
unalias 名前 エイリアスを削除する
command コマンド エイリアスなしでコマンドを実行する
\コマンド エイリアスなしでコマンドを実行する
set 変数一覧を表示する
unset 変数を削除する
set -o オプション名 オプションをONにする setコマンドのオプションを別途表にまとめた
set +o オプション名 オプションをOFFにする shoptコマンドのオプションを別途表にまとめた
shopt -s オプション名 -v オプション名 -sで指定したオプションをONに、-vで指定したオプションをOFFに
export シェル変数名 シェル変数名を環境変数として設定する
source ファイル名 ファイル内に記述されている内容を、直接コマンドラインで実行する
groups 自分が現在どのグループに所属しているかを表示する
chmod [ugoa][+-=][rwx]<ファイル名> シンボルモードでパーミッションを変更する

[ugoa]
u:オーナー
g:グループ
o:その他のユーザー
a:ugo全て(省略するとaになる)

[+-=]
+:権限を追加
-:権限を禁止
=:指定した権限と等しくする

[rwx]
r:読み取り
w:書き込み
x:実行
[コマンド]
chmod ugo=rw

[意味]オーナー、グループ、その他ユーザーのパーミッションをrwにする
chmod 3桁の8進数 ファイル名 rwx rwx rwxを指定する場合777を指定する
su スーパユーザーに切り替える スイッチユーザーの略
su - スーパーユーザの環境に初期化して切り替える -をつけないと環境変数を引き継いでしまってアプリケーションによってはうまく動作しないことがある。通常は-をつけて実行する
sudo スーパーユーザとしてコマンドを実行する 一時的にスーパーユーザとしてコマンドを実行したい場合に利用
使えるかどうかは、/etc/sudoersに%wheel ALL=(ALL) ALLと記述されているかどうか※vimで修正してはいけない。visudoコマンドで行うこと
visudo 文法エラーをチェックしながら/etc/sudoersを書き換える
ps 実行中のプロセスを表示する x:実行したユーザーの全てのプロセスを表示
ux:実行したユーザーの全てのプロセスを詳細情報を合わせて表示
ax:すべてのユーザーのプロセスを表示
aux:すべてのユーザーのプロセスを、詳細情報を合わせて表示
auxww:表示幅を制限せずに全て表示(それ以外はauxと同じ)
jobs ジョブ一覧を表示 -lオプションをつけるとプロセスIDも表示する
fg %ジョブ番号 停止中のジョブをフォアグラウンドにする ジョブ番号を省略するとjobsで+のついたカレントジョブがフォアグラウンドになる
bg %ジョブ番号 停止中のジョブをバックグラウンドで実行する ジョブ番号を省略するとjobsで+のついたカレントジョブがバックグラウンドになる
コマンド & バックグラウンドで実行する
kill %ジョブ番号 ジョブを終了する
kill プロセス番号 プロセスを終了する 別ユーザーのプロセスは終了できない。ただし、スーパーユーザーはすべてのユーザーのプロセスを終了させることができる
kill -シグナル プロセス番号 プロセスに対してシグナルを送信する シグナルはkillコマンドで利用可能なシグナル一覧としてまとめた
コマンド < ファイル 標準入力をキーボードからファイルに変更してコマンドを実行 コマンド ファイルと同じ動作
コマンド > ファイル 標準出力を表示端末からファイルに変更してコマンドを実行 ファイルは自動で生成されるのであらかじめ作成しておく必要はなし
コマンド > ファイル 2> エラーファイル 標準出力を表示端末からファイルに変更し、標準エラー出力を表示端末からエラーファイルに変更してコマンドを実行
コマンド > ファイル 2>&1 標準出力と標準エラー出力をまとめて表示端末からファイルに変更してコマンドを実行 &1は標準出力を指す
コマンド >> ファイル ファイル末尾に追記する形で標準出力を表示端末からファイルに変更してコマンドを実行
head ファイルの先頭から指定した行数だけを標準出力に出力するコマンド
tail ファイルの末尾から指定した行数だけを標準出力に出力するコマンド -fをつけると追記されるたびに監視する
grep 指定した検索パターンに一致する行だけを表示
sort 順番に並べ替える
uniq 重複した行を取り除く -cで重複行を数える
taq 逆順に出力する
wc 行数やバイト数を出力する 行数、単語数、バイト数の順で表示する。-lで行数のみ出力、-wで単語数のみ出力、-cでバイト数のみ出力する
du -b 指定したファイルやディレクトリの使用容量をバイトで表示する
diff ファイル比較を行う
sed 非対話型エディタを用いてファイルを編集する スクリプトで正規表現などを用いて行の削除とか置換とかできる
awk スペースで区切られた何番目のデータを表示するかを表示するのに向いている オークと読む
本格的なテキスト処理を行う際にはRubyやPythonなどのスクリプト言語が使われることが多い

特殊なシェル変数

変数 説明 備考
PS1 プロンプトに表示される文字列
デフォルトだと[\u@\h \W]\$になっている
結果は[root@localhost work]# になる
\u:ユーザー名
\w:カレントディレクトリ
\h ホスト名のうち、最初の.までの部分
\d:日付
\H:ホスト名
\n:改行
\t:HH:MM:SS形式の現在時刻
\W:カレントディレクトリの末尾のディレクトリ名
\\\$:rootユーザの場合は#、それ以外のユーザの場合は$
\\:そのもの
PS2 プロンプトで入力待ちとかに表示される文字列
デフォルトだと>になってる
PATH シェルがコマンドを探すディレクトリを:区切りで連結した文字列 末尾にディレクトリを追加する場合はPATH="$PATH: ~/bin"のようにする
LANG ロケール。表示する言語や日付の書式が決まる
HISTFILE コマンドライン履歴を保存するファイル名 デフォルトは~/.bash_history
HISTFILESIZE 履歴ファイルに保存するコマンドライン履歴の最大行数
HISTSIZE コマンドライン履歴を保存する最大行数
HOME ホームディレクトリ
SHELL ログインシェルのパス
PWD カレントディレクトリ
LESS less実行時に自動で実行されるオプションを表す環境変数 デフォルトは空

操作

操作 意味 備考
control+b カーソルを1つ左へ bはback(後ろ)という意味
control+f カーソルを1つ左へ fはforward(前)という意味
control+a カーソルを先頭へ
control+e カーソルを末尾へ
escを押してから離しb カーソルを単語ごとに左へ bはback(後ろ)という意味
escを押してから離しf カーソルを単語ごとに右へ fはforward(前)という意味
control+w カーソル位置から左へスペースまで削除
control+k カーソル位置から行末まで削除
control+u カーソル位置から行頭まで削除
control+y ヤンク(貼り付け)
control+l 表示文字のクリア かなりよく使う
control+r コマンドのインクリメンタルサーチ インクリメンタルサーチ中の操作
文字列を入力すると検索
control+r 1つ前を検索
esc 現在表示されているコマンドを残したまま戻る
control+g 検索結果を破棄して戻る
control+z コマンドを停止させる コマンドを終了させた訳ではなく、fgコマンドで再開させることができる

ディレクトリの意味

ディレクトリ 意味
/bin Linuxシステムの動作に最低限必要な重要度の高いコマンドを格納している
/dev ディスクやキーボードなどのハードウェアをファイルとして扱えるように用意されたデバイスファイルを格納している
/etc 設定ファイルを置くためのディレクトリ
Linux自体の設定に関わるファイルもこのディレクトリにある
/home ホームディレクトリ
この下にユーザごとのディレクトリがある
ユーザーはこのホームディレクトリ内に自由にファイルやディレクトリを作成して作業を行うことができる
/sbin 実行ファイルを置くためのディレクトリ
管理者ユーザ向けのコマンドが置かれてる
/tmp 一時的なファイルを置くためのディレクトリ
このディレクトリ内のファイルは定期的に削除する設定となっている
/usr 各種アプリケーションとそれに付随するファイルを置くためのディレクトリ
/var 変化するデータを置くためのディレクトリ

記号の意味

記号 意味 備考
$ 一般ユーザー
# スーパーユーザー
. カレントディレクトリ
/ ファイルパス区切り
* 任意の文字列
? 任意の1文字

ファイル検索について

ファイル検索を行うfindの基本形.sample
find <①検索開始ディレクトリ> <②検索条件> <③アクション>
①検索開始ディレクトリ 意味
. カレントディレクトリ
②検索条件 意味 備考
-name "*.txt" 大文字小文字を区別して.txtで終わるファイルを検索する
-iname "*.txt" 大文字小文字を区別せず.txtで終わるファイルを検索する
-type f 通常ファイルを検索する
-type d ディレクトリを検索する
-type l シンボリックリンクを検索する
-type f -a -name '*.txt' 通常ファイルでファイル名が.txtで終わるファイルを検索する -aはandという意味
ちなみに-aは省略していい
③アクション 意味 備考
-print パス名を表示する アクションを省略すると-printになる

高速ファイル検索について

高速にファイル検索を行う場合はlocateを利用する
findと異なり、あらかじめデータベースを作成した後にそのデータベースを利用するため、その場で検索を始めてしまうfindと異なり、かなり高速にファイル検索ができる
デフォルトでは利用できない
locate --versionを実行し、何も見つからなければyumやapt-getでインストールする必要あり

centosの場合.sample
sudo su
yum -y install mlocate
ubuntuの場合.sample
sudo su
apt-get install mlocate

mlocateインストール後、updatedbでファイルパス一覧をデータベースに登録する
一度実行したあとは、locateコマンドによって自動でデータベースが更新されるため、再度実行する必要はなし

centosとubuntu共通.sample
updatedb

locateでファイル検索を行う場合は下記のフォーマットで行う

ファイル検索を行うlocateの基本形.sample
locate [①オプション]<②検索パターン>
①オプション 説明 備考
-i 大文字小文字を区別しない iはignore_caseの略
-b ファイル名だけを検索対象にする bはbasenameの略
-a AND検索する
②検索パターン 説明
"*.txt" .txtを含むファイルを検索
"bash" "doc" "bash"または"doc"を含むファイルを検索

vimについて

用語 説明 備考
デリート カットのこと
ヤンク コピーのこと ややこしいけどLinuxでのヤンクとまた意味が異なる
プット ペーストのこと
コマンド 説明 備考
vim --version vimのバージョンを確認する インストールされていないとバージョンが表示されない
yum install vim vimをインストール(CentOS)
apt-get install vim vimをインストール(Ubuntu)
vim ファイル名 vimでテキストを開く
vimtutor vimのチュートリアルを開始する vimに慣れていない人は是非試してみるといい

通常モード

コマンド 説明 備考
h 慣れるとカーソルキーより速い
j 慣れるとカーソルキーより速い
k 慣れるとカーソルキーより速い
l 慣れるとカーソルキーより速い
x 1文字削除 dlと動作は同じ
i 挿入モードにする insertの略
a 挿入モードにする iとの違いはカーソル位置の右にカーソルが合うこと
0 行頭へ
$ 行末へ
w 記号区切りで右へカーソル移動
b 記号区切りで左へカーソル移動
W スペース区切りで右へカーソル移動
B スペース区切りで左へカーソル移動
gg 最初の行へジャンプ
100G 100行目へジャンプ
G 最後の行へジャンプ
:q 保存せず終了
:q! 保存せず強制終了
:w 保存
:w ファイル名 別名保存
:wq 保存して終了
dd 行デリート
d$ 行末までデリート
d0 行頭までデリート
dl 1文字デリート
dw 単語1つデリート
dgg 最初の行までデリート
dG 最後の行までデリート
yy 行ヤンク
y$ 行末までヤンク
y0 行頭までヤンク
yl 1文字ヤンク
yw 単語1つヤンク
ygg 最初の行までヤンク
yG 最後の行までヤンク
p デリート、ヤンクした文字列をプット(貼り付け)
J 現在の行とすぐ下の行を連結 xだと改行を消せないので、その時に使う
u アンドゥ 直前の操作を取り消すこと
control+r リドゥ アンドゥを取り消すこと
/検索文字列 下方向に向かって文字列を検索 現在のカーソル位置から検索するのでggを入力してから検索するといい
nで次へ、Nで前へ
?検索文字列 上方向に向かって文字列を検索 現在のカーソル位置から検索する
nで次へ、Nで前へ
:%s/置換元文字列/置換後文字列/g
:help ヘルプコマンド リンクがあるので、リンクの上でcontrol+]を押すと飛べる
リンク先から戻るにはcontrol+t
:help コマンド コマンドのヘルプを表示する

挿入モード

コマンド 説明 備考
esc 通常モードへ

setコマンドのオプション

オプション ON時の動作 備考
ignoreeof control+Dを押してもシェルを終了しない
noclobber 既に存在するファイルをリダイレクトで上書きしない
noglob パス名展開を無効にする はそのままになる

shoptコマンドのオプション

オプション ON時の動作 備考
autocd ディレクトリ名のコマンドを実行すると、それがcdコマンドの引数に指定したものとして実行される
dotglob *や?を使ったパス名店会の結果に、.で始まるファイルも含める
cdspell cdコマンド実行時、ちょっとしたミスタイプを自動修正して実行
globstar パス名展開で**というパターンを使うと、サブディレクトリまで含めたすべてのファイルにマッチする
histappend bashを終了するとき、履歴ファイルにコマンド履歴を追記し、上書きしない
sourcepath sourceコマンドでのサーチパス検索をしない

bashの設定ファイル

設定ファイル 説明 備考
/etc/profile シェル起動時に一番最初に呼ばれるシェルスクリプト ディストリビューションごとに適切な設定があらかじめ書かれているので修正する必要はない
~/.bash_profile /etc/profileのあとに呼ばれるシェルスクリプト ログインしたときだけ読み込まれる
~/.bashrc 基本的に~/.bash_profileから呼ばれるシェルスクリプト
bashを起動するたびに読み込まれるシェルスクリプトでもある
基本的にこのファイルだけ修正すればいい

killコマンドで利用可能なシグナル一覧

シグナル 番号 説明 備考
SIGKILL 9 プロセスを強制終了します プロセスが終了しないときの最終手段
SIGTERM 15 プロセスを終了します killコマンドのデフォルトのシグナル
SIGTSTP 20 プロセスを一時停止します control+zと同じ
SIGINT 2 プロセスを終了します control+cと同じ

その他

その他 解説
ls -Fで表示されるファイル種別 記号なし 通常ファイル
/ ディレクトリ
* 実行可能
@ シンボリックリンク
Linuxでコマンドが成功したときの挙動 なにも表示されなければ成功
-r だいたい再帰オプション(ディレクトリの下のファイルやフォルダまで対象にするという意味)
Linuxにおけるリンクの意味 別名
Linuxの日本語マニュアル http://linuxjm.sourceforge.jp/
エイリアスなしでコマンドを実行するには フルパスでコマンドを実行する
source ~/.bashrc bashの再起動をせずに.bashrcの設定を即時反映したい時とかに実行する
/dev/null スペシャルファイルと呼ばれる特別なファイル。入力先として指定しても何も内容を返さない。出力先として指定しても、書き込んだデータはどこにも保存されずに消えてなくなる
0
1
1

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
0
1