Linux標準教科書 第3章(v304対応)
基本的なコマンド
3.1 ファイル操作
3.1.1 ファイルとディレクトリ
コンピュータの基本的な作業は、情報(=データ)を処理する事にあります。データをコンピュータ上に保存しておく方法としてファイルという形式が用いられます。ファイルの数が増えると、内容や用途といった目的別に分ける必要がで出来ます。この時に必要なものが、ディレクトリという考え方です。複数のファイルをまとめておくことが出来ます。
3.1.2 ファイルやディレクトリの参照(ls)
ファイルを操作する上で一番最初に必要になるコマンドは、その一覧を取得するコマンドです。lsコマンドはファイル名やディレクトリ名を指定して情報を取得することが出来ます。
ls [オプション] [ファイル名]
ls -a .(ドット)で始まる隠しファイル等も全て出力
ls -l 長(Long)形式 詳細を表示して横長で出力
ls -1 縦に並べることができる
ls -t 最終更新時間(Time)によってソートして出力
ls -r 逆順(Reverse)にソートして出力
実習:lsコマンドの実行
現在いるディレクトリ内にある ファイルやディレクトリの一覧を表示するコマンドの ls コマンドを実行。
$ ls
ダウンロード デスクトップ ビデオ 画像
テンプレート ドキュメント 音楽 公開
実習:場所を指定したディレクトリ一覧の取得
ls /usr/
X11 bin libexec sbin standalone
X11R6 lib local share ※表示が異なる事があります
書式とは
書式とはそのコマンドが用いられる形式を示しています。コマンド実行に必要な要素をどのように列挙するかを示しています。
オプションとは
コマンドはオプションをつけることでその動作を変えることが出来ます。
実習:/etcディレクトリ上にあるファイルやディレクトリの一覧を表示
$ ls /etc
DIR_COLORS hostname puppet
DIR_COLORS.256color hosts rc.d
DIR_COLORS.lightbgcolor hosts.allow rc.local
GREP_COLORS hosts.deny rc0.d
NetworkManager idmapd.conf rc1.d
X11 init.d rc2.d
adjtime inittab rc3.d
aliases inputrc rc4.d 以下略
lsコマンドの結果から *ワイルドカードを使って絞り込みます。この間に何文字が入っても検索結果として出力されます。
$ cd /etc/
$ ls *.conf
asound.conf kdump.conf logrotate.conf resolv.conf tcsd.conf
dnsmasq.conf krb5.conf man_db.conf rsyslog.conf vconsole.conf
dracut.conf ld.so.conf mke2fs.conf sestatus.conf yum.conf
e2fsck.conf libaudit.conf nfsmount.conf sudo-ldap.conf
host.conf libuser.conf nsswitch.conf sudo.conf
idmapd.conf locale.conf request-key.conf sysctl.conf
*は任意の文字列を示しており、この間に何文字が入っても検索結果として出力されます。そのため、上記のように多くの conf で終わるファイルがリスト表示されたはずです。
ファイル名の文字数がわかっている場合は ? を使って絞り込む事が出来ます。
$ cd /etc
$ ls ???.conf
yum.conf
?は一個につき何らかの一文字を示します。そのため、ファイル名部分が 3 文字の conf が検索結 果として出力されます。
hosts. のあとに何らかの名前のつくファイルを絞り込み
$ cd /etc
$ ls hosts.*
hosts.allow hosts.deny
hosts. の後に4文字含まれるファイルの絞り込み
$ cd /etc
$ ls hosts.????
hosts.deny
hosts. の後に4文字+最後の文字がwであるファイルの絞り込み
$ cd /etc
$ ls hosts.????w
hosts.allow
実習:ls -l コマンドの実習
-l オプションをつけて ls コマンドを実行した場合、情報が長形式で出力されます
$ ls -l yum.conf
-rw-r–r–. 1 root root 970 3月 9 2015 yum.conf
3.1.3 ドットファイルの表示
実習:ls -a ls -la 隠しファイル( . ドット)を含めたコマンド実行
$ ls -a
. .bashrc .veewee_version base.sh vagrant.sh
.. .ssh .viminfo cleanup.sh virtualbox.sh
.bash_logout .vbox_version lsdate.sh zerodisk.sh
.bash_profile .veewee_params puppet.sh
3.1.4 オプションの同時指定と順序
オプションはまとめてもまとめなくても同じ結果になります。順不同なので入れ替えても同じ結果になります。ただしコマンドによっては順序と文法が細かく決まっている場合がありますのでマニュアルやオプションを確認して下さい。
$:ls -la
$:ls -al
$:ls -l -a
$:ls -a -l この4つは同じ意味になります。
実習:ls -lt コマンド実行
ファイルの更新時刻順にソートしてリスト表示しましす。
$ ls -lt
合計 36
-rwxrw-r– 1 vagrant vagrant 92 12月 10 08:59 BBB.sh
-rwxrw-r– 1 vagrant vagrant 60 12月 10 08:54 CCC.sh
-rwxrw-r– 1 vagrant vagrant 22 12月 10 02:08 lsdate.sh
-rwxr-xr-x 1 vagrant vagrant 105 7月 16 2015 zerodisk.sh
-rwxr-xr-x 1 vagrant vagrant 118 7月 16 2015 cleanup.sh
-rwxr-xr-x 1 vagrant vagrant 260 7月 16 2015 virtualbox.sh
-rwxr-xr-x 1 vagrant vagrant 674 7月 16 2015 vagrant.sh
-rwxr-xr-x 1 vagrant vagrant 360 7月 16 2015 puppet.sh
-rwxr-xr-x 1 vagrant vagrant 450 7月 16 2015 base.sh ※お使いの環境によって違います。
3.1.5 ファイルのコピー(cp)
ファイルを扱う上で複製を作成するなどコピーを行うコマンドです。
実習:cp コマンド実行
src-file がファイル名で、dst-file が存在しないファイル名の場合、src-file のコピーとして dst-file が作成されます。
$ cp src-file dst-file
$ ls
BBB.sh base.sh dst-file puppet.sh vagrant.sh zerodisk.sh
CCC.sh cleanup.sh lsdate.sh src-file virtualbox.sh
$ mkdir LinuxCertification
$ ls
BBB.sh LinuxCertification cleanup.sh lsdate.sh src-file virtualbox.sh
CCC.sh base.sh dst-file puppet.sh vagrant.sh zerodisk.sh
$ cp src-file LinuxCertification/
$ ls LinuxCertification/
src-file
touch(第5章)コマンドで src-fileを作ります。 src-fileをdst-fileという名前でコピーしました。src-fileをLinuxCertificationフォルダの中にコピーしました。 ※上記 mkdir コマンドで LinuxCertification というディレクトリを作成しています。
オプション
cp -i
処理を行う時に確認します。誤まって上書きコピーすることを防ぎます。
cp -r
ディレクトリをコピーします。cpコマンドは基本的にファイルをコピーする機能ですが -rオプションをつけるとディレクトリの中にある全てのファイル・ディレクトリに対してコピーを行います。
cp -p
元ファイルの情報を保持します。新しい内容を作成しないで古い情報を保持したままコピーを作成したい場合に使います。
実習:cpコマンドの実習
オプションを付けないで cp コマンドを実行。
$ cd ~
$ cp /etc/hosts ~
$ ls
hosts
次にファイルを別名としてコピー。
$ cd ~
$ cp /etc/hosts ~/hosts.newname
$ ls
hosts
hosts.newname
cp コマンドを-p オプションを付けて実行。
$ cp -p hosts.newname hosts.sametime
$ ls -l
total 48
-rw-r–r– 1 satodatetoru staff 213 5 14 16:43 hosts
-rw-r–r– 1 satodatetoru staff 213 5 14 16:53 hosts.newname
-rw-r–r– 1 satodatetoru staff 213 5 14 16:53 hosts.sametime
cp コマンドを-r オプションを付けて実行してみます。ここでは 2 つのディレクトリを mkdir コマンド(後述)で作成して、ファイルをコピー。
$ mkdir olddir newdir
(olddir と newdir を作成)
$ cp -r olddir/ newdir/
$ ls newdir/
olddir
3.1.6 ファイルの移動(mv)
ファイルを移動(MoVe)する時に使用しますがmvコマンドでファイルの名前を変えたい時にも便利です。
$ mv src-file mv-file
$ ls
dst-file mv-file
ファイルを別のディレクトリに移動
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 ディレクトリ名が変更されます。
実習:mv コマンド実行
1 まず、ファイル名の名前を変更してみます。hosts.newname が hosts.renew ファイルに名前が変更されました。
$ touch hosts.newname
$ ls
hosts.newname dst-file
$ mv hosts.newname hosts.renew
$ ls -l
-rw-rw-r– 1 vagrant vagrant 0 12月 11 06:16 hosts.renew
-rw-rw-r– 1 vagrant vagrant 0 12月 11 00:33 dst-file
2 ファイルを別のディレクトリに移動します。ここでは test ディレクトリを mkdir コマンドで作成してファイルを移動してみましょう。
$ mkdir test
$ mv hosts.renew test/
$ ls
dst-file test
$ cd test
$ ls
hosts.renew
test ディレクトリに、 host.renew を移動することができました。
3.1.7 ファイルの削除(rm)
作成したファイルを削除するときに利用するコマンドが、rm(ReMove) コマンドです。rm コマン ドは、削除したいファイルを指定します。
実行例
$ rm dst-file
$ ls
test
$ rm -r test
$ ls
$
rmのコマンドはファイル名を対象にします。 -r オプションでディレクトリ対象にしてディレクトリの中のファイルやディレクトリも削除します。
実習:mv コマンド実行
$ rm hosts.sametime
$ rm -r test
$ ls -l
-rw-r–r– 1 個人ネーム 0 5 16 15:33 hosts
(略)
共通オプションについて
cp と rm に同じようなオプションがあったことに気がついたでしょうか? コマンドオプションはいくつかありますが、その 1 つに-r があります。cp に-r オプションを付けた場合はディレ クトリ階層全部コピーすることを示し、rm に-r オプションを付けた場合はディレクトリ階層の 中をすべて削除します。-r は recursive(再帰)を示すオプションで、「ディレクトリの中のディ レクトリの中の・・・」という階層構造の中の中までを意味します。
3.2 ディレクトリの操作(pwd,cd,mkdir,rmdir)
3.2.1 現在のディレクトリの表示(pwd)
ディレクトリは階層構造になっています。現在どの位置いるのか表示するのがpwd(Print Working Directory)です。
$ pwd
/home/vagrant
現在このユーザは /home/vagrant というディレクトリにいることがわかります。 / は、ディレクトリの区切りを示す記号です。
3.2.2 ディレクトリの変更 (cd)
cd(Change Directory) コマンドを実行すると、現在いるディレクトリを変更することができます。cd の後にスペースを入力し、続けて移動先のディレクトリを指定します。
実習:ディレクトリの移動
$ pwd
/home/vagrant
$ cd /usr
$ pwd
/usr
cd ディレクトリを指定しない場合ホームディレクトリに移動
cd ~ ホームディレクトリに移動
cd .. 一つ上の階層に移動
3.2.3 ディレクトリの作成(mkdir)
mkdirコマンドを3つに分けて実行しました。ディレクトリを作るときはその上位層が出来ていないと作成出来ないという制約があるため -p オプションをつけて実行しました。
実習:mkdir -p コマンドの実行
$ mkdir dir1/dir2/dir3
mkdir: ディレクトリ `dir1/dir2/dir3′ を作成できません: そのようなファイルやディレクトリはありません
$ mkdir -p dir1/dir2/dir3
$ ls
dir1
$ cd dir1
$ ls
dir2
$ cd
$ ls -R dir1
dir1:
dir2
dir1/dir2:
dir3
dir1/dir2/dir3:
-R オプションをつけて階層的にディレクトリを表示させることができます。
3.2.4 ディレクトリの削除(rmdir)
rmdirコマンドはディレクトリを削除するコマンドですが削除対象のディレクトリは空である必要があります。空でないディレクトリを削除するには rmdir コマンドではなく rm -r で実行します。
$ cd
$ ls
directory
$ rmdir directory/
rmdir: `directory/’ を削除できません: ディレクトリは空ではありません
$ rm -r directory/
$ ls
directory
実習:ディレクトリの削除
$ mkdir directory1 directory2
$ touch directory2/file
$ ls
directory1 directory2
$ rmdir directory1
$ ls
directory2
$ rmdir directory2
rmdir: `directory2′ を削除できません: ディレクトリは空ではありません
$ rm -r directory2/
$ ls
rmdir コマンドはディレクトリを削除するコマンドですが、削除対象のディレクトリは空である 必要があります。 空ではないディレクトリを削除するには rmdir コマンドではなく、rm コマンドに-r オプションを 付けて実行します。このコマンドを実行すると、特に警告されることなく指定したディレクトリ以 下のディレクトリとファイルを削除することができます。 ただし、通常利用時は rmdir を使う癖をつけておくと、必要なディレクトリを誤って削除してし まうミスを軽減できるので安心です。
3.2.5 特別なディレクトリ
カレントディレクトリ( . )ドット
現在いるディレクトリです。
親ディレクトリ( .. )ドットドット
1階層上のディレクトリのことです。
ホームディレクトリ( ~ )チルダ
ユーザの作業開始位置となるディレクトリです。ログイン直後のユーザは必ずホームディレクトリにいます。
ルートディレクトリ( / )
ディレクトリ階層の最上位層を示します。ファイルやディレクトリ操作では「 / ルート」を使って表します。
3.2.6 絶対(パス)指定と相対(パス)指定
カレントディレクトリが /usr/local とします。このとき、/usr/bin/xxx ファイルを指定するには下記の2通りが存在します。
1 /usr/bin/xxx 絶対(パス)
最上位のディレクトリ( /) からディレクトリ・ファイル名を指定しています。どのディレクトリにいてもパスを指定できます。常に( / )ルートから指定するので記述が長くなることがあります。
2 ../bin/xxx 相対(パス)
自分が現在いる位置から見てディレクトリ・ファイルを指定しています。現在のディレクトリが変わると利用できません。現在の位置から見て非常に近いディレクトリの時は指定の記述が短くて済む利点があります。
実習:様々なディレクトリへの移動
vagrant ユーザがいると仮定してコマンドを実行しています。
cd ~
$ pwd
/home/vagrant
$ cd ..
$ pwd
/home
$ cd /usr
$ pwd
/usr
$ cd ~
$ pwd
/home/vagrant
$ cd ../../
$ pwd
/
絶対パスとはフルパスとも呼ばれていてルートディレクトリと呼ばれる階層構造の頂点から目的地までの経路を表します。
相対パスはユーザが現在作業しているフォルダからの目的のフォルダまでの経路を表します。プロエンジニア様引用
3.3 ファイルの内容を表示
3.3.1 ファイルの内容を表示( cat )
ファイルの内容を確認するコマンドです。 -n オプションで行番号を表示出来ます。
※テキストファイルを表示するコマンドです
実習:cat コマンドの実習
ホームディレクトリ内のファイル.bashrc を確認してみましょう。
$ cat ~/.bashrc
# .bashrc
# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
(略)
$ cat -n ~/.bashrc
1 # .bashrc
2
3 # Source global definitions
4 if [ -f /etc/bashrc ]; then
5 . /etc/bashrc
3.3.2 ページャを使った表示
cat コマンドを使ってファイルファイルの内容を表示するとき行数がたくさんあると表示が流れてしまいます。たくさんの行があっても画面制御を行ってスクロールを途中で止めてくれる機能のことをページングといい、それを表現するコマンドをページャと言います。代表的なページャとしては more や less コマンドがあげられます。使い方は cat コマンドなどと同 じで、オプションとしてページングする対象のファイル名をとります。
使い方は cat コマンドと同じです。
実習:ページャを使ったファイル閲覧
$ more /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
$ less /etc/hosts
※様々なコマンド入力後 q を入力して終了させてください。
3.4 ファイルの検索( find )
ファイルがどこのディレクトリに存在するか find コマンドで検索出来ます。
実習:ファイルの検索 [find パス -name ファイル名]
$ find /etc/ -name hosts
find: ‘/etc/pki/CA/private’: 許可がありません
find: ‘/etc/pki/rsyslog’: 許可がありません
find: ‘/etc/audit’: 許可がありません
/etc/hosts
find: ‘/etc/polkit-1/rules.d’: 許可がありません
find: ‘/etc/polkit-1/localauthority’: 許可がありません
find コマンドはパスで指定した配下の全てのディレクトリへの検索を試みますので、必要であれば適切な権限を持ったユーザへ切り替えてください。
3.5 コマンドのパス
3.5.1 コマンドのパスを表示( which )
whichというコマンドを用いるとPATH環境変数に含まれるディレクトリ配下に配置されているコマンドを表示する事が出来ます。
実習:which コマンドの実行
catのコマンドのパスを確認してみます。
$ echo $PATH
/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/vagrant/.local/bin:/home/vagrant/bin
$ which cat
/usr/bin/cat
コマンドが存在するディレクトリが PATH 環境変数に含まれていないと、which コマンドの結果 はエラーとなります。例えば管理者権限が必要なコマンドへのパスは一般ユーザでは設定されてい ないため(設定されているディストリビューションもあります)、which コマンドでは確認できない ことがあります。
3.6 ヘルプの使い方
コマンドにはヘルプが含まれている事があります。実行したいコマンドに対して –help (ブラウザによって ー に見えることがありますが – – です)オプションなどをつけて実行することでコマンドの実行に使えるオプションを調べる事が出来ます。
$ ls –help
使用法: ls [オプション]… [ファイル]…
List information about the FILEs (the current directory by default).
Sort entries alphabetically if none of -cftuvSUX nor –sort is specified.
Mandatory arguments to long options are mandatory for short options too.
-a, –all . で始まる要素を無視しない
-A, –almost-all . および .. を一覧表示しない
–author -l と合わせて使用した時、各ファイルの作成者を表示する
-b, –escape 表示不可能な文字の場合に C 形式のエスケープ文字を表示する
–block-size=SIZE scale sizes by SIZE before printing them; e.g.,
‘–block-size=M’ prints sizes in units of
1,048,576 bytes; see SIZE format below
※以下略
3.7 マニュアルの使い方
実行例
$ man ls
LS(1) User Commands LS(1)
NAME
ls – list directory contents
SYNOPSIS
ls [OPTION]… [FILE]…
DESCRIPTION
List information about the FILEs (the current directory by default). Sort entries
alphabetically if none of -cftuvSUX nor –sort is specified.
Mandatory arguments to long options are mandatory for short options too.
-a, –all
do not ignore entries starting with . ※以下略
そのほか、以下の項目があります。
説明
このプログラムに関する説明です。
POSIX/GNU オプション
プログラムで利用可能なオプションです。指定したオプションによって動作が変わります。
関連項目
このプログラムに関連しているコマンドや、他の機能です。
注意
このプログラムに関する注意事項やバグの報告先などの情報が書かれています。
実習:manコマンドの実行
$ $ man cp
man コマンドの表示は、ページャ機能が利用されます。従ってスクロール等は less コマンドの操 作と同じになります。
3.7.1 セクション
ls のマニュアルで「LS(1)」という記述があります。lsのマニュアルがセクション1にあるという意味です。セクションには番号がついており以下の表になっています。
実習:セクション別のマニュアル表示
内容が複数のマニュアルに分かれていることがあります。今回は passwd コマンドのマニュアル を開き、別セクションのドキュメントを開いてみましょう。
$ man 5 passwd
PASSWD(5) File Formats Manual PASSWD(5)
NAME
passwd, master.passwd – format of the password file
DESCRIPTION
The /etc/passwd file is a legacy BSD 4.3 format file. It is mostly unused,
but is updated by some utility programs. Its format is similar to the
/etc/master.passwd file, except that it does not contain the class, change,
and expire fields described below.以下略
3.8 章末テスト(解答は下記へ)
(1)ファイルやディレクトリを参照するコマンドを記述しなさい
(2) /media/cdrom/の中身を最新更新日に並べて表示するコマンドを選びなさい
1. ls -lf /media/cdrom/
2. ls -la /media/cdrom/
3. ls -lt /media/cdrom/
4. ls -l /media/cdrom/
(3)今いるパスを表示するコマンドを記述しなさい
(4)/home/user フォルダにある test というファイルを /root/backup フォルダに移動します。以下の空欄にあてはまるコマンドを書きなさい
# ( ) /home/user/test /root/backup
# ( ) /root/backup
合計 4
-rw-r–r– 1 root root 19 6月 14 11:11 2018 test
(5) パス /etc の中のファイルでファイル名の一部に「resolv」という文字列が含まれるファイルを検索するコマンドを記述しなさい
テキストと問題集の購入は下記の画像をクリックして下さい。
章末テスト解答
(1) ls
(2) 3
(3) pwd
(4) mv ls -l
(5) find /etc/ -name resolv