Linuxの勉強をしていたので、コマンドをまとめてみました。
カレントディレクトリの移動
パスを指定して移動
$cd [相対パス or 絶対パス]
一つ上のディレクトリに移動
$cd ..
ホームディレクトリに移動
$cd ~
カレントディレクトリの表示
$pwd
ディレクトリ作成
1つのディレクトリをつくる
$mkdir [ディレクトリ名]
ディレクトリとそのサブディレクトリを同時につくる
$mkdir -p [ディレクトリ名]/[サブディレクトリ名]
ディレクトリやファイルの表示
-al
-lr
-atr
など、オプションの組み合わせが可能。
ディレクトリとファイルを表示
$ls
隠しファイルも表示する
$ls -a
ファイルの詳細情報も表示する
$ls -l
逆順に表示
$ls -r
更新日時の新しい順に表示
$ls -t
ディレクトリの詳細を表示する
$ls -ld
ディレクトリの削除
空のディレクトリ削除
指定したディレクトリが空でなかったら、削除が失敗します。
$rmdir [ディレクトリ名]
データのあるディレクトリ削除
$rm -r [ディレクトリ名]
ディレクトリに対する変更
オプションである -i
を付けると、上書きする際に確認メッセージが表示されます。
また、オプションの -v
を付けると操作の内容が表示されます。 -vi
などの組み合わせも可能。
ディレクトリ名・ファイル名変更
ディレクトリの移動と同じコマンドだが、新しいディレクトリ名の存在有無によって区別される。
$mv [元のディレクトリ名] [新しいディレクトリ名]
ディレクトリの移動
ディレクトリ名変更と同じコマンドだが、移動先のディレクトリ名の存在有無によって区別される。
$mv [移動させるディレクトリ名] [移動先のディレクトリ名]
カレントディレクトリにディレクトリを移動
$mv [カレントディレクトリから移動させたいディレクトリへのパス] .
例:parentディレクトリ下のtargetディレクトリをカレントディレクトリに移動する場合、 $mv parent/target .
とする。
ディレクトリ・ファイルのコピー
オプションである -i
を付けると、上書きする際に確認メッセージが表示されます。
また、オプションの -v
を付けると操作の内容が表示されます。-vi
などの組み合わせも可能。
ファイル名前を付けてコピー
$cp [原本のファイル名] [複製されるものにつけるファイル名]
指定ディレクトリ内に同じ名前のファイルをコピー
原本のファイル名と同じファイルがコピーされます。
$cp [原本のファイル名] [コピー先のディレクトリ名]
ディレクトリをカレントディレクトリにコピーする
1つ下のコマンドと同じですが、2つ目に指定するディレクトリ名の存在有無で区別されます。
$cp -r [原本のディレクトリ名] [複製されるものにつけるディレクトリ名]
ディレクトリを指定ディレクトリの下にコピーする
1つ上のコマンドと同じですが、2つ目に指定するディレクトリ名の存在有無で区別されます。
$cp -r [原本のディレクトリ名] [コピーを格納するディレクトリ名]
ファイル操作
空のファイル作成
$touch [ファイル名]
ログアウト
Ctrl + D でも可能(ショートカットキー)。
$exit
もしくは
$logout
シャットダウン
システムの終了
$shutdown -h
もしくは
$systemctl poweroff
システムの再起動
$shutdown -r
もしくは
$systemctl reboot
今すぐ実行(終了・再起動どちらでも)
$shutdown -h now
3分後に実行(終了・再起動どちらでも)
$shutdown -h +3
ファイル管理とパーミッション
ファイルやディレクトリの所有者変更
chown 所有者名 ファイル名またはディレクトリ名
指定したディレクトリ以下の全てのファイル・ディレクトリの所有者変更
chown -R 所有者名 ディレクトリ名
所有グループの変更
chgrp 所有グループ名 ファイル名またはディレクトリ名
指定したディレクトリ以下の全てのファイル・ディレクトリの所有グループ変更
chgrp -R 所有者名 ディレクトリ名
アクセス権指定で使う数値・記号
数字でアクセス権を指定する例
所有者・所有グループ・その他のユーザー全てに、読み込み・書き込み・実行を許可する: chmod 777 test.txt
数字 | 文字 | 内容 |
0 | — | アクセス権なし |
1 | –x | 実行可能 |
2 | -w- | 書き込み可能 |
3 | -wx | 書き込みと実行可能 |
4 | r– | 読み込み可能 |
5 | r-x | 読み込みと実行可能 |
6 | rw- | 読み込みと書き込み可能 |
7 | rwx | 読み込み、書き込み、実行可能 |
ユーザーと記号で指定する例
所有者に実行権限追加、グループの書き込み権限削除: chmod u+x, g-w test.txt
文字 | 指定先 |
u | 所有者 |
g | グループ |
o | その他のユーザー |
a | 全てのアクセス権ユーザー |
記号 | 内容 |
+ | 指定したアクセス権を追加 |
– | 指定したアクセス権を削除 |
= | 指定したアクセス権にする |
ファイル操作
テキストファイルの内容表示する
$cat ファイル名
行番号もつけて表示するときは、 $cat -n ファイル名
もしくは $cat --number ファイル名
ページ単位でファイルの内容を表示する
$less ファイル名
f
もしくはspaceキー
:次の画面を表示するb
:前画面を表示するq
:終了してコマンドプロンプトに戻る-N
を付けると、行番号も表示する/
や?
を併用して、検索を行うことも可能
ファイルの先頭(デフォルトは10行)を表示する
$head ファイル名
ファイルの末尾(デフォルトは10行)を表示する
$tail ファイル名
末尾3行だけ表示する際は、 $tail -n 3 ファイル名
。
ファイルのデータを行単位で並べ替える(デフォルトは昇順)
$sort ファイル名
降順にする際は、 $sort -r ファイル名
もしくは $sort --reverse ファイル名
。
数値の大きさを基準に並べ替える際は、 $sort -n ファイル名
もしくは $sort --numeric-sort ファイル名
。
ファイルの行数、単語数、バイト数を表示する
$wc ファイル名
ファイル内部の単語検索
$grep 検索文字 ファイル名
- オプション(組み合わせ可能)
-i (--ignore-case)
:大文字小文字を区別せずに検索-n (--line number)
:行番号を表示する-v (--invert-match)
:条件に合わないものを検索-c (--count)
:パターンがマッチした行の行数だけ表示
ファイルを検索
$find ファイル名
- オプション
-name
:ファイルやディレクトリ名の一部から検索-type d
:ディレクトリを検索
- 例
- カレントディレクトリからtest.txtファイルを検索:
$find (.) -name test.txt
- カレントディレクトリからtest.txtファイルを検索:
コマンドのマニュアル(解説)を見る
$man コマンド名
ファイルの行数、単語数、バイト数を表示する
$wc ファイル名
ユーザー情報関連
ユーザーのidを確認する
$id ユーザー名
別のユーザーに切替
ルートユーザーに切り替える際は、$su -
だけでOK。
$su - ユーザー名
ユーザーの作成
#useradd ユーザー名
ルートユーザーとしてログイン時に実行可能。ユーザーを追加すると、ルートユーザーの /home
ディレクトリにユーザー名のディレクトリが追加される。
パスワードの設定・変更
ルートユーザーとしてログイン時
#passwd 設定・変更するユーザー名
一般ユーザーとしてログイン時
$passwd
ユーザー情報の確認
パスワード以外のユーザー情報
$cat /etc/passwd
パスワード情報(暗号化されている・ルートユーザーのみアクセス可能)
#cat /etc/shadow
ユーザーの削除(ルートユーザーのみ実行可能)
#userdel ユーザー名
ユーザーとそのユーザーのディレクトリ削除(ルートユーザーのみ実行可能)
#userdel -r ユーザー名
ユーザーの削除(ルートユーザーのみ実行可能)
#userdel ユーザー名
グループ
所属グループの確認
$groups ユーザー名
もしくは
$id ユーザー名
グループ作成(ルートユーザーのみ)
#groupadd グループ名
グループ情報表示(ルートユーザー以外も閲覧可能)
#cat /etc/group
ユーザーをセカンダリーグループに参加させる
usermod -G グループ名 ユーザー名
ユーザーのプライマリグループを変更
usermod -g グループ名 ユーザー名
ユーザーのホームディレクトリを変更
usermod -d ディレクトリ名 ユーザー名
ユーザー情報にコメントを入れる
usermod -c "コメント" ユーザー名
グループを削除
groupdel グループ名
エイリアスの設定
エイリアスを設定する
alias エイリアス名='コマンド'
コマンドの両端に”必須。また、=の両端にスペースは入れない。
注意:シェルを終了させると設定も消えるため、残すためには~/.bashrcに記載する。
エイリアス削除
unalias エイリアス名
入出力先
入出力先に関わる記号一覧
- >:標準出力の出力先を変更(データは上書き)
- >>:標準出力の出力先を変更(データは追記)
- <:標準入力の入力元を変更
- 2>:標準エラー出力の出力先を変更(データは上書き)
- 2>>:標準エラー出力の出力先を変更(データは追記)
コマンドの実行結果をファイルに書き込む(既存データは消して上書きする)
$コマンド > ファイル
例: $ls > test.txt
コマンドの実行結果をファイルに書き込む(既存データはそのままで追加する)
$コマンド >> ファイル
例: $ls >> test.txt
ファイルXを読み込み、コマンドを実行後、ファイルYに出力する
$コマンド < ファイルX > ファイルY
例: $grep -i dog < text.txt > dog.txt
コマンドの実行結果をファイルXに、エラーメッセージをファイルYに出力する
$コマンド > ファイルX 2> ファイルY
例: $cat text.txt > result.txt 2> error.txt
シェル変数や環境変数
変数を表示する
$echo $変数名
シェル変数や環境変数を全て表示
$set
環境変数を全て表示
$env
シェル変数を環境変数にする
$export 変数名
もしくは
$export 変数名=値
変数を削除する
$unset 変数名
環境変数の設定のみ削除
$export -n 変数名
PATHの内容を確認する
$echo $PATH
コマンドファイルの種類を確認する
$type コマンド名
コマンドファイルの場所を確認する
$which コマンド名
パスを通す(PATH変数にディレクトリを追加する)
$PATH = $PATH:追加するディレクトリ名
注意:設定を保存する場合
bashに関する設定ファイルに書き込む必要がある。
代表的なファイル
- /etc/profile:ログイン時に全てのユーザーが読み込む
- .bash_profile:各ユーザーごとに存在し、ログイン時に実行される。環境変数を設定する場所。
- .bashrc:bashが起動する度に実行される。エイリアスなどを設定する場所。
プロセス
プロセスを確認する
$ps
表示されるプロセスの項目(オプションをつけると表示項目は増える)
- PID:プロセスID
- TTY:プロセスが実行されている端末
- TIME:実行時間(CPU時間)
- CMD:コマンドまたはプログラムファイル名
オプション(組み合わせ可)
- a:端末に関係するすべてのプロセスを表示
- u:ユーザー名を含めて実行プロセスを表示
- x:端末から起動されたものではないプロセスも含めてすべてのプロセスを表示
- f:プロセスの親子関係をツリーで表示
- w:出力の幅を広げる
- -e:すべてのプロセスを表示
- -p PID:指定したPIDの情報を表示
※デーモンプロセス:サーバープログラムなど、常駐して動くプログラムのこと。
プロセスの親子関係を確認(事前にpstreeのインストール必須)
$pstree
オプション
- -n:PIDで並び替えて表示
- -p:PIDを表示
プロセスのリアルタイム表示
$top
※ q
で終了する
メモリの利用状況を確認
$free
オプション
- -m:単位をMBで表示(デフォルトはKB)
プロセスを終了する
$kill 終了させるPID
もしくは
$killall プロセス名
オプション
- -9 / -KILL / -s / -SIGKILL:強制終了
ジョブ
バックグラウンドで実行する場合
コマンドの後ろに &
をつける
バックグラウンドジョブを確認
$jobs
バックグラウンドで動いている処理をフォアグラウンドに持ってくる
$fg ジョブ番号
フォアグラウンドで一時停止したジョブをバックグラウンドで実行させる
$bg ジョブ番号
ジョブを指定して[kill]コマンドを使う
$kill % ジョブ番号
フォアグラウンドで一時停止したジョブをバックグラウンドで実行させる
$bg ジョブ番号
実行しているジョブを一時停止し、バックグラウンドへ移行する
ショートカットキー:Ctrl + Z
デバイス・ファイルシステム
パーティションをつくる
#fdisk デバイスファイル名
例えば、dev/sdaデバイスにパーティションを作るときは、 fdisk /dev/sda
デバイス情報を表示
#fdisk -l
ファイルシステムの作成
#mkfs -t ファイルシステム デバイス名
例えば、dev/sda1パーティションをxfsシステムで作るときは、 mkfs -t xfs /dev/sda1
ファイルシステムのマウント
#mount デバイス名 マウントポイント
/dev/sda1を/mntに認識させるには、 mount /dev/sda1 /mnt
ファイルシステムのアンマウント
#umount マウントポイントまたはデバイス名
例えば、dev/sda1を/mntからアンマウントするときは、 umount /mnt
または umount /dev/sda1
ファイルシステムのマウント
#mount デバイス名 マウントポイント
/dev/sda1を/mntに認識させるには、 mount /dev/sda1 /mnt
アーカイブ
$tar オプション アーカイブファイル名
オプション
-c
:アーカイブファイルの作成-x
:アーカイブからファイルの取り出し-t
:アーカイブの内容確認-r
:アーカイブにファイル追加-v
:詳細情報の表示-z
:gzip形式で圧縮・展開を行える-f ファイル名
:アーカイブファイル名の指定
例
$tar -cf archiveAll.tar child1 child2
:child1とchild2ファイルをまとめた、archiveAll.tarというアーカイブファイルを作る$tar -tf archiveAll.tar
:archiveAll.tarの内容確認
ファイルの圧縮
圧縮ファイルの作成
$gzip オプション ファイル名
オプション -c
をつけると、元ファイルを残して圧縮ファイルを作成する。
圧縮ファイルを展開
$gzip -d ファイル名
リンク
ハードリンク作成
$ln リンク元ファイル ハードリンクファイル
シンボリックリンク作成
$ln -s リンク元ファイル シンボリックリンクファイル
RPM系(yum)
インストールされているyumパッケージの確認
$yum list
パッケージを検索
$yum search パッケージ名
アップデート可能なパッケージを表示
$yum check-update
パッケージの情報を確認
$yum info パッケージ名
パッケージのインストール (yum)
#yum install パッケージ名
一部のパッケージは [rpm] コマンドでないと出来ない場合がある。
パッケージのアップデート
#yum update
個別にアップデートする場合
#yum update パッケージ名
パッケージのアンインストール
#yum remove パッケージ名
一部のパッケージは [rpm] コマンドでないと出来ない場合がある。
RPM系(rpm)
rpmだと自動的な依存関係の解決は行わず、パッケージを単体でインストールする。
パッケージのインストール (rpm)
パッケージファイル名とは、package-1.22.0-987.el7.x86_64.rpm
のようなもの。
#rpm -ivh パッケージファイル名
インストール済パッケージファイルの一覧表示 (rpm)
$rpm -qa
パッケージのアップデート (rpm)
#rpm -Fvh パッケージファイル名
rpm検索オプション
- -q パッケージ名:指定したパッケージがインストールされているかチェック
- -a:インストール済の全パッケージを表示
- -i:指定したパッケージの詳細情報を表示
- -l:指定したパッケージに含まれるファイルを一覧表示
- -i:パッケージファイルをインストール
- -U:パッケージファイルのアップデート(ファイルがなければインストール)
- -F:パッケージファイルのアップデート(ファイルがなければアップデートしない)
- -e パッケージ名:パッケージをアンインストール
- –nodeps:依存関係を無視してアンインストール
- –allmatches:バージョンに関係なく、パッケージ名が同じなら全て削除
5~7のオプションはインストール・アップデートに関わるもので、-v(詳細情報表示)や -h(進行状況の表示)オプションを組み合わせて実行する。
Debian系 (apt-get, apt)
apt-get
ではなく apt
だけでもOK。
指定したパッケージをインストール
#apt-get install パッケージ名
すべてを最新にアップグレード
#apt-get upgrade
最新のパッケージ情報を取得(アップグレードはしない)
#apt-get update
パッケージのアンインストール
#apt-get remove パッケージ名
パッケージの検索
#apt-cache search パッケージ名
最新のパッケージ情報を取得(アップグレードはしない)
$apt-get update
Debian系 (dpkg)
dpkgだと自動的な依存関係の解決は行わず、パッケージを単体でインストールする。
指定したパッケージをインストール
#dpkg -i パッケージファイル名
すべてを最新にアップグレード
#dpkg -r パッケージ名
設定ファイルごとアンインストール
#dpkg -P パッケージ名
ネットワーク
今月を表示
$cal
月曜始まりで表示
$cal -m
ネットワーク
通信確認
$ping -c 回数 接続先のホスト名もしくはIPアドレス
-c 回数
は指定しなくても可。その場合、Ctrl + C で止める必要がある。
ホスト名変更
#hostname 新しいホスト名
現在のホスト名確認
$hostname
ホスト名変更
#hostname 新しいホスト名
インターフェースの状態やIPアドレスを表示
$ip addr show
ルーティングテーブルを表示
$ip route show
ipコマンドのオプションなど(使用例は上2つ)
- -4(オプション):IPv4の場合
- -6(オプション):IPv6の場合
- addr(対象):ネットワークデバイスのIPアドレス
- route(対象):ルーティングテーブル
- show(サブコマンド):IPアドレスの表示
- add(サブコマンド):設定
カレンダー
オプションは組み合わせ可能。
今月を表示
$cal
月曜始まりで表示
$cal -m
一年分表示
$cal -y
1997年2月を表示
$cal 7 1997
前月、今月、翌月を表示
$cal -3
ワイルドカード
*
任意の複数文字。例:「*.txt」→ test.txt、sample.txt、setting.txtなどが該当する。
?
任意の一文字を表す。例:「?.txt」→s.txt、4.txtなどが該当する。
[]
- [tes]:[]内に含まれる文字列の内、1つでも当てはまるもの(t,e,sのどれか)
- [!tes]:[]内に含まれる文字列以外の文字が当てはまるもの(t,e,s以外)
その他コマンド
入力履歴を確認する
$history
重複データを見つけて1つにまとめる
$uniq 入力ファイル
※事前にデータを並べ替えておく必要あり。
コマンド処理の開始時間を遅らせる
5分間遅らせる場合は以下の通り。
$sleep 5m
システム起動時にカーネルが行った処理を確認する
$dmesg
systemdのシステムでは、 journalctl -k
でも確認可能。
iノードに関する情報を確認
$df -i
ショートカットキー
今まで入力したコマンドを入力して検索
Ctrl + R
カーソルの位置から左側を削除(切り取り)
Ctrl + U
カーソルの位置から右側を削除(切り取り)
Ctrl + K
直前に切り取った文字を貼り付け
Ctrl + Y
画面をクリアにする
Ctrl + L
ログアウト
Ctrl + D
出力をロックする(キーボード入力に反応しなくなる)
Ctrl + S
出力のロックを解除
Ctrl + Q