よく使うLinuxコマンドまとめ
コマンド一覧
pwd
現在のカレントディレクトリを表示
% pwd
/Users/mino/zenn
cd
カレントディレクトリを変更
% pwd
/Users/mino/zenn
# macbook ディレクトリへ移動
% cd macbook
% pwd
/Users/mino/zenn/macbook
- チルダ展開:ホームディレクトリへ移動
# ~(チルダ)によるホームディレクトリの指定
% cd ~
% pwd
/Users/mino
ls
ファイルやディレクトリを一覧表示する
% ls
index.php iphone macbook readme.md
zenn
├── macbook
├── iphone
├── index.php
└── readme.md
* と ?
ファイル名の一部をパターンで指定することにより、複数のファイルを指定するパス名展開という機能があり、*(アスタリスク) と ?(クエスチョンマーク) の記号を利用する
- *:任意の文字列
# re で始まるファイル一覧を表示
% ls re*
readme.md
# 拡張子が `.php` のファイル一覧を表示
% ls *.php
index.php
- ?:任意の1文字
任意の1文字だけに対応する点が「*」と異なる
# ファイル名が read で始まり、全体の長さは9文字のファイルを表示
% ls read?????
readme.md
ls コマンドのオプション
-
-l
:ファイル名だけでなくファイル属性など詳細情報を同時に表示
% ls -l
total 0
-rw-r--r-- 1 mino staff 0 5 9 23:14 index.php
drwxr-xr-x 2 mino staff 64 5 9 22:57 iphone
drwxr-xr-x 2 mino staff 64 5 9 22:56 macbook
-rw-r--r-- 1 mino staff 0 5 9 23:10 readme.md
-
-a
:隠しファイルも含めた全てのファイルを表示
% ls -a
. .DS_Store iphone readme.md
.. index.php macbook
-
-F
:ファイル名の後ろにファイルの種類を表す記号を追加して表示
% ls -F
index.php iphone/ macbook/ readme.md
-F オプションで表示されるファイル種類
種類 | 記号 |
---|---|
通常ファイル | なし |
ディレクトリ | / |
実行可能ファイル | * |
シンボリックリンク | @ |
mkdir
新しいディレクトリを作成
# ディレクトリを作成する
mkdir [option] <作成するディレクトリ名>
zenn
ディレクトリの下に、練習用の work
ディレクトリを作る
% mkdir work
% ls -F
index.php iphone/ macbook/ readme.md work/
zenn
├── macbook
├── iphone
├── index.php
├── readme.md
└── work <--------- 追加
mkdir コマンドのオプション
-
-p
:存在しない親ディレクトリも含めて、何階層もある深いディレクトリを作成する
% mkdir -p report/2023/05
% ls -l report/2023/05
total 0
zenn
├── index.php
├── iphone
├── macbook
├── readme.md
├── report <--------- 追加
│ └── 2023 <--------- 追加
│ └── 05 <--------- 追加
└── work
touch
中身が何も書かれていない空っぽのファイルを作成する。
複数のファイルをまとめて作成したい場合は、スペースで区切って並べる。
touch
コマンドでのファイル作成は、間違って既存のファイル名を指定しても、内容が上書きされたり削除されたりしない。
touch <新しいファイル名1> <新しいファイル名2> ...
% touch newfile
% ls -F
index.php macbook/ readme.md work/
iphone/ newfile report/
zenn
├── index.php
├── iphone
├── macbook
├── newfile <--------- 追加
├── readme.md
├── report
│ └── 2023
│ └── 05
└── work
rm
ファイルを削除する
rm [option] <削除するファイル名1> <削除するファイル名2> ...
# ファイルを4つ作成
% touch file1 file2 file3.html file4.html
% ls
file1 file3.html index.php macbook readme.md
file2 file4.html iphone newfile work report
# まとめて削除
% rm file1 file2
% ls
file3.html index.php macbook readme.md
file4.html iphone newfile work report
# パス名展開(*)を利用し、複数ファイルを指定して削除
% rm *.html
% ls
index.php macbook readme.md work
iphone newfile report
rm コマンドのオプション
-
-r
:再帰的にディレクトリツリーを削除する
注意:この際、削除対象ディレクトリの中のファイルやディレクトリもまとめて削除される
% rm -r report
% ls
index.php iphone macbook newfile readme.md work
-
-i
:本当に削除して良いか確認を求める
# YESを意味する y または Y を入力した後に Enter を押すと、ファイルが削除される
% rm -i readme.md
remove readme.md?
rmdir
空のディレクトリを削除する
rmdir <ディレクトリ名>
% ls -F
index.php iphone/ macbook/ newfile readme.md work/
# 空のディレクトリを削除
% rmdir macbook
% ls
index.php iphone newfile readme.md work
中にファイルがあるディレクトリを削除しようとするとエラーとなる
# 任意のディレクトリにファイルを追加
% touch iphone/11.go
% ls iphone
11.go
# エラー
% rmdir iphone
rmdir: iphone: Directory not empty
cat
ファイルの内容を表示する
cat [option] <ファイル名>
# /etc/hosts ファイルの内容を表示
% cat /etc/hosts
##
# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting. Do not change this entry.
##
127.0.0.1 localhost
cat コマンドのオプション
-
-n
:行番号を表示する
% cat -n /etc/hosts
1 ##
2 # Host Database
3 #
4 # localhost is used to configure the loopback interface
5 # when the system is booting. Do not change this entry.
6 ##
7 127.0.0.1 localhost
less
長いファイルの内容を見たい時には、less
コマンドを使ってスクロール表示する
less [option] <ファイル名>
# index.php の内容をスクロール表示する
% less index.php
less コマンドのスクロール操作
コマンド | 内容 |
---|---|
スペースキー、f、Ctrl + v | 1画面下にスクロールする |
b | 1画面上にスクロールする |
j、Ctrl + n、Enterキー | 1行下にスクロールする |
k、Ctrl + p | 1行上にスクロールする |
q | less コマンドを終了する |
「/」: ファイル内の検索
less コマンドでは、現在開いているファイルから文字列を検索することができる。
ファイルを表示中に「/」を入力すると、画面の1番下の行が、検索文字列の入力欄に変わる。
この「/」の後ろに、検索したい文字列を入力して Enterキーを押すことで、文字列をファイルの中から検索することができる。
⬇️ Hello
という文字列を検索する例
less コマンドの検索操作
コマンド | 内容 |
---|---|
/<文字列> | 下方向に向かって検索する |
?<文字列> | 上方向に向かって検索する |
n | 次の検索結果に移動する |
N | 前の検索結果に移動する |
cp
ファイル・ディレクトリをコピーする
cp [option] <コピー元> ... <コピー先>
# ファイルを別名でコピーする
% cp readme.md writeme.md
% ls
index.php newfile work
iphone readme.md writeme.md
zenn
├── index.php
├── iphone
│ └── 11.go
├── newfile
├── readme.md
├── work
└── writeme.md <--------- 追加
コピー先にディレクトリを指定した場合には、コピー元のファイルをそのディレクトリ内に、同一ファイル名でコピーする。
# ファイル(index.php)をディレクトリ(iphone)へコピーする
% cp index.php iphone
zenn
├── index.php
├── iphone
│ ├── 11.go
│ └── index.php <--------- 追加
├── newfile
├── readme.md
├── work
└── writeme.md
cp コマンドのオプション
-
-i
:コピー先にファイルが存在する場合に本当に上書きしても良いか確認する
cp コマンドは、コピー先のファイルが既に存在していたとしても、確認などせずにそのまま上書きしてしまうので、-i
オプションを付けて確認する必要があります。
% cp -i readme.md writeme.md
overwrite writeme.md? (y/n [n])
-
-r
:ディレクトリをコピーする
ディレクトリをコピーする時は、再帰的にコピーを実行する -r
オプションを指定する必要がある。
この場合、ディレクトリ macbook
が存在していなければ、iphone
をmacbook
という名前でコピーします。
% ls -F
index.php newfile work/
iphone/ readme.md writeme.md
% ls iphone
11.go index.php
% cp -r iphone macbook
% ls macbook
11.go index.php
一方、macbook
というディレクトリが既に存在している場合には、コピー先にディレクトリを指定したとみなされ、iphone
をmacbook
の中に名前を変えずにコピーする。
% cp -r iphone macbook
% ls -F macbook
11.go index.php iphone/
mv
ファイル・ディレクトリを移動する
mv [option] <移動元> ... <移動先>
<移動元>、<移動先>の両方にファイル名を指定した場合、ファイル名の変更をしているのと同じことになる。
# テスト用のディレクトリとファイルを作成
% mkdir ipad
% cd ipad
% touch pro12.9
# pro12.9 ファイルを、pro11 という名前にして移動する
# 元の pro12.9 ファイルは存在しなくなる
% mv pro12.9 pro11
% ls
pro11
<移動元>にファイル名、<移動先>にディレクトリ名を指定した場合、<移動先>の中に<移動元>を移動させる。
# pro11 ファイルを、ディレクトリ iphoneの中に移動
% mv pro11 ../iphone
% ls -l
total 0
zenn
├── ipad
├── iphone
│ ├── 11.go
│ ├── index.php
│ └── pro11 <--------- 移動
...(省略)...
<移動元>にディレクトリ名、<移動先>にディレクトリ名を指定するだけで、そのディレクトリの下にあるファイルもまとめて移動することができる。
# iphone を apple の下に、ディレクトリごとに移動
% mkdir apple
% ls iphone
11.go index.php pro11
% mv iphone apple
% ls apple/iphone
11.go index.php pro11
ln
リンクを張る
ln [option] <リンク元ファイル名> <リンク名>
リンクとは
Linuxファイルシステムで、ファイルに別名を付ける機能
ハードリンク
ハードリンクとは
1つのファイルの実体に複数の名前を付ける機能
# ハードリンク read を作成
% cd dir1
% cp ../readme.md readme.md
% ls
readme.md
% cat readme.md
readmeの元ファイルです
% ln readme.md read
% ls
read readme.md
これにより、別のコマンドからファイル名としてread
を指定すると、元のreadme.md
にアクセスできる。
# ハードリンクを指定してコマンドを実行
% cat read
readmeの元ファイルです
- ハードリンクの削除
rm
コマンドでハードリンクを削除したファイルを削除すると、指定したファイル名だけ取り除かれ、ファイルの実体は残ったままとなる。
% rm readme.md
% ls
read
% cat read
readmeの元ファイルです
ハードリンクを持つファイルの実体は、全てのハードリンクがなくなった時に削除される。
% rm read
% ls -l
total 0
シンボリックリンク
シンボリックリンクとは
リンク先のパス名が書かれた小さな特殊ファイルで、ハードリンクとは違い、リンク先がファイルの実体であり本物のファイル
シンボリックリンクはディレクトリに対して作成できなかったり、異なるディスク間をまたがることができないなどの制限を受けないため、現在はこちらの方がよく使われる。
ln
コマンドに-s
オプションを付けることで、シンボリックリンクを作成できる。
# readme.md ファイルに対して、rd という名前でシンボリックリンクを作成
% ln -s readme.md rd
# シンボリックリンクを確認
% ls -l
total 16
lrwxr-xr-x 1 mino staff 9 5 13 22:09 rd -> readme.md
-rw-r--r-- 2 mino staff 31 5 13 21:17 readme.md
# シンボリックリンクを指定してコマンドを実行
% cat rd
readmeの元ファイルです
- シンボリックリンクの削除
rm
コマンドを利用して削除する。この際、リンク先のファイルには何も影響を与えない。
% rm rd
% ls -l
total 16
-rw-r--r-- 2 mino staff 31 5 13 21:17 readme.md
シンボリックリンクを残したまま、リンク先の実体ファイルを削除することもできる。
この場合は、シンボリックリンクはリンク先がなくなり、「リンクが壊れた」状態となる。
% ln -s readme.md rd
% ls -l
total 16
lrwxr-xr-x 1 mino staff 9 5 13 22:22 rd -> readme.md
-rw-r--r-- 2 mino staff 31 5 13 21:17 readme.md
# リンク先のファイルを削除
% rm readme.md
% ls -l
total 8
lrwxr-xr-x 1 mino staff 9 5 13 22:22 rd -> readme.md
# エラー
% cat rd
cat: rd: No such file or directory
find
ディレクトリツリーからファイルを探す
find <検索開始ディレクトリ> <検索条件> <アクション>
find
コマンドを実行すると、<検索開始ディレクトリ>を起点として、<検索条件>を満たすファイルを探し、<アクション>を実行する。
<検索条件>に何も指定しなかった場合には、全てのファイルとディレクトリが対象となる。
# findコマンドの例
# 検索開始ディレクトリ:. (カレントディレクトリ)
# 検索条件 :-name 11.go(ファイル名を「11.go」に絞り込む)
# アクション :-print(パス名を表示する)
% find . -name 11.go -print
./apple/iphone/11.go
./macbook/11.go
./macbook/iphone/11.go
このように、find
コマンドでは、指定したディレクトリの直下のファイルだけでなく、ディレクトリツリーを順に下りながら検索条件に一致するファイル全てを表示する。
ファイル名を探す(-name、-iname)
-
-name
:ファイル名の大文字小文字を区別する -
-iname
:ファイル名の大文字小文字を区別しない
ファイル名指定には、ワイルドカードとして 「*」(任意の文字列)と「?」(任意の1文字)が利用できる。
なお -name
で「」や「?」を利用する際には、「」などの記号がbashのパス名展開と解釈されないようにするため、’’(シングルクォーテーション)を必ず付ける。
% find . -name '*.php' -print
./apple/iphone/index.php
./index.php
./macbook/index.php
./macbook/iphone/index.php
ファイルの種類で探す(-type)
ファイルの種類により検索条件を絞り込むこともできる。指定できるファイルタイプは多くあるが、まずは次の3種類だけ紹介する。
指定 | ファイル種別 |
---|---|
-type f | 通常ファイル |
-type d | ディレクトリ |
-type l | シンボリックリンク |
# カレントディレクトリ以下にあるディレクトリのみ表示
% find . -type d -print
.
./apple
./apple/iphone
./macbook
./macbook/iphone
./work
./ipad
./dir1
複数の検索条件の指定(-a)
find
コマンドでファイルを検索するとき、検索条件を-a
(AND)で区切って並べることで、複数の検索条件を同時に指定するAND検索ができる。
# 条件1:通常ファイルであり
# 条件2:ファイル名が .md で終わるファイル
% find . -type f -a -name '*.md' -print
./writeme.md
./dir1/readme.md
なお、-a
は省略可能。単に検索条件を並べて書いてもAND検索になる。
% find . -type f -name '*.md' -print
./writeme.md
./dir1/readme.md
locate
パス名の一部を指定してファイルを探すためのコマンド。
この際、ファイル名を専用のデータベースから検索するため、ディスクをスキャンしてファイルを探すfind
コマンドに比べて非常に高速に検索することができる。
locate [option] <検索パターン>
一方、locate
コマンドはインストール時に、ファイルパスのデータベースを1日1回作成するように設定されるので、たった今作成したばかりのファイルは、データベースに入っていないためlocate
コマンドで見つけることはできない。
このため、locate
コマンドは、システムにあらかじめインストールされているファイルや、何日か前に作ったままのファイルなど、作成してからしばらく経ったファイルを見つけるのに向いている。
locate コマンドのオプション
- -i 、—ignore-case:検索パターンで大文字小文字を区別しない
- -b、—basename:ファイル名だけを検索対象にする
- -A、—all:複数の検索パターンを指定して、それら全てのパターンに一致する(AND)検索をする
which
コマンドのフルパスを表示する
which [option] <コマンド名>
which
コマンドは指定されたコマンド名をサーチパスから探して、見つかった実行ファイルのフルパスを表示する。
# touch コマンドのフルパスをサーチパスから検索
% which touch
/usr/bin/touch
chmod
ファイルやディレクトリのパーミションを設定する
シンボルモード
書式でchmod
コマンドを実行する。
chmod [ugoa][+-=][rwx] <ファイル名>
- ユーザ設定
- u:オーナー
- g:グループ
- o:その他のユーザ
- a:ugo 全て(ユーザ設定を省略すると、aを設定したものとみなされる)
- 演算子
- +:権限を追加する
- -:権限を禁止する
- =:指定した権限と等しくする
% ls -l
total 8
...(省略)...
-rw-r--r-- 1 mino staff 0 5 13 20:12 writeme.md
# writeme.mdに対してグループの実行権限を追加
% chmod g+x writeme.md
% ls -l
total 8
...(省略)...
-rw-r-xr-- 1 mino staff 0 5 13 20:12 writeme.md
# writeme.mdに対してグループの実行権限を削除
% chmod g-x writeme.md
% ls -l
total 8
...(省略)...
-rw-r--r-- 1 mino staff 0 5 13 20:12 writeme.md
# グループ及びその他ユーザに対するパーミションを「書き込み」「実行」だけにする
% chmod go=wx writeme.md
% ls -l
total 8
...(省略)...
-rw--wx-wx 1 mino staff 0 5 13 20:12 writeme.md
数値モード
数値モードは元のパーミションに関わらず新しいパーミションの値へと変換する、絶対指定の方法。
chmod <8進数の数値> <ファイル名>
- パーミションの数値
- 読み取り(r):4
- 書き込み(w):2
- 実行(x):1
rwx
の数字を足した値を、「オーナー」「グループ」「その他のユーザ」の順に3つ並べて指定する。
例えば、「rwxrw-r-x」というパーミションは、数値に変換すると「765」となる。
% ls -l
total 8
...(省略)...
-rw--wx-wx 1 mino staff 0 5 13 20:12 writeme.md
# 「755(rwxr-xr-x)」とパーミション指定
% chmod 755 writeme.md
% ls -l
total 8
...(省略)...
-rwxr-xr-x 1 mino staff 0 5 13 20:12 writeme.md
su
一時的に別のユーザになるためのコマンド。実行すると、ログアウトせずに他のユーザに切り替わることができる。
su
コマンドは主にスーパーユーザに変わるために使う。
なお、オプションを付けないでユーザーを切り替えると、環境変数やカレントディレクトリなど現在の環境を維持したままユーザだけが切り替わるので、アプリケーションによってはうまく動作しないことがある。そのため通常は下の例のように、-(ハイフン)を付けてコマンドを実行する。
# スーバーユーザの環境に初期化して切り替える
su -
sudo
別のユーザとしてコマンドを実行するために利用する。ユーザを特に指定しない場合は、スーパユーザとしてコマンドを実行する。
sudo
コマンドは主に、一般ユーザでログインしている時に、スーパーユーザでないと実行できないコマンドを実行するために使用する。
sudo <実行したいコマンド>
sudo
はsu
と似ていますが、1つのコマンドだけをスーバーユーザ権限で実行するところが異なります。
また、su
コマンドにはスーバーユーザのパスワードが必要ですが、sudo
を使用する際には今ログインしたユーザのパスワードが必要な点が、sudo
とsu
の大きな違いです。
history
コマンドライン履歴を表示
% history
216 cd ..
217 ls -l
218 chmod g+x writeme.md
219 ls -l
220 chmod g-x writeme.md
...(省略)...
head
フィルタの先頭から指定した行数だけを標準出力に出力する(行数を指定しない場合は、最大10行を表示)
# コマンド履歴を10行だけ表示する
% history | head
218 chmod g+x writeme.md
219 ls -l
220 chmod g-x writeme.md
221 ls -l
222 chmod go=wx writeme.md
223 ls -l
224 chmod 755 writeme.md
225 ls -l
226 cd zenn
227 ps
wc
入力ファイルの行数・単語数・バイト数を順に表示する
% wc index.php
37 101 662 index.php
# 行 単語 バイト ファイル名
wc コマンドのオプション
-
-l
:行数だけ表示
% wc -l index.php
37 index.php
-
-w
:単語数だけ表示
% wc -w index.php
101 index.php
-
-c
:バイト数だけ表示
% wc -c index.php
662 index.php
sort
行単位でテキストをソートする(デフォルト:アルファベット順)
% cat sort.txt
Japan
USA
Korea
Australia
Spain
Germany
England
France
# sort.txt をアルファベット順にソート
% sort sort.txt
Australia
England
France
Germany
Japan
Korea
Spain
USA
sort コマンドのオプション
-
-n
:数値順にソート
% cat num.txt
7
8
23
11
76
52
1
4
9
99
87
# オプションなしでソート
% sort num.txt
1
11
23
4
52
7
76
8
87
9
99
# オプション付きでソート
% sort -n num.txt
1
4
7
8
9
11
23
52
76
87
99
-
-r
:逆順にソート
# 降順にソート
% sort -r sort.txt
USA
Spain
Korea
Japan
Germany
France
England
Australia
# 数値データが記録されたファイルなどを値の大きい順に並べ替える
% sort -nr num.txt
99
87
76
52
23
11
9
8
7
4
1
-
-u
:重複行を取り除く
% sort -u uniq.txt
England
France
Germany
Japan
uniq
重複行を取り除く。ただ、同じ内容の行が連続している場合にのみ重複を取り除く
% cat uniq.txt
Japan
Japan
Germany
France
France
France
England
Germany
% uniq uniq.txt
Japan
Germany
France
England
Germany # 重複が残っている
uniq コマンドのオプション
-
-c
:重複行を数える
% uniq -c uniq.txt
2 Japan
1 Germany
3 France
1 England
1 Germany
tr
文字を変換する
tr <置換前の文字> <置換後の文字>
% cat tr.txt
root/my/folder
cba
# 文字「/」を、文字「:」に置換する
% cat tr.txt| tr / :
root:my:folder
cba
# 複数の文字を置換する
# a を A、b を B、c を Cに
% cat tr.txt| tr abc ABC
root/my/folder
CBA
文字を削除する
tr -d <削除文字>
# 改行コード(\n)を取り除いて1行にする
% cat tr.txt| tr -d "\n"
root/my/foldercba%
tail
ファイルの末尾を表示する。オプションを指定しない場合は、末尾10行だけ表示する
% history | tail
258 sort -u uniq.txt
259 uniq -c uniq.txt
260 vi tr.txt
261 cat tr.txt
262 cat tr.txt| tr / :
263 vi tr.txt
264 cat tr.txt| tr / :
265 cat tr.txt| tr abc ABC
266 cat tr.txt| tr -d "\n"
267 tree
tail コマンドのオプション
-
-n
:表示する行数を指定
# 末尾1行のみを表示
% history | tail -n 1
268 history| tail
-
-f
:ファイルの内容が書き換えられると、その都度リアルタイムに表示され、ファイルへの追記を監視する
diff
2つのファイルの差分を表示する
diff [option] <比較元ファイル> <比較先ファイル>
diff
コマンドは設定コードやプログラムのソースコードなどに対して、編集前と編集後の変更内容を確認するために使われる
# 編集前
% cat before.php
<?php
$first = 10;
# 編集後
% cat before_up.php
<?php
$first = 10;
$add = 'add diff';
% diff before.php before_up.php
# 変更コマンド
# <変更範囲1><変更種別><変更範囲2>
# 「before.php」の3行目が「before_up.php 」の3行目に変更される
3c3
<
---
> $add = 'add diff';
変更コマンド
元ファイルからどの行をどのように変更するかを示している
- 変更種別
- <範囲1>a<範囲2>:1つ目のファイルの範囲1の後に、2つ目のファイルの範囲2の内容が追加された
- <範囲1>c<範囲2>:1つ目のファイルの範囲1の箇所が、2つ目のファイルの範囲2の内容に変更された
- <範囲1>d<範囲2>:1つ目のファイルの範囲1の箇所が削除された
grep
<ファイル名>から<検索パターン>に一致する行を出力する
この際、検索パターンが一致することを「マッチする」と言う
grep [option] <検索パターン> <ファイル名>
# 文字列「echo」を含む行を出力
% grep echo index.php
echo "tail";
grep コマンドのオプション
-
-n
:マッチした行の行番号を表示
% grep -n echo index.php
1:echo "tail";
-
-i
:大文字小文字を区別せずにマッチさせる
% grep -i echo index.php
echo "tail";
Echo "plus";
-
-v
:マッチしなかった行を表示
# 文字列「echo」を含まない行を出力
% grep -v echo index.php
Echo "plus";
tar
複数のファイルやディレクトリを1つのアーカイブファイルにまとめたり、逆にアーカイブファイルから元のファイルを取り出すために利用するコマンド
1. 練習用ファイルの準備
% touch test-{1..3}.txt
% ls
test-1.txt test-2.txt test-3.txt
2. アーカイブファイルの作成
# c (create):新しくアーカイブファイルを作成する
# f (file):ファイル
tar cf <アーカイブファイル> <アーカイブ元ファイルパス>
# ipad ディレクトリをアーカイブする
% tar cf ipad.tar ipad
3. アーカイブファイルの内容確認
# t (list):アーカイブファイルの中に含まれるファイル一覧が出力される
tar tf <アーカイブファイル>
% tar tf ipad.tar
ipad/
ipad/test-1.txt
ipad/test-3.txt
ipad/test-2.txt
4. アーカイブの展開
# x (extract):元のファイルやディレクトリを取り出す
tar xf <アーカイブファイル>
# 元のディレクトリを削除する
% rm -rf ipad
# アーカイブファイルを展開
% tar xf ipad.tar
# 確認
% ls ipad
test-1.txt test-2.txt test-3.txt
gzip
ファイルの圧縮・展開を行うためのコマンド
gzip <圧縮元ファイル>
# テスト用のファイルを作成:10キロバイト
% ls -l
total 24
-rw-r--r-- 1 mino staff 10100 5 23 21:36 text-1.txt
# 圧縮
% gzip text-1.txt
# 圧縮ファイル:7.5キロバイト
% ls -l
total 16
-rw-r--r-- 1 mino staff 7577 5 23 21:36 text-1.txt.gz
圧縮ファイルの展開
gzip -d <圧縮ファイル>
または
gunzip <圧縮ファイル>
% gzip -d text-1.txt.gz
% ls -l
total 24
-rw-r--r-- 1 mino staff 10100 5 23 21:36 text-1.txt
tar と gzip を組み合わせる
複数のファイルをまとめて1つのファイルに圧縮するには、tar
コマンドでまず1つのファイルにアーカイブして、そのアーカイブファイルをgzip
で圧縮する必要がある。
gzip
コマンドを使わなくても、tar コマンドだけで tar+gz ファイルを作ることができる。 tar
コマンドに z
オプジョンを指定することで tar+gz ファイルを作成・展開することができる。
# テスト用ディレクトリとファイルを作成する
% mkdir dir
% touch dir/text-{1..10}.txt
% ls dir
text-1.txt text-2.txt text-4.txt text-6.txt text-8.txt
text-10.txt text-3.txt text-5.txt text-7.txt text-9.txt
# tar コマンドで tar+gz 形式のファイルの作成
% tar czf dir.tar.gz dir
% ls -l
total 72
drwxr-xr-x 12 mino staff 384 5 23 21:58 dir
-rw-r--r-- 1 mino staff 225 5 23 22:00 dir.tar.gz
...(省略)...
# 元ファイルを削除
% rm -rf dir
# tar コマンドで tar+gz 形式のファイルを展開
% tar xzf dir.tar.gz
% ls -l
total 72
drwxr-xr-x 12 mino staff 384 5 23 21:58 dir
-rw-r--r-- 1 mino staff 225 5 23 22:00 dir.tar.gz
...(省略)...
Discussion