皆様こんにちは、MMです。
今回は「Linux標準教科書 -Ver. 3.0.4-」 でLinuxについて学び、ピックアップしたコマンドについて自分なりにまとめた内容を記載していきたいと思います。
それでは行ってみましょう☺️
1. cdコマンド
cdコマンドはカレントディレクトリ(現在居るディレクトリ)から他のディレクトリに移動する際に使用するコマンドです。
書式)
cd [ディレクトリ名]
cdコマンドで、ユーザのホームディレクトリに移動するには以下のような方法があります。
・cdコマンドの引数にホームディレクトリを表すメタキャラクタ「~」とユーザ名を指定する 「cd ~ユーザ名」とすることで、指定したユーザのホームディレクトリに移動します。
・cdコマンドの引数にホームディレクトリを表すメタキャラクタ「~」を指定する 「cd ~」とすることで、コマンドを実行したユーザのホームディレクトリに移動します。
・cdコマンドの引数に何も指定しない cdコマンドを引数なしで実行する事で、コマンドを実行したユーザのホームディレクトリに移動します。
なお、ユーザのホームディレクトリは通常「/home/ユーザ名」(rootユーザの場合は「/root」)になります。ユーザtestであれば、ホームディレクトリは「/home/test」ディレクトリです。
しかしホームディレクトリは「/etc/passwd」ファイルなどを使用して変更することが出来ます。ですので「/home/ユーザ名」ディレクトリがホームディレクトリになるとは限りません。
2. pwdコマンド
ディレクトリは階層構造になっています。pwdコマンドはその階層の中で現在どの位置にいるか表示します。
書式)
pwd
3. lsコマンド
Isコマンドはファイル名やディレクトリ名を指定して情報を取得することができます。ディレクトリ名を指定した場合は、そのディレクトリの中にあるファイルやディレクトリ名の一覧を取得することができます。ディレクトリやファイルをlsコマンドで参照する場合、「*
」と「?
」をワイルドカードとして使用することもできます。
書式)
ls [オプション][ファイル]
オプション
オプション |
説明詳細 |
-a |
「.」で始まる隠しファイル等も全て(All)出力します。 |
-l |
長(Long)形式で出力します。 |
-t |
最終更新時間(Time)でソートして出力します。 |
-r |
逆順(Reverse)でソートして出力します。 |
オプションはまとめてもまとめなくても同じ結果になります。さらに順不同なため入れ替えても同じ結果になります。ただしコマンドによっては順序と文法が細かく決まっている場合があるため、コマンドを実行する前にマニュアルやヘルプを参照してください。またコマンドオプションはハイフンを使用して指定することが一般的ですが、コマンドによってはハイフンを必要としないコマンドもあるため注意が必要です。
例)
$ ls -la
$ ls -al 等
・lsコマンドでワイルドカードを使った絞り込み
「*」は任意の文字列を示しており、この間に何文字が入っても検索結果として出力されます。下記のような形式で実行すると「conf」で終わるファイルがリスト表示されます。
例)
$ ls *.conf
またファイル名の文字数がわかっている場合は「?」を使用して絞り込むことができます。「?」は1個につき何らかの1文字を示します。
例)「hosts.」の後に4文字+最後の文字が「w」であるファイルを絞り込み
$ ls hosts.????w
3. mkdirコマンド
mkdirコマンドを実行するとディレクトリを作成できます。
書式)
mkdir [オプション] ディレクトリ名
オプション
例1)アクセス権が700の「dir」ディレクトリを作成する場合
$ mkdir -m 700 dir
例2)
$ mkdir dir1
$ mkdir dir1/dir2
ディレクトリを作る時はその上位層ができていないと作成できないという制約があるためmkdirコマンドを3つに分けて実行しました。
例3)カレントディレクトリに「dir1/dir2」ディレクトリを作成する場合。なお、「dir1」ディレクトリは存在しない。
$ mkdir -p dir1/dir2
$ ls -R dir1
dir1:
dir2
4. rmdirコマンド
rmdirコマンドはディレクトリを削除する際に使用します。
書式)
rmdir [オプション] ディレクトリ名
オプション
オプション |
説明詳細 |
-p |
指定した階層までのディレクトリを一括で削除します。オプションを付けないでrmdirコマンドを実行した場合は、最下層のディレクトリのみ削除します。ただしいずれの場合も対象とするディレクトリ内はからでなければなりません。 |
rmdirコマンドはディレクトリを削除するコマンドですが、削除対象のディレクトリは空である必要があります。
空ではないディレクトリを削除するためにはrmdirコマンドではなく、rmコマンドに-rオプションを付けて実行します。このコマンドを実行すると、特に警告されることなく指定したディレクトリ以下のディレクトリとファイルを削除することができます。
5. catコマンド
catコマンドはファイルの内容を確認するコマンドの1つです。
書式)
cat ファイル名
ファイルの内容を表示することができます。
オプション
オプション |
説明詳細 |
-n |
行番号を付加して表示します。 |
-b |
空行を除いた行に行番号をつける |
catコマンドの引数にファイルを複数指定すると、ファイルを連結して出力します。ファイル名が指定されない場合、または「-(ハイフン)」が指定された場合は標準入力から受け取ったデータを標準出力に表示します。
6. lessコマンド
catコマンドを使用してファイルの内容を表示する時、行数が多い場合は表示が流れてしまいます。多くの行がある場合も画面制御を行なってスクロールを途中で止めてくれる機能のことをページングといいます。そしてそれを実現するコマンドをページャといいます。代表的なページャは「more」や「less」等です。
書式)
less ファイル名
使い方はcatコマンド等と同様で、オプションとしてページングする対象のファイル名を指定します。
項目 |
内容説明 |
スペース |
次のページに進む |
b |
前の一画面に戻る |
f |
次の一画面に戻る |
↑ |
前の行に進む |
↓ |
次の行に進む |
/単語 |
単語を検索します。nキーで検索結果をジャンプします。 |
q |
ページャコマンドを終了します。 |
7. tailコマンド
tailコマンドは指定したファイルの末尾部分を表示するコマンドです。行数を「-n」オプションで指定しない場合は、末尾の10行が表示されます。
書式)
$ tail [オプション] ファイル名
オプション
オプション |
説明詳細 |
-n 行 |
末尾から指定した行を標準出力します。 |
-c バイト |
末尾から指定したバイト分を標準出力します。 |
-f |
変更をリアルタイムでモニタすることが可能になります。 |
tailはファイルの終わり部分を標準出力します。オプションをつけない場合は末尾から10行を標準出力します。ファイル名の部分を空白にした場合、もしくは「-(ハイフン)」を指定した場合は標準入力からのデータに対して処理を行います。またファイルによってはログ等終わり部分が随時変わることがあります。-fオプションを付けることにより、変更をリアルタイムでモニタすることが可能になります。
例)
$ tail FILE
FILEの末尾10行を表示
$ cat FILE | tail -
標準入力からの内容のうち末尾10行表示
$ cat FILE | tail
標準入力からの内容のうち末尾10行表示
8. touchコマンド
touchコマンドは空のファイルを作成したり、ファイルのタイムスタンプ(アクセス時刻や修正時刻)を変更する際に利用します。
書式)
touch [オプション] ファイル名 [ファイル名・・・]
オプション
オプション |
説明詳細 |
-t 時刻 |
アクセス時刻と修正時刻を指定した時刻に変更 |
-a |
アクセス時刻を変更 |
-m |
修正時刻を変更 |
touchコマンドを実行するとファイルのタイムスタンプが現在日時に変更されます。また、オプションにより新しいタイムスタンプとなる日時を指定することもできます。指定したファイル名のファイルが存在しない場合、touchコマンドは中身が空である0バイトのファイルを作成します。テスト用の空ファイルなどを簡単に作成できるので便利です。(touch aa bb cc など)
また「-t」オプションで時刻を指定しない場合は、現在時刻が適用されます。
タイムスタンプはファイルの詳細情報を表示するstatコマンドなどで確認できます。
9. rmコマンド
ファイルやディレクトリを削除するにはrmコマンドを利用します。
書式)
rm [オプション] ファイルまたはディレクトリ名
オプション
オプション |
説明詳細 |
-i |
処理を行う時に確認をします。対象ファイルを本当に削除して良いか、このオプションを付けていると確認をしてくるため誤って削除することを防ぐことができます。 |
-f |
強制的に処理を実行します。ファイルによっては削除に確認を求められる場合がありますが、-fオプションはその確認を無視して強制的に処理を継続します。 |
-r または -R |
ディレクトリを対象にします。ディレクトリの中のファイルやディレクトリも削除します。 |
10. mvコマンド
mvコマンドはファイルを移動する時に使用します。また、ファイル名の変更も行えます。
書式)
mv 移動元ファイル 移動先ファイル
例)
$ mv src-file dst-file
このmvコマンドを実行することにより移動元ファイルを移動先ファイルに移動することができます。
・src-fileがファイル名でdst-fileが存在するデイレクトリの場合、ファイルsrc-fileがディレクトリdst-fileの下に移動します。
・src-fileがディレクトリ名でdst-fileが存在するディレクトリの場合、ディレクトリsrc-fileはディレクトリdst-fileの下に移動します。
・src-fileがファイル名でdst-fileが存在しないファイル名の場合、ファイルdst-fileにファイル名が変更されます。
・ src-fileがディレクトリ名でdst-fileが存在しないディレクト名の場合、ディレクトリdst-fileにディレクトリ名が変更されます。
オプション
オプション |
説明詳細 |
-i |
処理を行う時に確認をします。ファイルを上書きする時等、このオプションを付けていると確認をしてくるため誤った操作を防ぐことができます。 |
-f |
強制的に処理を実行します。一部の処理ではmvコマンドが確認の問い合わせをします。その確認を無視し、強制的に処理を実行するためのオプションが-fです。 |
11. cpコマンド
cpコマンドはファイルを複製し、新しくできた複製ファイルのファイル名を指定することができます。
書式)
cp [オプション] コピー元のファイル(ディレクトリ) コピー先ファイル(ディレクトリ)
例)
$ cp src-file dst-file
・src-fileがファイル名でdst-fileが存在しないファイル名の場合、src-fileのコピーとしてdst-fileが作成されます。
・src-fileがファイル名でdst-fileがディレクトリ名の場合、dst-fileんの下にsrc-fileのコピーが作成されます。
・src-fileがファイル名でdst-fileが存在するファイル名の場合、ファイルdst-fileはファイルsrc-fileのコピーで上書きされます。
オプション
オプション |
説明詳細 |
-f |
コピー先の既存のファイルやディレクトリが上書きできない場合、削除してからコピーする。 |
-i |
処理を行う時に確認をします。ファイルを上書きコピーする時等、このオプションを付けていると確認をしてくるため誤った操作を防ぐことができます。 |
-r または ーR |
ディレクトリをコピーします。通常cpコマンドはファイルをコピーする機能のみですが、-rオプションを付けることでディレクトリ内の全てのファイル・ディレクトリに対してコピーを行うことができます。 |
-p |
元のファイルの情報を保存します。ファイルには所有者・属性・更新日時等ファイルに関する様々な情報があります。cpコマンドでコピーすると新しいファイルはそれらが全て新しい内容になってコピーされます。-pオプションを付けると新しい内容を作成せず、古い情報を保持したままコピーを作成します。 |
cpコマンドはデフォルトでファイルを上書きしますが、権限などの理由で書き込み先のファイルが書き込みオープンできない場合、「-f」オプションはそのファイルを削除してからコピーします。
12. lnコマンド
lnコマンドは、ファイルのリンクを作成するためのコマンドです。「ln ファイル名 リンク名」でハードリンク、「-s」オプションを使い、「ln -s ファイル名 リンク名」としてシンボリックリンクを作成することができます。
13. findコマンド
findは指定したディレクトリ以下からファイルやディレクトリを検索するコマンドです。
書式)
find [検索起点ディレクトリ] [検索式] [アクション]
検索式
検索式 |
説明詳細 |
-name ファイル名 |
ファイル名で検索 |
-atime 日数 |
最終アクセス日で検索 |
-mtime 日数 |
最終更新日で検索 |
-perm アクセス権 |
アクセス権で検索 |
-size サイズ |
ファイルサイズで検索 |
-type ファイルの種類 |
ファイルの種類で検索(fはファイル、dはディレクトリ、lはシンボリックリンク) |
-user ユーザ名 |
ファイルの所有者で検索 |
-maxdepth 階層数 |
指定した階層まで検索 |
-mindepth 階層数 |
指定した階層から下を検索 |
アクション
アクション |
説明 |
-print |
検索結果を改行で区切って表示(省路可能) |
-print0 |
検索結果をNULL文字(¥0)で区切って表示 |
-exec コマンド名 {}¥; |
検索結果のファイルに対してコマンドを実行 |
14. chmodコマンド
ファイルやディレクトリのパーミッションを変更するにはchmodコマンドを利用します。
モード指定の書き方は2通りあります。
①モードの書式を複数書き、カンマで区切って指定。
②8進数3桁で各ユーザのレベルを指定。
書式)
chmod モード[,モード]... ディレクトリ
chmod モード[,モード]... ディレクトリ
chmod 8進数表記のモード ディレクトリ
chmod 8進数表記のモード ファイル
オプション
(1)方法①
モードは次のようにu(所有ユーザ)、g(所有グループ)、o(その他のユーザ)に対してr(読み)、w(書き)、x(実行またはディレクトリの変更)を設定したり(=)、加えたり(+)、取り消したり(-)します。u,g,oの全てに同じ権限を指定する時はaを指定します。
記号の場合 以下の記号を用います。
対象 |
説明詳細 |
u |
所有者 |
g |
所有グループ |
o |
その他ユーザ |
a |
全てのユーザ |
操作 |
説明詳細 |
+ |
権限を追加 |
- |
権限を削除 |
= |
権限を指定 |
権限 |
説明詳細 |
r |
読み取り権 |
w |
書き込み権 |
x |
実行権 |
s |
SUIDまたはSGID |
t |
スティッキービット |
対象、操作、権限の順に指定します。また「,」を使用して繰り返すことも出来ます。
644から755へ変更するには、全てのユーザへプラス1(6+1,4+1,4+1)すれば良いことになります。1は実行の権限を表します。 全てのユーザ(a)に実行権(x)を追加するには「a+x」とします。
もしくは、一旦全てのユーザ(a)に読み取り(4)と実行(1)の権限を設定(a=rx)してパーミッションを555とし、その後、所有ユーザ(u)に書き込み(2)の権限を追加(u+w)しても755となります。 これを記号で表すと「a=rx,u+w」となります。
なお、「a」のかわりに「ugo」としても同じ動作となります。
例)
# login penguin
Password: ******
Last login: Mon Apr 9 03:07:19 on pts/0
(ユーザ penguin でログインする)
$ touch chownfile
(ファイル chownfile を作成)
$ ls -l chownfile
-rw-rw-r-- 1 penguin penguin 0 Apr 9 03:27 chownfile
(ファイル chownfile のモードを確認)
$ chmod u+rw-x,go+r-wx chownfile
(ファイルモードを -rw-r--r-- に変更する)
$ ls -l chownfile
-rw-r--r-- 1 penguin penguin 0 Apr 9 03:27 chownfile
(ファイル chownfile のモードが変更されていることを確認)
(2)方法②
8進数を使用してもchmodコマンドでアクセス権を変更することができます。値は以下の表のように設定します。
例)
# login penguin
Password: ******
Last login: Mon Apr 9 03:25:20 on pts/0
(ユーザ penguin でログインする)
$ touch chownfile
(ファイル chownfile を作成)
$ ls -l chownfile
-rw-rw-r-- 1 penguin penguin 0 Apr 9 04:50 chownfile
(ファイル chownfile のモードを確認)
$ chmod 226 chownfile
(ファイルモードを --w--w-rw- に変更する)
$ ls -l chownfile
--w--w-rw- 1 penguin penguin 0 Apr 9 04:50 chownfile
(ファイル chownfile のモードが変更されていることを確認)
モードの指定にsetuidビットとsetgidビットとstickyビットという特殊な属性があります。setuidビットあるいはsetgidビットが付いたプログラムを実行するとファイル所有者あるいは所有グループの権限で実行されます。
stickyビットが付いたディレクトリ内のファイルは所有者以外が削除できなくなります。(Linuxではファイルについてのスティッキービットは無視されます。)Linuxでは一般的に/tmpディレクトリにスティッキービットが付与されています。
例)
# login penguin
Password: ******
Last login: Mon Apr 9 04:49:07 on pts/0
(ユーザ penguin でログインする)
$ touch idbitfile
(ファイル idbitfile を作成)
$ chmod u+rw-x,go+r-wx idbitfile
(ファイルモードを -rw-r--r-- に変更する)
$ ls -l idbitfile
-rw-r--r-- 1 penguin penguin 0 Apr 10 00:43 idbitfile
(ファイル idbitfile のモードが変更されていることを確認)
$ chmod u+s idbitfile
(setuid ビットを追加)
$ ls -l idbitfile
-rwSr--r-- 1 penguin penguin 0 Apr 10 00:43 idbitfile
(setuid ビットがセットされていることを確認)
$ chmod u-s,g+s idbitfile
(setuid ビットを除去、 setgid ビットを追加)
$ ls -l idbitfile
-rw-r-Sr-- 1 penguin penguin 0 Apr 10 00:43 idbitfile
(setuid ビットが除去され、 setgid ビットが追加されていることを確認)
$ chmod +t idbitfile
(sticky ビットを追加)
$ ls -l idbitfile
-rw-r-Sr-T 1 penguin penguin 0 Apr 10 00:43 idbitfile
(sticky ビットが追加されていることを確認)
15. chownコマンド
ファイルの所有者を変更するにはchownコマンドを使用します。ユーザとグループを変更するにはrootユーザである必要があります。ディレクトリとファイルは区別なく変更できます。ユーザとグループの区切りに「:」を使用することも可能です。
書式)
chown ユーザ[.グループ] ディレクトリ
chown ユーザ[.グループ] ファイル
オプション
例)
# login penguin
Password: ******
Last login: Mon Apr 9 01:41:41 on pts/0
(ユーザ penguin でログインする)
$ touch user
(ファイル user を作成)
$ ls -l user
-rw-rw-r-- 1 penguin penguin 0 Apr 9 02:18 user
(ファイルの所有者と所有グループを表示する)
(現在の所有者はpenguin、所有グループはpenguin)
$ chown nobody user
chown: changing ownership of 'user': Operation not permitted
(rootユーザではないので、所有者を変更ができません)
$ su
Password: ******
(カレントディレクトリはそのままrootユーザにログインする)
# chown nobody user
(所有者をユーザ nobody に変更する)
# ls -l user
-rw-rw-r-- 1 nobody penguin 0 Apr 9 02:18 user
(所有者がnobodyに変更されていることを確認)
16. psコマンド
プロセスとは、システム上で動作しているプログラムの最小単位のことです。
プログラムを実行すると1つまたは複数のプロセスがカーネルによって自動的に生成され、プログラムが終了するとプロセスはカーネルによって自動的に削除されます。
psコマンドで現在実行中のプロセスを確認することができます。
書式)
ps [オプション]
オプション
オプション |
説明詳細 |
a |
他のユーザのプロセスも表示(xオプションとの併用で全てのプロセスを表示) |
f |
プロセスの親子関係をツリー状で表示 |
u |
プロセスの実行ユーザ名も表示 |
x |
制御端末の無いデーモン等のプロセスも表示 |
-e |
全てのプロセスを表示 |
-f |
完全なフォーマットでプロセスを表示 |
-p または p PID |
PID 指定したPID(プロセスID)のプロセス情報を表示 |
-l または l |
親プロセスのPID (PPID)や実行優先度を決定するnice値(NI)なども併せて表示 |
※「-」を付けないBSDオプションと、「-」で始まるUNIXオプションがある
また、表示形式は異なりますが「pstree」コマンドでもプロセスの親子関係をツリー状で表示できます。
17. killコマンド
killコマンドで、プロセスに終了や再起動などのシグナル(命令)を送ることができます。
killコマンドはプロセスID(PID)を使用して単一のプロセスにシグナルを送ります。
書式)
kill [-シグナル名または-シグナル番号] プロセスID
または
kill -s [シグナル名またはシグナル番号] プロセスID
シグナル
シグナル名 |
シグナル番号 |
動作 |
HUP(SIGHUP) |
1 |
ハングアップ(端末の切断による終了) |
INT(SIGINT) |
2 |
割り込みによる終了(CtrltCキー押下と同様) |
KILL(SIGKILL) |
9 |
クリーンアップせずに終了(強制終了) |
TERM(SIGTERM) |
15 |
クリーンアップして終了(デフォルト) |
ICONT(SIGCONT) |
18(環境依存) |
一時停止のプロセスを再開 |
STOP(SIGSTOP) |
19(環境依存) |
一時停止 |
TSTP(SIGTSTP) |
20(環境依存) |
端末から入力された一時停止(CtrltZキー押下と同様) |
例)
kill -SIGHUP 1133
例)
killall -SIGHUP mycommand
また、killコマンドはジョブ番号を指定し、ジョブにシグナルを送る事もできます。ジョブ番号は「%ジョブ番号」と指定します。
例)
kill %2
★最後に
いかがでしたでしょうか?
今回は「Linux標準教科書 -Ver. 3.0.4-」 で学習した中からピックアップしたコマンドについて自分なりにまとめてみました。
気になった方は是非読んでみては如何でしょうか?